Автор: Николай Камынин

Данная статья посвящена новому авторскому принципу оценки эффективности торговых стратегий и роботов.

В настоящее время оценку эффективности торговых стратегий помимо расчета различных коэффициентов , осуществляют путем сравнения с результатом стратегии «купил и держи».

При этом, стратегия «купил и держи» фактически отражает движение цены и малопригодна для количественной оценки эффективности созданной стратегии.

 Кроме того, применяемые числовые коэффициенты , такие как:

Net Profit %, Exposure %, Net Risk Adjusted Return %,Annual Return %,Risk Adjusted Return %, Avg. Profit %, Avg. Loss %,Max. Consecutive,Max. trade % drawdown,Max. system % drawdown,Recovery Factor,CAR/MaxDD,RAR/MaxDD,Profit Factor,Payoff Ratio,Risk-Reward Ratio,Ulcer Index,Ulcer Performance Index,Sharpe Ratio of trades,K-Ratio не позволяют оценить эффективность торгового робота или стратегии при его работе на различных рынках,таймах и инструментах.

Например, если робот на ациях сбербанка показал прибыль в 100%, а другой робот на акциях газпрома показал прибыль в 90%, то как сравнить эффективность торговых алгоритмов между собой.

Мною разработана  новая авторская концепция , позволяющая оценивать эффективность роботов для различных рынков и таймов.

Данная концепция основана на сравнении эффективности работы робота или стратегии с идельным алгоритмом торговли.

Для этой цели , я ввел понятие «идеальная стратегия» и назвал ее —NKIS.

В настоящее время алгоритм  NKIS на языке С++  следующий:

//NKIS сигнал Buy=Cover — «купить или  закрыть шорт»:

if (j-iS->x.last()==1) {

if (iS->x.pref()>=iR->x.last() && iS->y.pref()>iS->y.last() ) Buy[iS->x.pref()]=0;

            Buy[iS->x.last()]=1;   BuyPrice[iS->x.last()]=iS->y.last();

}

//NKIS  сигнал Sell=Short — «продать или  открыть шорт»:

if (j-iR->x.last()==1) {

if (iR->x.pref()>=iS->x.last() && iR->y.last()>iR->y.pref() ) Sell[iR->x.pref()]=0;

            Sell[iR->x.last()]=1; SellPrice[iS->x.last()]=iR->y.last();

}

где j — текущее время;

iS->x.last(),iS->y.last()  — время и значение последнего локального минимума;

iR->x.last(),iR->y.last()  — время и значение последнего локального максимума;

iS->x.pref(),iS->y.pref()   — время и значение предыдущего локального минимума;

iR->x.pref(),iR->y.pref() — время и значение предыдущего локального максимума

Проведем оценку параметров алгоритма NKIS для акции сбербанка,

на истории сделок с 01.01.2007 г по 25.06.2012.

Условия торговли примем следующие:

Комиссия — 0.

Сумма депозита постоянная для любой сделки и равна  100 000.

Cделка на всю сумму депозита.

Без плеча.

Без реинвестирования прибыли.

Тайм — 5 минут

All trades

Long trades

Short trades

Net Profit %

34255.55 %

17269.95 %

16985.60 %

Exposure %

1.79 %

0.87 %

0.92 %

Net Risk Adjusted Return %

1916787.03 %

1981175.21 %

1855474.59 %

Annual Return %

191.21 %

157.04 %

156.26 %

Risk Adjusted Return %

10699.47 %

18014.81 %

17069.56 %

All trades

43915

21958 (50.00 %)

21957 (50.00 %)

 Avg. Profit/Loss

780.04

786.50

773.58

 Avg. Profit/Loss %

0.78 %

0.79 %

0.77 %

 Avg. Bars Held

3.96

3.94

3.98

Winners

43810 (99.76 %)

21899 (49.87 %)

21911 (49.89 %)

 Avg. Profit %

0.78 %

0.79 %

0.78 %

 Avg. Bars Held

3.95

3.93

3.97

 Max. Consecutive

2022

2377

1781

 # bars in largest win

6

2

6

Losers

105 (0.24 %)

59 (0.13 %)

46 (0.10 %)

 Avg. Loss %

-0.29 %

-0.29 %

-0.29 %

 Avg. Bars Held

7.62

7.64

7.59

 Max. Consecutive

1

1

1

 # bars in largest loss

13

10

13

Max. trade % drawdown

-5.33 %

-3.69 %

-5.33 %

Max. system % drawdown

-1.13 %

-1.64 %

-0.37 %

Recovery Factor

5959.61

4620.16

2955.07

CAR/MaxDD

169.07

95.66

425.50

RAR/MaxDD

9460.36

10973.49

46481.15

Profit Factor

1123.76

1002.86

1280.78

Payoff Ratio

2.69

2.70

2.69

Risk-Reward Ratio

3.90

3.89

3.91

Ulcer Index

0.01

0.01

0.00

Ulcer Performance Index

25068.62

14924.67

33942.83

Sharpe Ratio of trades

71.80

71.19

72.46

K-Ratio

0.0171

0.0170

0.0171

Для наглядности приведу результаты Робота Вася при тех же условиях:

All trades

Long trades

Short trades

Net Profit %

3156.91 %

1597.34 %

1559.57 %

Exposure %

12.79 %

7.62 %

5.17 %

Net Risk Adjusted Return %

24678.85 %

20963.42 %

30152.32 %

Annual Return %

89.20 %

67.92 %

67.23 %

Risk Adjusted Return %

