evgen000
evgen000 личный блог
28 апреля 2016, 11:07

Как создаются красивые трендовые эквити.

Самая обычная и распространенная ошибка в построении трендовых систем, это когда вы получаете сигнал в конце периода, но открываете/закрываете позицию в этом же периоде. Этот пост об этом.

Скачаем данные и создадим скользящую среднюю по месячным данным SP500

require(quantmod)
require(xts)
require(TTR)
require(PerformanceAnalytics)

getSymbols('^GSPC', src='yahoo', from = '1900-01-01')
monthlyGSPC <- Ad(GSPC)[endpoints(GSPC, on = 'months')]

movAvg <- SMA(monthlyGSPC, 10)

signal <- monthlyGSPC > movAvg
gspcRets <- Return.calculate(monthlyGSPC)
Далее построим две системы одна с ошибкой заглядывания, вторая корректная. Суть системы простая, месячная SMA с периодом 10, выше покупаем, ниже продаем.

lookahead <- signal * gspcRets
correct <- lag(signal) * gspcRets

И построим результаты систем, на обычной шкале, и на логарифмической.

compare <- na.omit(cbind(gspcRets, lookahead, correct))
colnames(compare) <- c("S&P 500", "Lookahead", "Correct")
charts.PerformanceSummary(compare)
rbind(table.AnnualizedReturns(compare), maxDrawdown(compare), CalmarRatio(compare))
logRets <- log(cumprod(1+compare))
chart.TimeSeries(logRets, legend.loc='topleft')

Как создаются красивые трендовые эквити.
Как создаются красивые трендовые эквити.

График не совсем удобный, можно посмотреть доходности на логарифмической шкале.

Как создаются красивые трендовые эквити.
Данная публикация является личным мнением автора. Мнение владельца сайта может не совпадать с мнением автора.
16 Комментариев
  • sergeygaz
    28 апреля 2016, 11:28
    В какой платформе это все делается?
  • Marco
    28 апреля 2016, 11:47

    Можно еще например при расчете скользящего среднего забыть указать fill=NA:
     
    sma <- rollmeanr(prices, ma_periods, fill=NA)

    В результате полученное среднее будет заглядывать вперед на величину периода, а эквити будет поражать воображение.

  • Гиганов денис
    28 апреля 2016, 13:31
    Да уж! На злобу дня! Как раз хотел обсудить эту тему на некотором сайте, где у них там выставлены подобные резалты(не буду пока называть какой, но они там мне коечто продали), но меня там просто забанили, закрылись в домике, и говорят что не пустят :) 
  • Бобровский Дмитрий
    28 апреля 2016, 14:28
    Народ, а дайте ссылки на внятное описание quantmod'а и PErformanceAnalytics'а? Или на R-bloggers искать? В частности, интересует решение задачи:
    1) получить тиковые данные по инструменту (желательно с финама, но умеет ли квантмод с финамом работать?) за период N дней,
    2) сформировать собственные свечки исходя из тиковых данных,
    3) представить данные OHLC или хотя бы C в ts или ином векторизованном формате для работы иных пакетов (н-р, fGarch или rugarch).

    Пасиб!
  • Алекс Ма
    28 апреля 2016, 14:54
    Не совсем понял про сделку внутри периода.
    Имеется ввиду, что тестер получает сигнал о пересечении МА на цене закрытия, а сделка совершается по уровню МА?

    Если я получаю сигнал о пересечении МА на цене закрытия и совершаю сделку по цене закрытия то тут заглядывания вроде нет.
  • ves2010
    28 апреля 2016, 15:02
    есть еще способ рисовать эквити — отрицательное проскальзывание и комиссии…
  • SECRET
    28 апреля 2016, 15:54
    Есть еще вариант сделать систему, которая будет зарабатывать не заглядывая в будущее, но наверное это совсем для слабаков :D
    • Алекс Ма
      28 апреля 2016, 16:46
      SECRET, что за вариант?
      • SECRET
        28 апреля 2016, 17:25
        Alex, сделать зарабатывающую систему — это и есть вариант :)
        • Алекс Ма
          28 апреля 2016, 19:38
          SECRET, это про которую Vanuta писал? )
          • SECRET
            28 апреля 2016, 20:03
            Alex, я не в курсе, наверное он у меня в BL :)
  • love_to_trade
    29 апреля 2016, 21:24
    Хотя бы ссылку на источник указываете :)) 

Активные форумы
Что сейчас обсуждают

Старый дизайн
Старый
дизайн