Блог им. NikitaReyhner

Как тестировать торговые стратегии на истории?

В интернете куча информации но очень мало полезной, может ли мне кто-нибудь подсказать каким софтом и как можно тестировать торговые стратеги и как можно считать погрешности? основная проблема в том что с программированием у меня не все так радужно как и с пониманием того как имея только данные о изменении цены на графике я могу учитывать комиссии и спрэды, проскальзывания и задержки и.т.д. Если это все звучит слегка очевидно и тупо то я жду ответы, так как у мня слегка уже едет крыша.
    29 комментариев
    Ни один Софт не позволяет делать, того, что собственный. Я писал собственный софт под все. Но если очень надо быстро — используйте python.
    avatar
    Ivan Gurov, да, в принципе можно и Ексель, и МатЛаб, и SciLab, и R (есть любители), и что угодно. Сам начинал с Ексель. Но Питон действительно удобнее всего.
    avatar
    3Qu, а как это выглядит в экселе?)
    Никита Рейхнер, VBA — Visual Basic for Application.
    Но самую первую систему я делал непосредственно на листе Ексель. Заняло 3 или 5 дней.
    avatar
    3Qu, Блин интересная штука и столько вообще вариантов, я ради любопытства посмотрю, тк до программирования мне далеко а если некоторые ПО не будут обладать нужной гибкостью то это отличный вариант, возможно!)

    Ivan Gurov, А какие фреймворки вы используете? 
    bocha, прикольно, надо будет посмотреть
    Берете специализированный софт, позволяющий тестировать на истории и… тестируете. Есть софт, который позволяет делать это без программирования — тот же TSLab, Wealth-Lab. Комиссии, проскальзывания — в таком софте задаются в настройках и все, итоговые метрики с учетом и комиссий и проскальзываний. Задержки — если что-то высокоскоростное — HFT, арбитраж — лучше не тестировать такое, т.е. если понимаете, что тут что-то быстрое, то даже если результаты на истории хорошие умом понимайте, что торговать вы так не сможете. Если речь о задержках а-ля брокерский софт с задержкой в секунду выставляет заявки иногда, а не мгновенно — ну заложите проскальзывание чуть побольше и вуаля. А лучше вообще с запасом, чтоб себя не обманывать.
    avatar
    Replikant_mih, 
    Берете специализированный софт, позволяющий тестировать на истории и… тестируете.
     А что есть тест? — не более чем цикл, подающий на вход системы последовательность котировок. Т.е., всего навсего, циклы for() или while()
    Так, зачем для этого специализированный софт? Если у человека запрограммирована система, то уж как нибудь for() или while() он и самостоятельно напишет.))
    А если нет, то и никакая спец система никак не поможет.
    avatar
    3Qu, ахах ну надо будет начать изучать питон)
    Никита Рейхнер, думаю, надо и без ). Но можно в чем угодно. Знаю людей, которые все делают в МатЛабе, и даже в R.
    avatar
    3Qu, Вообще я думаю что питон он для HFT больше походу, тк там скорость важна а с такими ПО мне даже интуиция подсказывает что должно быть удобнее)
    Никита Рейхнер, хфт, это вообще не про нас.)
    Вообще, для хфт специальные платы для компа делали, на заказ. Сведения на лет 10 назад.
    avatar
    Никита Рейхнер, HFT это не питон, а вот это:

    avatar
    Sprite, жесть

    3Qu, Да, бэйзлайновый цикл, или векторные бэктестер пилится за пол часа, условно. Но самое веселье начинается потом. Наигравшись с таким болваночным решением, быстро понимаешь, что дофига чего не хватает для счастья. Начинаешь оно пилить. И так постоянно, со временем заколебываешься это все пилить и бросаешься в объятья софта где это все с любовью для тебя и для сотен-тысяч таких же как ты уже запилили разработчик. Главное сделать правильный выбор. Один из атрибутов правильного выбора на мой взгляд — горящие глаза у разработчиков и чуткость к потребностям аудитории.

     

    А прикидочно идеи тестировать на своем бэктестере — да, это можно. У меня, например, код очень легко пишется в моем бэктестере да и тестится не долго, но вот чего-то сложного делать нельзя. 

    avatar
    Replikant_mih, ну, уж, не знаю.
    В том же Питоне любой каприз, которого не сыщешь ни в каком софте, который «с любовью», за 5 минут делается.
    Например: зависимость прибыли от значения индикатора(ов) в момент сделки. Потом график строим — ещё пару минут.
    В своем тестер, там тебе и регрессионный анализ, и нейросети, и чё хошь. А в «с любовью»  для этого какие то костыли присобачивать надо, и скакать из одного софта в другой.
    avatar

    3Qu, Ну, специализированному ПО, закрывающему твои основные потребности, сложно противопоставить поделки на Питоне. А не поделка — это хренова тонна времени. 

     

    Я могу на питоне переместить папку, удалить файл, переименовать, но я же не буду писать на питоне Проводник или операционную систему. 

     

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

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

    avatar
    Replikant_mih, у меня Питон — моделирование + тестирование, отработка стратегий. Оч. неплохого качества, кстати.
    Потом это все переводится на язык системы — Lua + C++. Будет надобность, Питон подключается без проблем, а это куча возможностей. Пока надобности не было.
    avatar
    3Qu, лучше сразу писать на с++, на нем тестить и запускать как бота
    Даниил Лазарев, я так не считаю.
    Стратегия д.б. смоделирована и отработана. На С++ это не оч удобно, да и долго.
    avatar
    Replikant_mih, Ну да, вообще hft это страх), надо будет посмотерть эти проги, я просто помню что когда-то у меня база с бинанса в TsLab не импортировалась и я забил
    Это может делать любой софт, предназначенный для тестирования стратегий. Tradingview, AmiBroker.
    только тслаб
    он бесплатный для тестов
    все на русском языке
    живой форум и тхподдержка
    дополна видосов
    не требует умения программировать — все собирается из кубиков как лего
    avatar
    С/с++ это очень серьёзно. И очень очень сложно. В итоге это оптимальный вариант.
    Но начинать лучше с простого, Tradestation скачайте, удобный, элементарный встроенный язык. Возможно, вам и кубиков тслабовских хватит, но кодить там точно не научитесь. Вопрос вообще актуальный, хочется тестировать как можно больше, а кодить как можно меньше.
    avatar
    Было дело несколько лет назад как то баловался, сделал простейший эмулятор matching engine, ну и провел несколько тестов на предмет разницы между результатом бэктеста и «реальной» торговлей у нескольких торговых терминалов. Но дабы не оскорблять чувства верующих, подробности озвучивать тут не буду, печально там все..
    Свой бэктетер надо…
    avatar
    Andrew Morozov, а в чем проблема была?) типо может ли появится разница меж бектестом и реал торговлей даже если с запасом просчитать погрешности?
    С запасом вы все не посчитаете. Невозможно, например, учесть влияние ваших действий на будущую ситуацию в смысле реакции других участников аукциона на ваши сделки. Но я не это имел ввиду. Корректность методов выполнения тестов сомнительна в первую очередь в контексте цены. А поскольку код, который все это выполняет, увидеть невозможно, и внятного объяснения от разработчиков тоже как правило нет, непонятно, как и что можно корректировать на уровне АПИ. Лучше иметь свои исходники, по крайней мере править код можно. Если вы работаете с ohlc, питон наверное оптимальный вариант. Если тики, то с/с++.
    avatar

    теги блога Никита Рейхнер

    ....все тэги



    UPDONW
    Новый дизайн