Я пытаюсь рассчитать годовой доход от торговой стратегии в R. Я пробовал разные методы, но продолжаю получать противоречивые результаты.
Вот некоторые тестовые данные;
CumBal
2007-01-03 1000000.0
2007-01-04 1000000.0
2007-01-05 1114999.4
2007-01-08 889999.4
2007-01-09 1109997.6
2007-01-10 1179998.8
2007-01-11 1229998.8
2007-01-12 1050000.0
2007-01-16 979998.8
2007-01-17 1284997.6
...
2018-05-10 2161996.3
2018-05-11 2161996.3
2018-05-14 2161996.3
2018-05-15 2161996.3
2018-05-16 2137496.0
2018-05-17 2128995.8
2018-05-18 2128995.8
2018-05-21 2128995.8
2018-05-22 2128995.8
Общие результаты стратегии:
Results
Balance 1000000.0000
Final Balance 2133996.1000
Net-Profit 1133996.1000
CAGR 0.0681
Total Return (%) 1.1340
Sharpe Ratio 0.0000
Profit Factor 1.1432
Max Loss on Inv % -0.1100
Max loss on Inv £ -664999.4000
Total Number of Trade 259.0000
% of Win Trades 0.2432
Win:Loss 0.5207
Ulcer Peformance Index 0.0000
Проблема, с которой я сталкиваюсь, заключается в расчете ежемесячной и годовой доходности. Я хочу сделать это, чтобы определить стандартное отклонение годовой и месячной доходности для расчета коэффициента Шарпа. Я попытался использовать пакет PerformanceAnalytics
, однако получил несовместимый результат с фактической производительностью;
table.CalendarReturns(a.1)
Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec CumBal
2007 0.0 0 0 0.0 0.0 0 0 0.0 0 0.0 0.0 0.0 NA
2008 0.0 0 0 0.0 12.7 0 0 0.0 0 -18.9 0.0 0.0 -8.6
2009 0.0 0 0 0.0 0.0 0 0 0.0 0 0.0 0.0 0.0 NA
2010 -1.2 0 0 0.0 0.0 0 0 0.0 0 0.0 0.0 0.0 -1.2
2011 0.0 0 0 0.0 0.7 0 0 0.0 0 0.0 0.0 0.0 0.7
2012 0.0 0 0 0.0 0.0 0 0 0.0 0 0.0 0.0 0.0 NA
2013 0.0 0 0 -0.5 0.0 0 0 0.0 0 0.0 -0.5 0.4 -0.5
2014 0.0 0 0 0.0 0.0 0 0 0.3 0 0.0 0.0 0.0 0.3
2015 0.0 0 0 0.0 0.0 0 0 0.0 0 0.0 0.0 0.0 NA
2016 -3.8 0 0 -0.6 0.0 0 0 -0.5 0 0.0 0.3 0.0 -4.5
2017 0.0 0 0 0.0 0.0 0 0 0.0 0 0.0 0.0 0.0 NA
2018 -0.7 0 0 0.0 0.0 0 0 NA NA NA NA NA -0.7
Затем я попробовал предложение от участника на форуме, которое должно было использовать Return.calculaute()
, затем to.monthly
, а затем table.CalendarReturns()
. Однако to.monthly
как-то выводит результат ниже, поэтому table.CalendarReturns()
не работает;
a.1 <- data.frame(a.1)
a.z <- Return.calculate(a.1)
a.q <- to.monthly(a.z)
Результат ...
> a.q
a.z.Open a.z.High a.z.Low a.z.Close
Jan 2007 0.000000000 0.3112236464 -0.201793831 0.000000000
Feb 2007 0.000000000 0.0000000000 0.000000000 0.000000000
...
Apr 2018 0.000000000 0.0000000000 -0.047367213 0.000000000
May 2018 0.000000000 0.0000000000 -0.011332235 0.000000000
Jun 2018 0.000000000 0.0023486660 0.000000000 0.000000000
Jul 2018 0.000000000 0.0000000000 0.000000000 0.000000000