根据一些关于改进SharpeRatio 的提示,backtrader已将此分析器添加到其武器库中。

文献位于:

从对数回报的好处开始,然后在 SharpeRatio 方程的分母中具有标准偏差的副作用,该文档开发了该分析器的公式和期望。

最重要的属性之一可能是:

  • 跨时间框架的一致价值

使用SharpeRatio超额收益与无风险利率/资产的算术平均值除以超额收益与无风险利率/资产的标准差。这使得最终值取决于样本数量和标准偏差,甚至可能是0. 在这种情况下,SharpeRatio将是无限的。

backtrader包括一个样本,用于SharpeRatio使用样本数据进行测试,其中包括2005和的价格2006不同时间范围的返回值:

  • TimeFrame.Years11.6473
  • TimeFrame.Months0.5425
  • TimeFrame.Weeks0.457
  • TimeFrame.Days0.4274

为保持一致性,该比率按年计算。sharpe-timereturn示例并执行:

--annualize --timeframe xxx

其中xxx代表daysweeks,monthsyears (默认)

在此示例中,有一些明确的内容:

这是由较小的 时间范围内较大的样本数量引起的,并增加了可变性,因此增加了标准偏差,这是SharpeRatio等式中的分母。

对标准差的变化有很大的敏感性

这正是他们VWR试图通过跨时间框架提供一致的价值来解决的问题。相同的策略提供以下值:

  • TimeFrame.Years1.5368
  • TimeFrame.Months1.5163
  • TimeFrame.Weeks1.5383
  • TimeFrame.Days1.5221

VWR总是以年化形式返回(根据文献)。该示例使用以下命令执行:

--timeframe xxx

其中xxx代表daysweeks,monthsyears

默认值是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)