AI量化实验室

 找回密码
 免费注册
查看: 386|回复: 0

复合年化收益率:backtrader,quantstats,pyfolio,empyrical为何结果...

[复制链接]

86

主题

183

帖子

958

积分

管理员

积分
958
发表于 2024-8-23 14:11:12 | 显示全部楼层 |阅读模式
给定一个日收益率序列,如何计算复合年化收益率?
如果你用backtrader (使用Returns分析者统计),quantstats(cagr函数), empyrical(annual_return函数),pyfolio分别统计同一个收益率序列的年化收益率,会发现quantstats统计的和其它几个不一样(backtrader,empyrical,pyfolio是一样的,pyfolio底层采用的也是empyrical的),为啥会这样呢?其实他们都没有错。
复合年化收益率理论公式是这样的:
CAGR =([(Ending Value / Beginning Value) ^ (1 / number of years)] - 1)
之所以有不同结果,是因为其中的年数number of years各家计算方式不一样。
假设收益率系列如下:

quantstats是这样计算年数的,它用最后日期2016-10-21减去起始日期2016-8-24,得到期间有几个“自然日”,这里是58天,然后除以365,得到年数是0.1589年。
而其它库计算年数是这样的:统计交易日数,这里是22天,然后除以一年252个“工作日“数,得到年数为0.8730年。
正是年数计算方法不一致,导致quantstats的年化收益率与其它库的不一样,有时差异极大,可能差异高达几倍。

您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

AI量化实验室 ( 京ICP备16049031号-2 )

GMT+8, 2024-11-24 02:27 , Processed in 0.061574 second(s), 18 queries .

Powered by Discuz! X3.5

Copyright © 2001-2024 Tencent Cloud.

快速回复 返回顶部 返回列表