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
    Хотя бы ссылку на источник указываете :)) 

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

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