【量化金融】收益率、对数收益率、年华收益、波动率、夏普比率、索提诺比率、阿尔法和贝塔、最大回撤
【量化金融】收益率、对数收益率、年华收益、波动率、夏普比率、索提诺比率、阿尔法和贝塔、最大回撤
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…...

UE5 学习系列(二)用户操作界面及介绍
这篇博客是 UE5 学习系列博客的第二篇,在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下: 【Note】:如果你已经完成安装等操作,可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作,重…...
逻辑回归:给不确定性划界的分类大师
想象你是一名医生。面对患者的检查报告(肿瘤大小、血液指标),你需要做出一个**决定性判断**:恶性还是良性?这种“非黑即白”的抉择,正是**逻辑回归(Logistic Regression)** 的战场&a…...

Day131 | 灵神 | 回溯算法 | 子集型 子集
Day131 | 灵神 | 回溯算法 | 子集型 子集 78.子集 78. 子集 - 力扣(LeetCode) 思路: 笔者写过很多次这道题了,不想写题解了,大家看灵神讲解吧 回溯算法套路①子集型回溯【基础算法精讲 14】_哔哩哔哩_bilibili 完…...

什么是Ansible Jinja2
理解 Ansible Jinja2 模板 Ansible 是一款功能强大的开源自动化工具,可让您无缝地管理和配置系统。Ansible 的一大亮点是它使用 Jinja2 模板,允许您根据变量数据动态生成文件、配置设置和脚本。本文将向您介绍 Ansible 中的 Jinja2 模板,并通…...
NPOI操作EXCEL文件 ——CAD C# 二次开发
缺点:dll.版本容易加载错误。CAD加载插件时,没有加载所有类库。插件运行过程中用到某个类库,会从CAD的安装目录找,找不到就报错了。 【方案2】让CAD在加载过程中把类库加载到内存 【方案3】是发现缺少了哪个库,就用插件程序加载进…...

【Linux系统】Linux环境变量:系统配置的隐形指挥官
。# Linux系列 文章目录 前言一、环境变量的概念二、常见的环境变量三、环境变量特点及其相关指令3.1 环境变量的全局性3.2、环境变量的生命周期 四、环境变量的组织方式五、C语言对环境变量的操作5.1 设置环境变量:setenv5.2 删除环境变量:unsetenv5.3 遍历所有环境…...
DiscuzX3.5发帖json api
参考文章:PHP实现独立Discuz站外发帖(直连操作数据库)_discuz 发帖api-CSDN博客 简单改造了一下,适配我自己的需求 有一个站点存在多个采集站,我想通过主站拿标题,采集站拿内容 使用到的sql如下 CREATE TABLE pre_forum_post_…...

对象回调初步研究
_OBJECT_TYPE结构分析 在介绍什么是对象回调前,首先要熟悉下结构 以我们上篇线程回调介绍过的导出的PsProcessType 结构为例,用_OBJECT_TYPE这个结构来解析它,0x80处就是今天要介绍的回调链表,但是先不着急,先把目光…...
算法250609 高精度
加法 #include<stdio.h> #include<iostream> #include<string.h> #include<math.h> #include<algorithm> using namespace std; char input1[205]; char input2[205]; int main(){while(scanf("%s%s",input1,input2)!EOF){int a[205]…...

欢乐熊大话蓝牙知识17:多连接 BLE 怎么设计服务不会乱?分层思维来救场!
多连接 BLE 怎么设计服务不会乱?分层思维来救场! 作者按: 你是不是也遇到过 BLE 多连接时,调试现场像网吧“掉线风暴”? 温度传感器连上了,心率带丢了;一边 OTA 更新,一边通知卡壳。…...