Блог им. kurd |Почему все Граали в моих руках становятся плохими? По следам "Как вы з..ли с этой монеткой (дарю Грааль)"

Источник smart-lab.ru/blog/634490.php

Вместо авторских "… берём исторические данные SPY с 1996 года (24 года)" у меня под рукой история индекса ММВБ IMOEX с 05.01.2000 на 173 руб по 27.12.2019 на 3045.87. За 19.4274 года рост в 18.64 раза.
Стратегия «купил и держи» даёт сложный годовой процент 15.77%.

А вот дарёный Грааль много хуже. С капитализацией каждой сделки при 100% вложения от счёта выигрыш на первоначальный 1 млн всего лишь 751009.58 руб или 2.8% годовых. Sharpe ratio всего лишь 0.34. Максимальная просадка 632956.68 руб.  И это при оптимизированных параметрах Period = 5 и Factor = 0.5. Комиссия 0.005% на объём купли или продажи и проскальзывание 0.01%. Всего 735 сделок, 36.79 «сделки» на год.

Если я в чём ошибся, поправьте. Вот как я закодировал дарёный Грааль.
namespace WealthLab.Strategies
{ // Комиссия 0.005% на сделку, проскальзывание 0.01%
public class Simple00 : WealthScript {
  StrategyParameter Period, Factor;
  public Simple00() {
    Period = CreateParameter ("Period", 5,  1,   20, 1);
    Factor = CreateParameter ("Factor",0.5, 0.1, 1, 0.1);
  }
  protected override void Execute()	{
    ClearDebug(); // HideVolume();
    int period = Period.ValueInt;
    double factor = Factor.Value;
    DataSeries atr = ATR.Series (Bars, period);
    for (int bar = period; bar < Bars.Count; ++bar) {
      if (IsLastPositionActive) {
        ExitAtClose (bar, LastPosition);
      } else
      if (Open [bar] -  Close [bar] > atr [bar] * factor) {
        BuyAtClose (bar);
      }
    }
    ChartPane cp = CreatePane (40, true, true);
    PlotSeries (cp, atr, Color.Black, WealthLab.LineStyle.Histogram, 3);
  } // Execute()
} // class Simple00
} // namespace WealthLab.Strategies

Блог им. kurd |По следам "Грааль, который вы так долго искали". Но пока что не нашли.

Нам сообщили, что "Простейшая трендследящая система уверенно обходит по доходности фондовые индексы США". smart-lab.ru/blog/620479.php
И далее «Будет ли работать система на отдельных акциях? Нет. Компании рождаются и умирают, проходя через естественные… бизнес-циклы. Индексы же — «вечны».
Понимаем так, что надо играть в индексы. На ММВБ есть индекс ММВБ, а чтобы его продавать и покупать фьючерс MIX.
Чтобы не заморачиваться отдельными 3-х-месячными контрактами, используем историю торгов „склеенного“ фьючерса — 98 месяцев с сентября 2011 по октябрь 2019  .
Комиссия брокера 4 руб на сделку, проскальзывание 0.01% от объёма сделки. Покупаем и продаём всегда 1 контракт.
Код C# в WealthLab'е действительно прост.
using System;
using System.Collections.Generic;
using System.Text;
using System.Drawing;

namespace WealthLab.Strategies
{
public class TurnOnClose: WealthScript {
  protected override void Execute()    {
    for (int bar = 1; bar < Bars.Count; bar++) {
      if (Close[bar] > Close[bar-1]) {
        if (IsLastPositionActive &&
            LastPosition.PositionType != PositionType.Long)
          ExitAtClose (bar, LastPosition);
        if (! IsLastPositionActive)
          BuyAtClose (bar);
      } else if (Close[bar] < Close[bar-1]) {
        if (IsLastPositionActive &&
            LastPosition.PositionType != PositionType.Short)
          ExitAtClose (bar, LastPosition);
        if (! IsLastPositionActive)
          ShortAtClose (bar);
      }
    } // for (int bar
  } // Execute()
} // class TurnOnClose
} // namespace WealthLab.Strategies
Но график прибыли разочаровывает

( Читать дальше )

....все тэги
UPDONW
Новый дизайн