В данной заметке я хочу рассказать свою методику определение исходных данных для тестирования роботов на исторических данных.
При тестировании торговых алгоритмов на истории я задаю следующие условия:
————————————————
1) Торговый алгоритм не должен влиять на рынок. Т е размер позиции должен быть существенно меньше, чем объем предложения в моменты открытия позиции.
Поэтому исследования провожу на ликвидных акциях, в частности на акции сбербанка.
При этом начальный объем депозита задается таким, который позволял бы в реальной торговле открыть позицию одной сделкой не влияя на рынок.
Исходя из сказанного, я задаю начальный размер депозита в 100 тысяч рублей (Очевидно, что для сбербанка эта сумма может быть раз в 10 больше).
————————————————-
2) Многие разработчики, особенно начинающие, предпочитают тестировать алгоритмы с совершением каждой последующей сделки на всю накопленную на депозите сумму, включающую накопленную в предыдущих сделках прибыль.
Считаю такой подход далеким от реальности. Помимо геометрического роста депозита, такой подход предполагает, что Вы никогда не забираете деньги с депозита. Т е фактически работаете на брокера.
Кроме того, при такой модели тестирования вероятность потерять весь депозит для каждой открытой позиции одинаковая как в начале торговли, так и через 6 лет. Но суммы этих потерь существенно разные. Очевидно, что было бы очень досадно потерять весь депозит , который накопился бы за шесть лет с такой же вероятностью, как и потерять депозит в начале торговой эпопеи.
Более реальная схема тестирования, предполагает торговлю на некоторый постоянный депозит. При этом, получаемая прибыль периодически снимается на личные нужды игрока, либо используется для компенсации убытка.
————————————————————
Теперь я приведу наглядный результат тестирования чернового варианта построенного мною торгового робота на истории с 2008 года по настоящее время.
Алгоритм реверсивный. Комиссия брокера 0.035%
———————————————————
В первом случае, торговля осуществляется на всю полученную в предыдущей сделке сумму, т е производится реинвестирование прибыли.
—————————————————————-
Результат на графике и в таблице:
All trades | Long trades | Short trades | |
Initial capital | 100000.00 | 100000.00 | 100000.00 |
Ending capital | 234178988.85 | 140498730.16 | 93780258.70 |
Net Profit | 234078988.85 | 140398730.16 | 93680258.70 |
Net Profit % | 234078.99 % | 140398.73 % | 93680.26 % |
Exposure % | 27.34 % | 12.51 % | 14.83 % |
Net Risk Adjusted Return % | 856105.41 % | 1122209.61 % | 631635.03 % |
Annual Return % | 242.01 % | 215.41 % | 195.83 % |
Risk Adjusted Return % | 885.10 % | 1721.75 % | 1320.40 % |
Total transaction costs | 24895497.18 | 12736301.02 | 12159196.15 |
All trades | 2251 | 1125 (49.98 %) | 1126 (50.02 %) |
Avg. Profit/Loss | 103988.89 | 124798.87 | 83197.39 |
Avg. Profit/Loss % | 0.69 % | 0.74 % | 0.65 % |
Avg. Bars Held | 70.50 | 63.59 | 77.40 |
Winners | 1096 (48.69 %) | 549 (24.39 %) | 547 (24.30 %) |
Total Profit | 386095375.34 | 208382366.30 | 177713009.04 |
Avg. Profit | 352276.80 | 379567.15 | 324886.67 |
Avg. Profit % | 2.27 % | 2.31 % | 2.24 % |
Avg. Bars Held | 94.60 | 89.62 | 99.59 |
Max. Consecutive | 16 | 9 | 12 |
Largest win | 10473445.21 | 10473445.21 | 10014591.45 |
# bars in largest win | 518 | 518 | 347 |
Losers | 1155 (51.31 %) | 576 (25.59 %) | 579 (25.72 %) |
Total Loss | -152016386.48 | -67983636.15 | -84032750.34 |
Avg. Loss | -131615.92 | -118027.15 | -145134.28 |
Avg. Loss % | -0.80 % | -0.75 % | -0.85 % |
Avg. Bars Held | 47.63 | 38.78 | 56.44 |
Max. Consecutive | 10 | 10 | 10 |
Largest loss | -4454553.27 | -2593807.75 | -4454553.27 |
# bars in largest loss | 74 | 409 | 74 |
Max. trade drawdown | -4713458.18 | -4616353.47 | -4713458.18 |
Max. trade % drawdown | -15.91 % | -15.91 % | -10.43 % |
Max. system drawdown | -9806466.20 | -5958457.55 | -10225479.88 |
Max. system % drawdown | -23.92 % | -41.20 % | -26.97 % |
Recovery Factor | 23.87 | 23.56 | 9.16 |
CAR/MaxDD | 10.12 | 5.23 | 7.26 |
RAR/MaxDD | 37.01 | 41.79 | 48.96 |
Profit Factor | 2.54 | 3.07 | 2.11 |
Payoff Ratio | 2.68 | 3.22 | 2.24 |
Standard Error | 23385452.60 | 16503545.10 | 7500596.87 |
Risk-Reward Ratio | 1.58 | 1.38 | 1.89 |
Ulcer Index | 2.56 | 3.85 | 5.87 |
Ulcer Performance Index | 92.59 | 54.54 | 32.44 |
Sharpe Ratio of trades | 3.61 | 3.60 | 3.76 |
K-Ratio | 0.0073 | 0.0064 | 0.0087 |
Как видим из таблицы, полученная за 6 лет и 4 месяца прибыль составила бы астрономическую сумму в 234 млн.руб, при начальном депозите в 0.1 млн.руб. т е прибыль в процентах составила бы 234 тысячи %.
Очевидно, что такой результат не имеет никакого практического смысла.
———————————————————-
Теперь я приведу результат торговли на постоянную сумму в размере 100 тысяч рублей, при условии изъятия прибыли в конце каждого месяца.
All trades | Long trades | Short trades | |
Initial capital | 100000.00 | 100000.00 | 100000.00 |
Ending capital | 1661762.23 | 931515.57 | 830246.66 |
Net Profit | 1561762.23 | 831515.57 | 730246.66 |
Net Profit % | 1561.76 % | 831.52 % | 730.25 % |
Exposure % | 13.79 % | 5.82 % | 7.97 % |
Net Risk Adjusted Return % | 11326.58 % | 14294.64 % | 9160.72 % |
Annual Return % | 56.12 % | 42.43 % | 39.86 % |
Risk Adjusted Return % | 406.98 % | 729.44 % | 499.99 % |
Total transaction costs | 157541.86 | 79036.83 | 78505.03 |
All trades | 2251 | 1125 (49.98 %) | 1126 (50.02 %) |
Avg. Profit/Loss | 693.81 | 739.12 | 648.53 |
Avg. Profit/Loss % | 0.69 % | 0.74 % | 0.65 % |
Avg. Bars Held | 70.50 | 63.59 | 77.40 |
Winners | 1096 (48.69 %) | 549 (24.39 %) | 547 (24.30 %) |
Total Profit | 2488016.06 | 1265496.02 | 1222520.04 |
Avg. Profit | 2270.09 | 2305.09 | 2234.95 |
Avg. Profit % | 2.27 % | 2.31 % | 2.24 % |
Avg. Bars Held | 94.60 | 89.62 | 99.59 |
Max. Consecutive | 16 | 9 | 12 |
Largest win | 64342.89 | 64342.89 | 34597.19 |
# bars in largest win | 267 | 267 | 89 |
Losers | 1155 (51.31 %) | 576 (25.59 %) | 579 (25.72 %) |
Total Loss | -926253.83 | -433980.45 | -492273.38 |
Avg. Loss | -801.95 | -753.44 | -850.21 |
Avg. Loss % | -0.80 % | -0.75 % | -0.85 % |
Avg. Bars Held | 47.63 | 38.78 | 56.44 |
Max. Consecutive | 10 | 10 | 10 |
Largest loss | -11069.89 | -11069.89 | -6801.48 |
# bars in largest loss | 409 | 409 | 317 |
Max. trade drawdown | -25575.71 | -25575.71 | -11874.91 |
Max. trade % drawdown | -15.91 % | -15.91 % | -10.43 % |
Max. system drawdown | -32954.56 | -31317.28 | -23929.78 |
Max. system % drawdown | -9.74 % | -10.64 % | -8.16 % |
Recovery Factor | 47.39 | 26.55 | 30.52 |
CAR/MaxDD | 5.76 | 3.99 | 4.88 |
RAR/MaxDD | 41.77 | 68.58 | 61.27 |
Profit Factor | 2.69 | 2.92 | 2.48 |
Payoff Ratio | 2.83 | 3.06 | 2.63 |
Standard Error | 193641.03 | 108624.41 | 88058.23 |
Risk-Reward Ratio | 1.02 | 1.05 | 0.96 |
Ulcer Index | 1.00 | 1.50 | 1.26 |
Ulcer Performance Index | 50.95 | 24.64 | 27.42 |
Sharpe Ratio of trades | 3.61 | 3.60 | 3.76 |
K-Ratio | 0.0047 | 0.0048 | 0.0044 |
В этом случае за 6 лет и 4 месяца мы могли бы заработать 1,6 млн. рублей при открытии позиции на сумму не более 0.1 млн.руб.
Т е прибыль составила бы 1660 %.
Т е результаты вполне правдоподобны.
————————————————
Но как быть, если необходимо торговать на сумму более 1 млн. рублей в месяц.
Возможны различные варианты торгового алгоритма.
От запуска нескольких роботов до создание пирамидальной позиции.
Но в любом случае, торговый алгоритм для большого депозита существенно отличается от торгового алгоритма для малых сумм.