年化率,夏普率,最大回撤计算方法
已知本金100,在10天交易了6段,下面是6段交易的回报
rt = [10,12,15,18,-6,-9]
(某一天可能存在0交易,也就是该天的rt = 0, 也可能某段交易存在跨天的情况,则该段rt属于交易结束那天)
由于第一段交易和第二段交易都是在第一天结束的,所以第一天的rt = 10+ 12 = 22,。则10天的rt可以写为
rt = [22,15,18,-6,-9, 0,0,0,0,0]
由于后面几天都没有交易,所以后面几天的rt 都为0。
10内的pnl: sum(rt) = 22+ 15+ 18-6-9 = 40
年化率 = sum(rt)/本金/交易发生的时间*一年总时间 = 40/100/10*252=1008%
(数字货币一年总时间就是365)
计算sharpe的方法:
夏普率 = 年化率/std(rt)/ = 0.064
最大回撤率
def MaxDrawdown(rt):'''最大回撤率'''i = np.argmax((np.maximum.accumulate(rt) - rt)/np.maximum.accumulate(rt)) # 结束位置if i == 0:return 0j = np.argmax(rt[:i]) # 开始位置return (rt[j] - rt[i])/rt[j]
1. 先说一种错误的做法,若rt 表示的是现在钱包的总净值,则
先将6段交易rt = [10,12,15,18,-6,-9]转化成净利润 [10,22,37,55,49,40],再加上本金100元,rt为
[110, 122, 137, 155, 149, 140]
其中的最大回撤为(155-140)/155 = 0.097
python如下所示:
rt = np.cumsum(li)
rt = [x+100 for x in rt]
print(rt) #[110, 122, 137, 155, 149, 140]
print(MaxDrawdown(rt)) # 0.0967741935483871
这样子看上去没有问题,但实际是错误的,当rt = [18,-6,-9]时,和原rt的回撤应该是一致的,这没有争议。用上述方法转换一下,rt为
[118,112,103]
其中的最大回撤为 (118-103)/118 = 0.127
这与上述结果不一致。
2. 再来说一说正确的做法,rt表示的应该是每一段交易的净值。
rt = [x+100 for x in li]
print(rt) #[110, 112, 115, 118, 94, 91, 100, 100, 100, 100, 100]
print(MaxDrawdown(rt)) # 0.2288135593220339
这里换一种方法依旧可以算出正确的结果
def max(li):rt = [x/100+1 for x in li]pnl = pd.DataFrame({'rtt':rt})D = pnl['rtt'].cummax() - pnl['rtt']X = D/(D+pnl['rtt'])return X.max()print(max(li)) #0.2288135593220339
年化率,夏普率,最大回撤计算方法相关推荐
- 夏普比率和最大回撤计算方法
一.夏普比率的计算 夏普比例(TheSharpe ratio)=(预期收益率 - 无风险利率)/投资组合标准差,也叫报酬与波动性比率,可能是最常用的投资组合管理度量标准.它采用的方法是,组合中超过无风 ...
- Python量化投资——投资组合的评价和可视化(上):计算收益率、波动率、最大回撤、阿尔法alpha、贝塔beta、夏普率Sharp等指标【源码+详解】
投资组合的评价和可视化(上)--评价指标的计算 投资结果评价 本文示例数据下载 投资过程回顾 基于收益的投资组合评价 收益率.年化收益.每日收益率 月度历史收益率 基于风险度量的投资组合评价 Vola ...
- matlab最大回撤值,用matlab计算区间最大回撤值和最大回撤率
用matlab 计算区间最大回撤值和最大回撤率 在股票投资的时候有一个很重要的概念-最大回撤.最大回撤被定义为: min()min(max )j i j i i j j i j d x x x x & ...
- 最大回撤率MaxDawndown算法(Python3)
最大回撤率MaxDawndown 含义 最大回撤率:在选定周期内任一历史时点往后推,产品净值走到最低点时的收益率回撤幅度的最大值.最大回撤用来描述买入产品后可能出现的最糟糕的情况.最大回撤是一个重要的 ...
- 计算风险指标:最大回撤、计算风险收益指标:夏普比率、利用最大回撤和夏普比筛选基金、比较3只股票的夏普指数
接着上一次获取股票数据[实时更新股票数据.创建你的股票数据].计算交易指标[买入.卖出信号.计算持仓收益.计算累计收益率] - cexo - 博客园的量化交易往下学习. 计算风险指标:最大回撤 什么是 ...
- 【77 backtrader的一些高级技巧】如何使用backtrader更好的计算夏普率?
今天除了写了一个可转债的策略之外,一直在探索分析夏普率的计算方式,在阅读到backtrader的源代码的时候,忽然对如何使用backtrader计算夏普率有了更深刻的认识. 在常见的教程中,计算夏普率 ...
- 多变的夏普率(一)(2022-03-18更新)
从2016年开始,接触了TB.文华财经之后,发现好多平台的夏普率计算结果不同.这次希望做一个总结,让自己完完全全搞明白夏普率是怎么计算的.教科书上的夏普率的计算方式很简单.年化的超额收益率/年化的标准 ...
- python量化交易策略实例_Python进阶量化交易场外篇3——最大回撤评价策略风险...
新年伊始,很荣幸笔者的<教你用 Python 进阶量化交易>专栏在慕课专栏板块上线了,欢迎大家订阅!为了能够提供给大家更轻松的学习过程,笔者在专栏内容之外会陆续推出一些手记来辅助同学们学习 ...
- python计算最大回撤_Python进阶量化交易场外篇3——最大回撤评价策略风险
新年伊始,很荣幸笔者的<教你用 Python 进阶量化交易>专栏在慕课专栏板块上线了,欢迎大家订阅!为了能够提供给大家更轻松的学习过程,笔者在专栏内容之外会陆续推出一些手记来辅助同学们学习 ...
最新文章
- Mybatis复习笔记3:映射文件详解
- Hinton临时拒绝所有邀约发推致歉,称突然发现最新想法有致命缺陷
- VIO在走廊弱纹理环境下的优化——VINS-Mono的点线紧耦合优化
- flask 学习笔记 mvc ,sqlalchemy(insert,update)
- IE6/7和IE8/9(怪异模式)浮动元素折行Bug
- Web Api无法访问 404
- sql表格模型获取记录内容_SQL Server和BI –如何使用Excel记录表格模型
- 创建二叉排序树,二叉树的六种遍历
- 代码大全旁边的一本书--感受《UNIX编程艺术》
- 谁分配谁释放HEAP
- 华为认证hcia含金量_华为hcna认证用处大吗 什么是hcna
- emu8086 寻址方式
- arcgis栅格数据绘制等值线_ArcGIS教程:绘制等值线的工作原理
- DVWA-low通关
- SQLServer集群故障节点DISCONNECTED
- 2023 《电脑PC游戏》 红警3:起义时刻
- 为什么你的蓝牙耳机总是出毛病,不好好反思一下这些问题吗?
- 幽默感七个技巧_培养幽默感的16种方法
- python数据分析岗位_数据分析岗位招聘情况
- 牛客-紫魔法师(仙人掌染色-判奇环)