可变性加权回报VWR – backtrader中文教程
根据一些关于改进SharpeRatio 的提示,backtrader已将此分析器添加到其武器库中。
文献位于:
从对数回报的好处开始,然后在 SharpeRatio 方程的分母中具有标准偏差的副作用,该文档开发了该分析器的公式和期望。
最重要的属性之一可能是:
- 跨时间框架的一致价值
使用SharpeRatio
超额收益与无风险利率/资产的算术平均值除以超额收益与无风险利率/资产的标准差。这使得最终值取决于样本数量和标准偏差,甚至可能是0
. 在这种情况下,SharpeRatio
将是无限的。
backtrader包括一个样本,用于SharpeRatio
使用样本数据进行测试,其中包括2005
和的价格2006
。不同时间范围的返回值:
TimeFrame.Years
:11.6473
TimeFrame.Months
:0.5425
TimeFrame.Weeks
:0.457
TimeFrame.Days
:0.4274
为保持一致性,该比率按年计算。sharpe-timereturn
示例并执行:
--annualize --timeframe xxx
其中xxx
代表days
, weeks
,months
或years
(默认)
在此示例中,有一些明确的内容:
- 时间范围越小,价值越小
SharpeRatio
这是由较小的 时间范围内较大的样本数量引起的,并增加了可变性,因此增加了标准偏差,这是SharpeRatio
等式中的分母。
对标准差的变化有很大的敏感性
这正是他们VWR
试图通过跨时间框架提供一致的价值来解决的问题。相同的策略提供以下值:
TimeFrame.Years
:1.5368
TimeFrame.Months
:1.5163
TimeFrame.Weeks
:1.5383
TimeFrame.Days
:1.5221
VWR
总是以年化形式返回(根据文献)。该示例使用以下命令执行:
--timeframe xxx
其中xxx
代表days
, weeks
,months
或years
默认值是None
使用数据的基础时间范围,即days
一致的值表明可以在任何时间范围内评估策略在提供一致回报方面的表现。
tann
从理论上讲,这些值应该是相同的,但这需要将参数(年化周期数)微调到确切的交易周期。这里没有这样做,因为目的只是看一致性。结论
用户可以使用一种新工具,该工具提供独立于时间框架的策略评估方法
示例使用
$ ./vwr.py --help usage: vwr.py [-h] [--data DATA] [--cash CASH] [--fromdate FROMDATE] [--todate TODATE] [--writercsv] [--tframe {weeks,months,days,years}] [--sigma-max SIGMA_MAX] [--tau TAU] [--tann TANN] [--stddev-sample] [--plot [kwargs]] TimeReturns and VWR optional arguments: -h, --help show this help message and exit --data DATA, -d DATA data to add to the system (default: ../../datas/2005-2006-day-001.txt) --cash CASH Starting Cash (default: None) --fromdate FROMDATE, -f FROMDATE Starting date in YYYY-MM-DD format (default: None) --todate TODATE, -t TODATE Starting date in YYYY-MM-DD format (default: None) --writercsv, -wcsv Tell the writer to produce a csv stream (default: False) --tframe {weeks,months,days,years}, --timeframe {weeks,months,days,years} TimeFrame for the Returns/Sharpe calculations (default: None) --sigma-max SIGMA_MAX VWR Sigma Max (default: None) --tau TAU VWR tau factor (default: None) --tann TANN Annualization factor (default: None) --stddev-sample Consider Bessels correction for stddeviation (default: False) --plot [kwargs], -p [kwargs] Plot the read data applying any kwargs passed For example: --plot style="candle" (to plot candles) (default: None)