Pull to refresh

Comments 44

У такого применения кросс-валидации есть принципиальный недостаток. Оно игнорирует факт изменчивости рынка — в частности то, что паттерны не живут вечно. Когда мы проводим обучение скажем на данных за 2014 и 2016 годы, а тестирование на 2015 — получаем завышенную оценку качества предсказания. Более корректная методика — всегда проводить тестирование только на данных, более поздних относительно обучающего набора.

Чтобы учесть факт изменчивости рынка нужно изменить пару строчек в коде, спасибо! очень правильная мысль, если предположить, что паттерны не существуют постоянно.
вы же не один паттерны используете. а действия других игроков на бирже влияют на котировки.
чем больше людей находят и используют их тем быстрее они будут умирать.
особенно если паттерны найдены по одному алгоритму.
такая теория эволюции дарвина для биржи.
встает вопрос, есть ли смысл вообще тестировать на исторических данных? (уточню, на каком периоде есть смысл тестировать)
Мне кажется, тут ошибка посерьёзнее вкралась, по кр. мере в части с линейной регрессией: шкалирование к вектору X применяется ДО кроссвалидационного кода, а не в pipeline который бы вызывался процедурой кроссвалидации, как можно было бы ожидать. В результате «знания» о полном наборе данных «утекают», и кроссвалидация может давать излишне оптимистичные оценки.
Поправьте, если ошибаюсь.
Необходим Python версии 2.7

Бог с вами, ещё бы Windows XP посоветовали использовать.

Берите любой, все равно пришлось все переделывать на мой любимый C#. Иначе очень все медленно. Питон хорош для описания модели и первичной ее проверки.
Чтобы было по-быстрее, можно воспользоваться PyPy )

Вообще, ваш код Python сильно от C# не отличается, по крайней мере с визуально-эстетической точки зрения. :)

В целом интересно, но мне кажется, что прототипировать можно быстрее. В Forex Club отдают архив с данными по валютной паре с точностью до минуты. PostgreSQL отлично умеет перелопачивать данные в одной табличке и переливать результат в другую. Теоретически, туда даже можно подтыкать Python, но мне всегда хватало PL/pgSQL. К этому безобразию можно добавить RapidMiner (правда, в бесплатной версии ограничение на 10000 примеров в выборке). В результате за пару вечеров ленивого тыкания удалось получить множество разнообразных способов подбрасывания монетки.)
подскажите алгоритм линейной регресии для pg/plSQL.
p.s. И логистической регрессии тоже.
Заранее спасибо
К сожалению, не подскажу, т.к. никогда не решал подобные задачи на уровне базы. Тут как раз разумнее было бы использовать PL/Py или PL/R. Я на уровне базы делал предварительную обработку данных, с получением средних значений, локальных максимумов и минимумов, разброса и тому подобного со скользящим окном. Потом уже из таблички причёсанных и дополненных данных делал выборку в RapidMiner и гонял их через разные модели от kNN до нейронных сетей. Как и писал выше, получил много разных способов подбрасывания монетки.
это если есть возможность выгрузить в рапидмайнер. Иногда нету ничего кроме самих данных, базы и SQL. И все в облаке где никаких рапидмайнеров. А гонять гигабайты в облако/из-Облака ради пары функций как-то странно.
Нет смысла проверять стратегию через счет брокера, так как очень долго нужно ждать данных для статистически надежного подтверждения или опровержения. Гораздо проще и быстрее будет прогнать ее на тех же исторических данных, но за более поздний (по сравнению с обучением) период. Счет у брокера вообще на этом этапе не нужен.
Forex кухни начали давать REST API. Это что-то новое :)
Да. Это замечательная возможность :)
Нет смысла проверять стратегию через счет брокера, так как очень долго нужно ждать данных для статистически надежного подтверждения или опровержения. Гораздо проще и быстрее будет прогнать ее на тех же исторических данных, но за более поздний (по сравнению с обучением) период. Счет у брокера вообще на этом этапе не нужен.


