已知本金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

年化率,夏普率,最大回撤计算方法相关推荐

  1. 夏普比率和最大回撤计算方法

    一.夏普比率的计算 夏普比例(TheSharpe ratio)=(预期收益率 - 无风险利率)/投资组合标准差,也叫报酬与波动性比率,可能是最常用的投资组合管理度量标准.它采用的方法是,组合中超过无风 ...

  2. Python量化投资——投资组合的评价和可视化(上):计算收益率、波动率、最大回撤、阿尔法alpha、贝塔beta、夏普率Sharp等指标【源码+详解】

    投资组合的评价和可视化(上)--评价指标的计算 投资结果评价 本文示例数据下载 投资过程回顾 基于收益的投资组合评价 收益率.年化收益.每日收益率 月度历史收益率 基于风险度量的投资组合评价 Vola ...

  3. matlab最大回撤值,用matlab计算区间最大回撤值和最大回撤率

    用matlab 计算区间最大回撤值和最大回撤率 在股票投资的时候有一个很重要的概念-最大回撤.最大回撤被定义为: min()min(max )j i j i i j j i j d x x x x & ...

  4. 最大回撤率MaxDawndown算法(Python3)

    最大回撤率MaxDawndown 含义 最大回撤率:在选定周期内任一历史时点往后推,产品净值走到最低点时的收益率回撤幅度的最大值.最大回撤用来描述买入产品后可能出现的最糟糕的情况.最大回撤是一个重要的 ...

  5. 计算风险指标:最大回撤、计算风险收益指标:夏普比率、利用最大回撤和夏普比筛选基金、比较3只股票的夏普指数

    接着上一次获取股票数据[实时更新股票数据.创建你的股票数据].计算交易指标[买入.卖出信号.计算持仓收益.计算累计收益率] - cexo - 博客园的量化交易往下学习. 计算风险指标:最大回撤 什么是 ...

  6. 【77 backtrader的一些高级技巧】如何使用backtrader更好的计算夏普率?

    今天除了写了一个可转债的策略之外,一直在探索分析夏普率的计算方式,在阅读到backtrader的源代码的时候,忽然对如何使用backtrader计算夏普率有了更深刻的认识. 在常见的教程中,计算夏普率 ...

  7. 多变的夏普率(一)(2022-03-18更新)

    从2016年开始,接触了TB.文华财经之后,发现好多平台的夏普率计算结果不同.这次希望做一个总结,让自己完完全全搞明白夏普率是怎么计算的.教科书上的夏普率的计算方式很简单.年化的超额收益率/年化的标准 ...

  8. python量化交易策略实例_Python进阶量化交易场外篇3——最大回撤评价策略风险...

    新年伊始,很荣幸笔者的<教你用 Python 进阶量化交易>专栏在慕课专栏板块上线了,欢迎大家订阅!为了能够提供给大家更轻松的学习过程,笔者在专栏内容之外会陆续推出一些手记来辅助同学们学习 ...

  9. python计算最大回撤_Python进阶量化交易场外篇3——最大回撤评价策略风险

    新年伊始,很荣幸笔者的<教你用 Python 进阶量化交易>专栏在慕课专栏板块上线了,欢迎大家订阅!为了能够提供给大家更轻松的学习过程,笔者在专栏内容之外会陆续推出一些手记来辅助同学们学习 ...

最新文章

  1. Mybatis复习笔记3:映射文件详解
  2. Hinton临时拒绝所有邀约发推致歉,称突然发现最新想法有致命缺陷
  3. VIO在走廊弱纹理环境下的优化——VINS-Mono的点线紧耦合优化
  4. flask 学习笔记 mvc ,sqlalchemy(insert,update)
  5. IE6/7和IE8/9(怪异模式)浮动元素折行Bug
  6. Web Api无法访问 404
  7. sql表格模型获取记录内容_SQL Server和BI –如何使用Excel记录表格模型
  8. 创建二叉排序树,二叉树的六种遍历
  9. 代码大全旁边的一本书--感受《UNIX编程艺术》
  10. 谁分配谁释放HEAP
  11. 华为认证hcia含金量_华为hcna认证用处大吗 什么是hcna
  12. emu8086 寻址方式
  13. arcgis栅格数据绘制等值线_ArcGIS教程:绘制等值线的工作原理
  14. DVWA-low通关
  15. SQLServer集群故障节点DISCONNECTED
  16. 2023 《电脑PC游戏》 红警3:起义时刻
  17. 为什么你的蓝牙耳机总是出毛病,不好好反思一下这些问题吗?
  18. 幽默感七个技巧_培养幽默感的16种方法
  19. python数据分析岗位_数据分析岗位招聘情况
  20. 牛客-紫魔法师(仙人掌染色-判奇环)

热门文章

  1. 综述:城市道路自动驾驶车辆规划与控制技术
  2. 本地Vue代理HTTPS接口
  3. 文案把卖点被埋没?如此挖掘电商产品卖点,让你轻松获客
  4. mysql取时间最近的记录_MySQL获取距离当前日期最近的记录
  5. 使用CSS切换不同背景的字体颜色
  6. 安全巡检脚本(分模块)
  7. AI与大数据结合,有效提高预测,构建更好的内容营销
  8. 自动驾驶技术基础——千寻定位
  9. Excel如何根据数字引用单元格,并返回单元格的值
  10. open image v5 标注类别对应