697.30 %

891.41 %

1299.85 %

All trades

2773

1387 (50.02 %)

1386 (49.98 %)

 Avg. Profit/Loss

1138.44

1151.65

1125.23

 Avg. Profit/Loss %

1.14 %

1.15 %

1.13 %

 Avg. Bars Held

47.67

54.98

40.35

Winners

1873 (67.54 %)

907 (32.71 %)

966 (34.84 %)

 Avg. Profit %

2.03 %

2.18 %

1.90 %

 Avg. Bars Held

53.36

63.62

43.73

 Max. Consecutive

50

31

34

 # bars in largest win

88

48

88

Losers

900 (32.46 %)

480 (17.31 %)

420 (15.15 %)

 Avg. Loss %

-0.72 %

-0.78 %

-0.66 %

 Avg. Bars Held

35.82

38.67

32.58

 Max. Consecutive

6

8

5

 # bars in largest loss

285

285

72

Max. trade % drawdown

-15.33 %

-15.33 %

-12.06 %

Max. system % drawdown

-4.55 %

-6.30 %

-3.31 %

Recovery Factor

132.71

89.10

128.40

CAR/MaxDD

19.59

10.79

20.30

RAR/MaxDD

153.11

141.59

392.44

Profit Factor

5.84

5.25

6.66

Payoff Ratio

2.81

2.78

2.90

Risk-Reward Ratio

2.78

3.00

2.48

Ulcer Index

0.36

0.55

0.45

Ulcer Performance Index

232.68

113.56

137.60

Sharpe Ratio of trades

9.05

8.15

10.20

K-Ratio

0.0121

0.0131

0.0108

Эффективность роботВася относительно NKIS:

Net Profit= 3156/34255= 9%

Profit Factor    =5.8/1120 =0.5%

Max. trade % drawdown

для NKIS составляет 5.3%, для робота Вася 15.3%,что в 3 раза хуже,

и так далее.

Таким образом, предложена новая концепция оценки эффективности торговых стратегий и роботов.

Предложен базовый алгоритм идеальной торговой стратегии NKIS.

Концепция позволяет сравнивать по единой методике различные алгоритмы на различных рынках,  различных таймах и различных условиях торговли, путем сравнительной оценки результаов с результатами идеальной стратегии NKIS.

 

Если представить Робота Васю как многослойную нейронную сеть, то получим следующее.

В первом слое содержится примерно 400 нейронов, во втором слое 120 и в третьем два.

Второй слой фактически содержит два независимых слоя по 60 нейронов, которые соединяются с последним, принимающем окончательное решение.

И вот решил я провести оптимизацию второго слоя .

Генетический алгоритм оптимизации не смог найти наилучшее решение, которое получается при простом переборе на первом шаге.

Поэтому пришлось написать программу оптимизации на полном переборе различных сочетаний нейронов во втором слое.

Вернее сказать, я лишь приспособил  оптимизатор ,встроенный в Амиброкер для решения своей задачи.

Но меня ожидало полное разочарование, когда я запустил оптимизацию.

При попытке частичной оптимизации слоя на истории с 2007 г по настоящее время на тайме 5 минут, получилось расчетное время оптимизации для слоя в 40 нейронов 65 тысяч лет.

Очевидно, что оптимизацию  120 нейронов  придется ждать сотни тысячилетий.

Увы, Я так долго ждать не смогу, устану.

Поэтому пусть пока работает не оптимизированным.

Вот его результаты на сегодня:

 

 

 

 

 

 

 

 

 

…………………………………….All trades      Long trades      Short trades
Net Profit %                                 1729.26 %            862.39 %             866.87 %
Exposure %                                     20.24 %             11.94 %               8.30 %
Net Risk Adjusted Return %      8545.45 %          7223.58 %            10447.37 %
Annual Return %                              70.24 %             51.36 %                51.49 %
Risk Adjusted Return %               347.10 %            430.17 %                620.49 %


All trades                 2767          1384 (50.02 %)       1383 (49.98 %)
Avg. Profit/Loss %                           0.62 %            0.62 %               0.63 %
Avg. Bars Held                                47.81            55.17                 40.46


Winners              1385 (50.05 %)       672 (24.29 %)         713 (25.77 %)
Avg. Profit %                         2.09 %                     2.27 %                     1.92 %
Avg. Bars Held                          62.47             74.04                      51.55
Max. Consecutive                       43             21                          28
# bars in largest win               87                47                            87


Losers             1382 (49.95 %)        712 (25.73 %)             670 (24.21 %)
Avg. Loss %                        -0.84 %                -0.93 %                -0.75 %
Avg. Bars Held                      33.13               37.35                        28.65
Max. Consecutive                   10              9                                  11
# bars in largest loss             285              285                               72


Max. trade % drawdown             -15.46 %            -15.46 %                   -12.14 %
Max. system % drawdown            -8.44 %              -8.88 %                    -7.52 %
Recovery Factor                   71.06              46.34                        61.75
CAR/MaxDD                          8.32               5.78                         6.85
RAR/MaxDD                            41.13        48.43                         82.55
Profit Factor                     2.48                 2.30                        2.73
Payoff Ratio                     2.48                2.44                           2.56
Risk-Reward Ratio                2.00              2.23                          1.67
Ulcer Index                       1.20                  1.57                         1.66
Ulcer Performance Index            54.19                29.32                         27.77
Sharpe Ratio of trades             5.18                 4.61                           5.84
K-Ratio                           0.0087              0.0098                         0.0073