Как показывает опыт, это не работает. Сколько есть стратегий, прекрасно работающих на исторических данных за более поздний срок, но не работающих на реальном рынке.
Добавлю, что на более поздних (относительно обучения) данных проверять алгоритм нужно, конечно же, в первую очередь. А потом у брокера.
Я еще никогда не видел систематизируемых паттерном на графике цены одного отдельно взятого инструмента (о сотона, почему опять FX?). Зато подобные эффекты порой просматриваются в микроструктуре, т.е. в поведении участников на краях стакана. Но даже там против маркетмейкеров мало что можно сделать — разве что немного выкусывать у них маржу.
Простите, а что такое ask и bid в ваших свечах?
Соответствующие цены на момент закрытия свечи.
Три года посвятил изучению такой методики алготрейдинга…
Поверьте, тут рыбы нет!..
Факторов, влияющих на котировки в разы больше, чем предоставляют брокеры.
А обучение на основе частичных знаний ни к чему полезному не приводит.
Могу добавить, что у дирекционных алгоритмов при систематической торговле в текущих рыночных реалиях очень мало перспектив. Максимум, можно получить небольшой перевес на коротком промежутке времени.
А где, как вы считаете рыба есть? Есть способ покорить рынок?
Ну если, скажем, 10% годовых для вас приемлемый результат, то, варианты, конечно, есть. Вообще, на рынках довольно много нерегулярностей, но в деньгах, это может быть не очень много. И главное понять где, и в каких случаях, другие игроки рынка будут готовы отдать вам свои деньги. К теме статьи это, правда, никак не относится.
Один способ покорить рынок — стать маркетмейкером. Сразу льготные условия от биржы (дисконт или бесплатные транзакции, возможность открытия двунаправленных позиция, итп) и маржа течет в карман. Смотрите Robot Panda например. Но если серьезно, конкуренция бешеная.

Финансовая инженерия — это наука, ей нужно долго учиться чтобы хоть копеечку вынуть с рынка.
Это полный треш и угар. Особенно хорошо смотрится TWS вместе с темой про бинарные опционы ;)
А где, как вы считаете рыба есть? Есть способ покорить рынок?

Рыба внутри )
Способ, действительно есть. И не один.
А вот какой именно самый эффективный на текущий момент и что нужно для него сделать — это вопрос, который я задаю себе каждое утро ;)
А кто сказал, что будет легко?
Если модель плохо описывает реальный рынок, это проблема модели. Значит её нужно модернизировать.
Люди торгуют же десятилетиями по паттернам руками. И вполне успешно.
Полностью с вами согласен. Форекса, как такового рынка вообще нет… Есть сделки между крупными мировыми банками, которые двигают цены… Где стакан котировок, где заявки… Ребят о каком вы АПИ говорите…
«Нет никаких причин, чтобы кто-то захотел иметь дома компьютер», — Кен Олсон, президент и основатель «DEC»
«Летающих машин тяжелее воздуха не может быть» — Лорд Кельвин
«Да, кого, к чертям, интересуют разговоры актеров?» — реакция H.M. Warner (Warner Brothers) на использование звука в кинематографе, 1927 год
«Поверьте, тут рыбы нет!..» — Zoomerman
Заниматься трейдингом по паттернам из прошлых торгов это шаманство. Это тоже самое что предсказание погоды по времени, когда люди на работу приходят.
Почему бы не привязать робота к внешним показателям из интернета? Например, к новостям из банков.
Уже год работаем в этом направлении.
только учтите, что будете конкурировать с теми же банками, т.е. шансы на успех минимальные.
А есть возможность в подобных системах использовать аналитику экспертов? (те если есть аналитика за прошлый период где 10 экспертов, каждый день проставляют от 0-10 возможность того что курс будет падать или расти) И учитывать эти данные в поиске паттернов? (результат в этом случаи должен быть более устойчивый) И где можно найти подобную аналитику?
Если есть такие данные, было бы очень интересно посмотреть.
широко известный факт, что аналитики транслируют статус кво с лагом. тут тоже рыбы нет)
Вы планируете заниматься трейдингом? Или это прикладная задача к изучению алгоритмов машинного обучения?
Просто хочу поблагодарить за статью) как минимум помогла разобраться с Oanda
Sign up to leave a comment.

Articles