【量化金融】收益率、对数收益率、年华收益、波动率、夏普比率、索提诺比率、阿尔法和贝塔、最大回撤
【量化金融】收益率、对数收益率、年华收益、波动率、夏普比率、索提诺比率、阿尔法和贝塔、最大回撤
1 收益率
在学术界,建模一般不直接使用资产价格,而是使用资产收益率(Returns)。因为收益率比价格具有更好的统计特性,更便于建模。下经典的收益率算法如下:
假设PtP_tPt表示在时刻t时一种资产的价格,在没有利息的情况下,从时刻t-1到时刻t这一持有阶段的收益率为:
Rt=Pt−Pt−1Pt−1R_t = \frac{P_t-P_{t-1}}{P_{t-1}} Rt=Pt−1Pt−Pt−1
其中,分子Pt−Pt−1P_t-P_{t-1}Pt−Pt−1表示资产在持有期内的收人或利润,如果该值为负,则表示亏损。分母 Pt−1P_{t-1}Pt−1,表示持有资产初期的原始投资。
2 对数收益率
对数收益率(Log returas),用rtr_trt表示。定义如下:
rt=ln(1+Rt)=ln(PtPt−1)r_t =ln(1+R_t) = ln(\frac{P_t}{P_{t-1}}) rt=ln(1+Rt)=ln(Pt−1Pt)
其中lnx() 表示自然对数,即以e为底的对数。对数收益率比简单的收益率更为常见,因为对数收益率具有三个良好的数学性质,具体如下。
(1)当x比较小的时候(比如小于 10%时),In(x)和x的值是很接近的。
(2)使用对数收益率,可以简化多阶段收益。k阶段总的对数收益就是k阶段的对数收益之和。
(3)将对数收益绘制成图表,在直观上更接近真实的表现。比如股票价格从 1元涨到 10元,相当于翻了10倍,再从10元涨到100元,也是翻了 10倍。如果单纯绘制股票价格,那么从 10元涨到 100 元的这一段明显会 “看起来涨了更多”。但是如果换算成对数价格,那么就不会存在这种直观偏差了。
3 年化收益
年化收益 (Annualized Returns) 表示资产平均每年能有多少收益。我们在对比资产的收益的时候,需要有一个统一的标准。计算方式是:
(最终价值/初始价值一1)/交易日数量×252(最终价值/ 初始价值一1)/ 交易日数量 ×252 (最终价值/初始价值一1)/交易日数量×252
其中,252代表每年有252个交易日,这个数字每年都不一样,但业界为了方便,一般都将其固定为 252,即:
(Pt−Pt−1)/days×252(P_t-P_{t-1})/days × 252 (Pt−Pt−1)/days×252
年年化收益的一个直观的理解是,假设按照某种盈利能力,换算成一年的收益大概能有多少。这个概念常常会存在误导性,比如,这个月股票嫌了 5%,在随机波动的市场中,这是很正常的现象。如果据此号称年化收益为 5%×12个月=60%,这就显得不太可信了,实
际上每个月的收益不可能都这么稳定。所以在听到有人说年化收益的时候,需要特别留意一下具体的情况,否则很容易被误导。
4 波动率
波动率(Volatility)和风险,可以算是一对同义词,都是用来衡量收益率的不确定性的。波动率可以定义为收益率的标准差,即
σ=Std(r)\sigma = Std(r) σ=Std(r)
假设不同时间段的收益率没有相关性(称为没有自相关性),那么可以证明的是,收益率的方差 Var(r)具有时间累加性。时间累加性的意思是,不同时间段t1,t2,…,tn的方差,加总即可得到这段时间的方差。换向话说,随着时间的增加,方差将会成正比增加,波动率(标准差)将会按时间开根号的比例增加。举个例子,假设股票收益率的日波动率为σ\sigmaσ。那么股票每年的波动率就为252σ\sqrt{252\sigma}252σ
(假设一年有252个交易日)。这种不同周期间的波动率换算,在投资计算中非常常见。最常用的波动率是年化波动率,我们经常需要将日波动率、月波动率换算成年化波动率。
5 夏普比率
在研发策略的时候,经常会接触到各种各样的指标,这些指标代表了策略(资产、基金)的表现,比如下面将要介绍的夏普比率 (Sharpe Ratio)。关于夏普比率( Sharpe ratio),具有投资常识的人都明白,投资光看收益是不够的,还要看承受的风险,也就是收益风险比。夏普比率描述的正是这个概念,即每承受一单位的总风险,会产生多少超额的报酬。用数学公式描述就是:
SharpeRatio=E(Rp)−RfσpSharpeRatio =\frac{E(R_p)-R_f}{\sigma_p} SharpeRatio=σpE(Rp)−Rf
其中各参数说明如下。
E(Rp)E(R_p)E(Rp):表示投资组合预期收益率。
RfR_fRf:表示无风险利率
σp\sigma_pσp:表示投资组合的波动率(亦即投资组合的风险)。
上面三个值一般是指年化后的值,比如预期收益率是指预期年化收益率。需要注意的是,虽然公式看起来很简单,但是计算起来其实并不容易。原因就是预期收益率E®和波动率,其实是无法准确得知的。我们只能用统计方法来估计这两个值,然而估计方法也有很多种。估计E(Rp)E(R_p)E(Rp)和σp\sigma_pσp,最简单的方法就是计算历史年化收益率及其标准差。然而,即使是同一种方法,针对不同周期计算出来的结果也可能存在很大的差别,从而产生误导。
6 索提诺比率
素提诺比率与夏普比率相似,不一样的是,索提诺比率是使用下行风险来衡量波动率的。在夏普比率中,资产大涨与资产大跌都可视为波动风险。实际上,有时候大洪并不算风险,大跌才是风险,比如基金净值,所以索提诺比率只考虑大跌的风险,这也可以看作是对夏普比率的一种修正方式。但是在某些品种中,大涨大跌都可能是风险,比如可以做多做空的期货。美股也可以做多或者做空,这种情况下,涨或跌都是风险。索提诺比率之所以没有流行,大概是因为美股可以做空。
7 埃尔法和贝塔
阿尔法策略其实是来源于资本资产定价模型(CAPM)。这个模型将股票的收益分为了两个部分,一部分是由大盘涨跌带来的,另一部分则是由股票自身的特性带来的。大盘的那部分影响就是贝塔(Beta)值,剔除大盘的影响,剩下的股票自身就是 Alpha 值。所以在谈论 Alpha 策略的时候,其实就是在谈论股票与大盘无关的那部分收益。如果Alpha 策略做得好,对冲掉大盘风险后,可以取得相当稳定的收益。
8 最大回撤
顾名思义,是指投资一项资产,可能产生的最大亏损,即所谓的“买在最高点,抛在最低点”
计算公式如下:
max(1−当日净值/当日之前最高净值)max (1-当日净值/ 当日之前最高净值) max(1−当日净值/当日之前最高净值)
这个 max 需要对每个交易日进行循环。
9 参考
参考书籍《Python量化投资技术、模型与策略》赵志强 刘志伟
相关文章:
【量化金融】收益率、对数收益率、年华收益、波动率、夏普比率、索提诺比率、阿尔法和贝塔、最大回撤
【量化金融】收益率、对数收益率、年华收益、波动率、夏普比率、索提诺比率、阿尔法和贝塔、最大回撤 1 收益率 在学术界,建模一般不直接使用资产价格,而是使用资产收益率(Returns)。因为收益率比价格具有更好的统计特性,更便于建模。下经典…...
1_机器学习概述—全流程
文章目录1 机器学习定义2 机器学习常见应用框架(重点)3 机器学习分类3.1 监督学习(Supervised learning)3.2 无监督学习(Unsupervised learning)3.3 半监督学习(Semi-Supervised Learning&#…...
VUE中给对象添加新属性时,界面不刷新怎么办
一、直接添加属性的问题 举例: 定义一个p标签,通过v-for指令进行遍历 然后给botton标签绑定点击事件,我们预期点击按钮时,数据新增一个属性,界面也 新增一行。 <p v-for"(value,key) in item" :key&qu…...
视频号频出10w+,近期爆红的账号有哪些?
回顾2月,视频号持续放出大动作,不仅进行了16小时不间断的NBA全明星直播,还邀请国际奥委会入驻,分享奥运的最新资讯。视频号成为越来越多官方机构宣传推广的有效渠道。官方积极入驻,内容创作生态也在同步繁荣发展&#…...
企业寄件现代化管理教程
现代化企业为了跟上时代发展的步伐,在不断完善着管理制度,其中公司寄件管理,也是重要的一个模块。为了提高公司快递的寄件效率,以及节约寄件成本,实现快递寄件的规范化,越来越多的现代化企业,开…...
django 在网页显示后台进度
1、定义函数打开网页 def PeformanceIndex(request): citys{‘wuhu’: ‘芜湖’, ‘xuancheng’: ‘宣城’, ‘tongling’: ‘铜陵’, ‘suzhou’: ‘宿州’, ‘maanshan’: ‘马鞍山’, ‘liuan’: ‘六安’, ‘huainan’: ‘淮南’, ‘huabei’: ‘淮北’, ‘hefei’: ‘合肥…...
机器学习库(Numpy, Scikit-learn)
Numpy 创建数组 import numpy as npa np.array([1,2,3]) b np.array([(1.5,2,3), (4,5,6)], dtype float) c np.array([[(1.5,2,3), (4,5,6)], [(3,2,1), (4,5,6)]],dtype float)创建占位符 z1np.zeros((3,4)) z2np.ones((2,3,4),dtypenp.int16) z3d np.arange(10,25,5)…...
Linux操作系统学习(进程替换)
文章目录进程替换进程替换是什么?替换的方法进程替换简易shell模拟进程替换 进程替换是什么? 如下图所示: 进程替换就是,把进程B的代码和数据,替换正在执行的进程A的代码和数据在内存中的位置(若代码…...
【C++从入门到放弃】类和对象(中)———类的六大默认成员函数
🧑💻作者: 情话0.0 📝专栏:《C从入门到放弃》 👦个人简介:一名双非编程菜鸟,在这里分享自己的编程学习笔记,欢迎大家的指正与点赞,谢谢! 类和对…...
白盒测试重点复习内容
白盒测试白盒测试之逻辑覆盖法逻辑覆盖用例设计方法1.语句覆盖2.判定覆盖(分支覆盖)3.条件覆盖4.判定条件覆盖5.条件组合覆盖6.路径覆盖白盒测试之基本路径测试法基本路径测试方法的步骤1.根据程序流程图画控制流图2.计算圈复杂度3.导出测试用例4.准备测试用例5.例题白盒测试总…...
【13】linux命令每日分享——groupadd建立组
大家好,这里是sdust-vrlab,Linux是一种免费使用和自由传播的类UNIX操作系统,Linux的基本思想有两点:一切都是文件;每个文件都有确定的用途;linux涉及到IT行业的方方面面,在我们日常的学习中&…...
《第一行代码》 第十章:服务
一,在子线程中更新UI 1,新建项目,修改布局代码 <RelativeLayout xmlns:android"http://schemas.android.com/apk/res/android"android:layout_width"match_parent"android:layout_height"match_parent"&g…...
简单介绍编程进制
十进制 十进制的位权为 10,比如十进制的 123,123 1 * 10 ^ 2 2 * 10 ^ 1 3 * 10 ^ 0。 二进制 二进制的位权为 2,比如十进制的 4,二进制为 100,4 1 * 2 ^ 2 0 * 2 ^ 1 0 *2 ^ 0。 Java7 之前,不支…...
windows忘记开机密码怎么办
windows忘记开机密码怎么办 清除windows登录密码 清除windows登录密码简单方法 开机到欢迎界面时,按CtrlAltDelete两次,跳出帐号窗口,输入用户名:administrator,回车, 或者启动时按F8 选“带命令行的安全…...
SpringCloud:Eureka
目录 一、eureka的作用 二、搭建Eureka服务端 三、添加客户端 四、服务发现 提供者与消费者 服务提供者:一次业务中,被其它微服务调用的服务。(提供接口给其它微服务) 服务消费者:一次业务中,调用其它微服务的服…...
如何获取或设置CANoe以太网网卡信息(SET篇)
CAPL提供了一系列函数用来操作CANoe网卡。但是,但是,首先需要明确一点,不管是获取网卡信息,还是设置网卡信息,只能访问CAPL程序所在的节点下的网卡,而不是节点所在的以太网通道下的所有网卡 关于第一张图中,Class节点下,有三个网卡:Ethernet1、VLAN 1.100、VLAN 1.200…...
【软件测试面试题】项目经验?资深测试 (分析+回答) 我不信你还拿不到offer......
目录:导读前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜)前言 在面试过程中&#…...
tensorflow lite简介-移动设备端机器学习
TensorFlow Lite 是一组工具,可帮助开发者在移动设备、嵌入式设备和 loT 设备上运行模型,以便实现设备端机器学习。 支持多平台 支持多种平台,涵盖 Android 和 iOS 设备、嵌入式 Linux 和微控制器。 原理/流程 工作原理或者使用流程就是上面…...
Node.js常用知识
1、什么是 Node.js 【】Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境。浏览器是 js 的前端运行环境,node.js 是 js 的后端运行环境。他们都有 V8 引擎,有各自的内置 API 2、fs 文件系统模块 【】fs 模块是 Node.js 官方提供的、用来操作文件…...
踩坑:maven打包失败的解决方式总结
Maven打包失败原因总结如下: 失败原因1:无法使用spring-boot-maven-plugin插件 使用spring-boot-maven-plugin插件可以创建一个可执行的JAR应用程序,前提是应用程序的parent为spring-boot-starter-parent。 需要添加parent的包spring-boot…...
【C++】位图
文章目录位图概念位图操作位图代码位图应用位图概念 boss直接登场: 给40亿个不重复的无符号整数,没排过序。给一个无符号整数,如何快速判断一个数是否在这40亿个数中❓ 40亿个整数,大概就是16GB。40亿个字节大概就是4GB。 1Byt…...
蓝桥杯-考勤刷卡
蓝桥杯-考勤刷卡1、问题描述2、解题思路3、代码实现1、问题描述 小蓝负责一个公司的考勤系统, 他每天都需要根据员工刷卡的情况来确定 每个员工是否到岗。 当员工刷卡时, 会在后台留下一条记录, 包括刷卡的时间和员工编号, 只 要在一天中员工刷过一次卡, 就认为他到岗了。 现在…...
如何利用站内推广和站外推广提高转化率?
在如今的网络时代,拥有一个好的网站是非常重要的。但是,光有一个好的网站是不够的,为了达到我们的目标,需要不断地提高网站的转化率。而在实现这个目标的过程中,站内推广和站外推广是两个非常关键的因素。 站内推广是…...
Java多线程(三)——线程池及定时器
线程池就是一个可以复用线程的技术。前面三种多线程方法就是在用户发起一个线程请求就创建一个新线程来处理,下次新任务来了又要创建新线程,而创建新线程的开销是很大的,这样会严重影响系统的性能。线程池就相当于预先创建好几个线程…...
Linux命令行安装Oracle19c教程和踩坑经验
安装 下载 从 Oracle官方下载地址 需要的版本,本次安装是在Linux上使用yum安装,因此下载的是RPM。另外,需要说明的是,Oracle加了锁的下载需要登录用户才能安装,而用户是可以免费注册的,这里不做过多说明。 …...
Linux常用命令等
目录 1.Linux常用命令 (1)系统命令 (2)文件操作命令 2.vim编辑器 3.linux系统中,软件安装 (1) rpm 安装,RedHat Package Manager (2)yum 安装 (3)源代码编译安装 1.Linux常用命令 Linux命令是非常多的,对于像嵌入式开发工程师,运维工程师需要掌握的命令是非常多的.对于…...
CEC2014:鱼鹰优化算法(Osprey optimization algorithm,OOA)求解CEC2014(提供MATLAB代码
一、鱼鹰优化算法简介 鱼鹰优化算法(Osprey optimization algorithm,OOA)由Mohammad Dehghani 和 Pavel Trojovsk于2023年提出,其模拟鱼鹰的捕食行为。 鱼鹰是鹰形目、鹗科、鹗属的仅有的一种中型猛禽。雌雄相似。体长51-64厘米…...
MyBatis底层原理【源码运行时序图】
MyBatis初始化流程🛷 以下代码为例🎉 🎇可对应源码阅读 MyBatis初始化流程✨ #mermaid-svg-yoG1e8Dnp3UIAOUW {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-yoG1e8Dnp3UIAOU…...
k8s 系列之 CoreDNS 解读
k8s 系列之 CoreDNS CoreDNS工作原理 kuberntes 中的 pod 基于 service 域名解析后,再负载均衡分发到 service 后端的各个 pod 服务中,如果没有 DNS 解析,则无法查到各个服务对应的 service 服务 在 Kubernetes 中,服务发现有几…...
从测试鸡蛋硬度到跳表的设计
我回忆起六七年前的一道题鸡蛋掉落问题,有幸在leetCode上找到题目了 原题是2枚鸡蛋 leetCode有拓展,k枚鸡蛋 具体的思路是这样的。 以2枚鸡蛋验证100层为例 不能直接二分查找,因为你在50层测试时,如果直接鸡蛋碎了,那…...
wordpress 相册调用/最优化方法
<Context path"/test" docBase"D:\workspacemyeclipse6.5\ttt\WebRoot"></Context></Host>...
wordpress去掉google字体/武汉seo创造者
同学毕业设计做了一个Online Judge,应该是河海第一个自主的OJ雏形了,放在github上,我也凑了个热闹。 久闻git大名,一直没用过,昨天捣鼓了一下,几个比较不错的资料如下: 关于git: http://prog…...
织梦云建站系统/建网站需要哪些步骤
我发现我在工作中有一个毛病,只要工作一来就是一堆的时候,我就感觉这么多,怎么安排捏?有点不知所措!然后手头上的工作就停下来了,就觉得好忙好忙,然后就好乱好乱,后来一想不着急我后…...
搭设企业网站教程/东莞哪种网站推广好
让我们来尝试一次深度匹配,在我们的模式匹配中检查对象的内容。//code-examples/Rounding/match-deep-script.scalacase class Person(name: String, age:Int) val alice new Person("Alice",25) val bob new Person("Bob",32) val charli…...
广东知名网站/网站流量分析报告
我写了一个bash脚本,它在指定的文件夹中找到CSV文件,并使用正确的配置文件将它们管道到logstash中.但是,当运行此脚本时,我遇到以下错误,说关闭进程停止,导致无限循环,直到我用ctrl c手动停止它:[2018-03-22T08:59:53,833][INFO ][logstash.runner ] Starting Logst…...
池州哪家做网站/北京培训seo哪个好
在通过java连接cassandra时,其中com.datastax.driver.core是通过maven加入的,通过Idea运行时是正常的,在导出jar时如果不是将所有的jar打包成一个jar时也是正常的,但是如果将所有的第三方打包成jar,则会出现如下错误&a…...