Постов с тегом "бэктестинг": 140

бэктестинг


Как создавать и бектестить МНОГО стратегий БЫСТРО?

Привет!
я уже много лет занимаюсь автоматизацией трейдинга (с 2012 года). За это время было выброшено огромное количество денег на разработчиков, потрачено много времени на обучение и бектест стратегий. Было желание создать какую-то универсальную стратегию, которая будет работать всегда и на любом рынке. Сложностей было достаточно много — от того, что бы донести свои желания и идеи разработчику, до того, что бы потом продукт полученииый от разраба оттестировать и внести корректировки. Фактически это превращалось в замкнутый круг, т.к. не все идеи переданные разрабу получалось оттестировать на длинном интервале времени, и не каждая идея была хорошей. Но все это выяснялось потом. 
Чем сложнее был алгоритм, тем больше времени от отнимал, и тем менее стабильным он становился. 
Нужен был какой-то прорыв. Что-то, что могло показывать мгновенный результат бектеста, что бы все это было в нормальном и удобном интерфейсе (да-да, это имеет огромное значение). Нужен был такой продукт, в который даже не программист мог бы внести свои изменения и корректировки без особых сложностей. 

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

Лайфхак QLUA для загрузки больших данных

    • 27 апреля 2023, 22:45
    • |
    • GOLD
      Популярный автор
  • Еще
Мой дорогой друг, если ты гоняешь бэктесты в QLUA, то тебе регулярно приходится загружать исторические данные. Как правило, это текстовый файл с тысячами строк в формате D,T,O,H,L,C,V:

20220915,090000,61420,61497,61406,61464,241
20220915,090100,61460,61476,61420,61451,160
20220915,090200,61444,61489,61436,61479,185

Осмелюсь предположить, что эти строки ты заливаешь в массив с помощью string.match. Это готовый парсер строки с разделителем. Работает достаточно шустро. Я на нем сидел пару лет.

Когда данных не много, такой метод загрузки не напрягает. Но когда за день 20-30 раз загружаешь сотни тысяч или миллион строк, то потери времени становятся невыносимыми.

Стал искать способ ускорить этот процесс. И он таки нашелся. Выяснил следующее:

Если строки в файле истории сконвертировать в такой вид (делается 1 раз):

table.insert(MyTable,{«20220915»,«090000»,61420,61497,61406,61464,241})
table.insert(MyTable,{«20220915»,«090100»,61460,61476,61420,61451,160})
table.insert(MyTable,{«20220915»,«090200»,61444,61489,61436,61479,185})



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

Бектест коинтегрированных пар на MOEX за 2018 год на часовом таймфрейме

Расскажу о своих успехах за апрель. Я переписала бектестер (который умеет брутфорсить весь рынок) для торговли с пропущенными данными. В прошлом посте мы затрагивали проблему заполнения пропущенных данных для статистического анализа. Там это было полезно, но когда дело доходит до бектестов, симулировать торговлю в момент, когда на инструменте не было ликвидности, это ошибка. Какая логика получилась у меня?

Так как я исследую парную торговлю, то дожидаюсь момента, когда на обоих инструментах появляется ликвидность, только после этого встаем в позицию или выходим из нее. Дизайн эксперимента не подразумевает подглядываний в будущее: все параметры для оптимизации рассчитываются на первой половине наблюдений, на второй половине происходит симуляция торговли.

В эсперименте участвовало 80 коинтегрированных пар, которые просто втупую, не глядя были загружены в бектестер. Я не видела по ним ни спреды, ни сами ряды. Мне было важно, чтобы алгоритм перемалывал даже пары низкого качества и в среднем выдавал положительный результат. Получилось в среднем 4,78% годовых на 1 контракт.

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

Сколько вешать в граммах? Бэктест равновзвешенного портфеля

Очень часто сталкиваюсь с мнением, что взвешивание по капитализации — не совсем грамотный подход.

Газпром стоил 15 лет назад 300₽, а сегодня стоит 170₽ за акцию! Если придерживаться принципов взвешивания по капитализации (как это устроено в Индексе Мосбиржи), то надо набирать его на огромную котлету и надеяться непонятно на что!

Участники подобных дискуссий часто соглашаются, что выбор отдельных акций на основе каких-то личных предпочтений или фундаментальных показателей (которые имеют свойство кардинально меняться всего за месяц) — может стать ловушкой.

И тут приходит на ум вариант с равновзвешенным портфелем. Собрать 20-25 компаний, раздать им равный вес, и в ус не дуть! Звучит заманчиво. Но каким будет результат? Давайте посчитаем.

Расчет делал в «Лаборатории портфелей» Snowball Income.
Сколько вешать в граммах? Бэктест равновзвешенного портфеля
У меня сейчас 39 компаний в портфеле, так что я просто скопировал свой портфель и распределил доли между ними равномерно: примерно по 2,5% на каждую. Я выбрал размер портфеля 1 млн рублей, включил ежеквартальную ребалансировку и реинвестицию дивидендов с учетом уплаты 13% налога.



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

Есть ли премии за риск при покупке трендовых, "недооцененных" и малых компаний на Мосбирже? Много бэктестов

Более года назад в блоге на смартлабе публиковал разрозненные исследования по факторам Momentum, Size и Value. Сейчас решил собрать их в единый кулак в этом посте + обновить методику и данные.

Цель — системно проверить простые идеи инвестирования в акции: можно ли получить прибыль выше индекса если регулярно покупать n% акций с наибольшей целевой характеристикой из всего множества доступных бумаг на каждый период?

Основные результаты:

  • В целом, портфели из 25% наиболее трендовых, недооцененных (по мультипликатору P/E) и малых компаний обгоняют рыночные индексы на горизонте 20 лет;
  • Некоторые портфели имеют значимую положительную альфу — доходность с поправкой на риск по отношению к индексу;
  • Факторы слабо и даже отрицательно коррелируют между собой и с рынком. Это значит, что в разные периоды, как группа, были сильнее акции с определенным свойством: с низкой капитализацией, с относительной недооценкой или находящиеся в сильном растущем тренде.
Серьезные науки стараются не отвечать на частные случаи вроде «Почему мой прадед прожил до 90 лет если курил с 14 лет?». Они проводят клинические исследования, используют контрольные группы и ищут системные взаимосвязи. Также финансовые экономисты не стремятся объяснить почему акции Сбера так сильно выросли, а выделяют ключевое свойство присущее этой и другим акциям. Затем нарезают все доступные акции по данному свойству на каждый период и считают статистические метрики. Что-то подобное постараюсь сделать в этом мини-исследовании :)

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

Эффект Линди - сколько времени будут «работать» стратегии

 

Эффект Линди.

 

Теоретическое явление, согласно которому ожидаемая продолжительность жизни некоторых нескоропортящихся вещей, таких как технология или идея, пропорциональна их текущему возрасту. Таким образом, эффект Линди предполагает, что чем дольше что-то пережило, чтобы существовать или использоваться в настоящем, тем больше вероятность того, что оставшаяся продолжительность жизни будет выше. Долголетие подразумевает сопротивление изменениям, устареванию или конкуренции и большие шансы на продолжение существования в будущем.

Например, чем дольше «работает» стратегия, в бэктестинге или на реальном счету, тем больше ожидаемая продолжительность, что стратегия будет и дальше «работать». И хотя, это интуитивно понятно, тем не менее у этого есть своё название — эффект Линди (хотя, понятно это не всем, многим хватает тестинга за 1-2 года, а то и меньше).

Эффект Линди применяется к «нескоропортящимся» предметам, которые не имеют «неизбежного срока годности». 

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

Сравнение бэктеста и прода, продолжение

    • 25 ноября 2021, 19:05
    • |
    • grepan
  • Еще

В продолжение прошлого поста сравниваю по логам еще один день:

На данных бэктеста: 17 сделок, прибыль 844 пунктов

OPEN 236 short 2021-11-24 07:25:00+00:00
CLOSE  short   2021-11-24 07:47:00+00:00 profit= 51.0
OPEN 237 short 2021-11-24 07:54:00+00:00
CLOSE  short   2021-11-24 07:55:00+00:00 profit= 86.0
OPEN 238 short 2021-11-24 08:01:00+00:00
CLOSE  short   2021-11-24 08:03:00+00:00 profit= 40.0
OPEN 239 short 2021-11-24 08:04:00+00:00
CLOSE  short   2021-11-24 08:45:00+00:00 profit= 32.0
OPEN 240 short 2021-11-24 10:10:00+00:00
CLOSE  short   2021-11-24 10:11:00+00:00 profit= 43.0
OPEN 241 short 2021-11-24 10:11:00+00:00
CLOSE  short   2021-11-24 10:27:00+00:00 profit= 32.0
OPEN 242 short 2021-11-24 10:33:00+00:00
CLOSE  short   2021-11-24 10:36:00+00:00 profit= 60.0
OPEN 243 short 2021-11-24 10:52:00+00:00
CLOSE  short   2021-11-24 10:56:00+00:00 profit= 58.0
OPEN 244 short 2021-11-24 11:15:00+00:00
CLOSE  short   2021-11-24 11:18:00+00:00 profit= 53.0
OPEN 245 short 2021-11-24 11:31:00+00:00
CLOSE  short   2021-11-24 11:35:00+00:00 profit= 48.0
OPEN 246 short 2021-11-24 12:22:00+00:00
CLOSE  short   2021-11-24 12:40:00+00:00 profit= 94.0
OPEN 247 short 2021-11-24 13:23:00+00:00
CLOSE  short   2021-11-24 13:30:00+00:00 profit= 61.0
OPEN 248 short 2021-11-24 13:45:00+00:00
CLOSE  short   2021-11-24 13:46:00+00:00 profit= 37.0
OPEN 249 short 2021-11-24 16:51:00+00:00
CLOSE  short   2021-11-24 16:54:00+00:00 profit= 40.0
OPEN 250 short 2021-11-24 19:19:00+00:00
CLOSE  short   2021-11-24 19:23:00+00:00 profit= 35.0
OPEN 251 short 2021-11-24 19:23:00+00:00
CLOSE  short   2021-11-24 19:39:00+00:00 profit= 39.0
OPEN 252 short 2021-11-24 19:42:00+00:00
CLOSE  short   2021-11-24 20:05:00+00:00 profit= 35.0



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

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