mxticker

Короче пост в догонку про тестирование торговых алгоритмов

   Преамбула для информации. Я не только в бывшем трейдер и создатель торговых сервисов но и работаю в HFT фонде посему знаю что говорю.
Одной из моих задач есть создание системы тестирования HFT алгоритмов.
   Почему-то некоторые дебилы считают что тестирование на истории их алгоритмов пипец как увеличивает их надежность. На самом деле это полный бред. У нас в компании это кстати запрещено и кличут подгоняторами. Почему? Вот вам простешее решение.
Есть некий ряд и задача создать функцию его строящую. Ведь по сути именно это и есть торговый алгоритм. Если подходить совсем абстрактно.
Так вот — эту функцию построит любой первокурсник. Раскладываете ряд по тейлору или по фурье, далее следующее значение берете из полученной функции и вуаля! Алгоритм готов. Причем сделать это можно за полдня максимум. Алгодрочеры тратят на это годы, что бы подстроить параметры под алгоритм, работающий на истории — и он скорее всего будет работать хуже. 
   Понятно что тестирование на истории поможет только если сама идея заложенная в алгоритм верна — само по себе тестирование ни разу не панацея.
   з.ы. я кстати уверен что дебилы не поймут математический смысл написанного, а увидят лишь слово дебилы и будут продолжать писать дескать «автор если тебе надо 2 часа что бы написать выигрывающий алгоритм на предоставленной истории, то покажи стейтмент, открой фонд, заведи курсы и т.п.»
★3
54 комментария
Похоже, Вы реально не понимаете, о чем пишете.
Тот факт, что существуют ряды Фурье или ортогональные многочлены или вейвлеты или иные способы разложить ряд по какой-то системе функций, не сильно помогает прогнозировать ценовые ряды, прошел мимо Вас. Ибо то, что Вы написали, называется не прогнозирование, а интерполирование.
Вероятно, Вам встречались настолько неквалифицированные «подгонялы», что Вы смогли, совершенно ложно, убедиться в правоте собственной некомпетентности.
avatar
SergeyJu, похоже вы реально не умеете читать. Именно это я и написал — что большинство торговых алгоритмов интерполируют но не прогнозируют. И тестирование на истории вовсе не гарантирует что алгоритм прогнозирует будущее а не интерполирует прошлое (хотя не всегда бывает что тестирование это именно тестирование)
avatar
Ru-Ticker.com, если квалифицировано делать бэктестинг, никакой интерполяции не будет.
И мне, собственно, все равно, отчего Вы этого не понимаете и пишете глупости.
Хотя, конечно, бэктестинг не панацея, тут я согласен. Но если нет бэктестинга, остается только проверка алгоритмов в реальном времени. Что тоже не панацея.
avatar
SergeyJu, я не писал что не нужно тестировать.
я писал что тестирование само по себе не дает никакой гарантии.
научитесь читать уже
avatar
Ru-Ticker.com, в таймфреймах 1 тик и 5 минут предметная область задачи различная, соот-но и типы алгоритмов и способы их тестирования различные.
Не стоит разбрасываться такими словами как «дебилы»
Создается обратное впечатление.
avatar
Не устал в третьем посте подряд называть окружающих дебилами и ублюдками? На таких провокациях далеко не уехать. Даже в околорынке.
avatar
А к чему вы клоните то? Или просто занудно хотите всех вокруг пролечить и подписать на свои сервисы?
avatar
Alexand77, никакого двойного смысла нет. Действительно, все что я имею в виду — это те, кто считает что тестирование на историии панацея — дебилы
avatar
Ru-Ticker.com, ну а что дальше, какой смысл обозвать кучу незнакомого вам народа дебилами? Это такой способ самоудовлетворения?
avatar
Ru-Ticker.com, зачем ты слепым пытаешься объяснить что такое «красный цвет»??? о_О и что нельзя переходить через улицу когда он горит без всяких звуковых сигналов… глупостью занимаешься. Я тебя понял и полностью разедляю твою точку зрения именно поэтому недавно писал что забил на рынок всерьез и надолго (сейчас ломаю голову с концепцией экспертной системы на базе естественного языка). Лучше бы мне помог, там кстати многие подходы рынка применимы как ни странно (получение «найди того не знаю чего, получи то не знаю что» :) хотя «что» — должен подсказывать фрейм опыта-и интерактивное взаимодействие с пользователем). Глядишь толковый проект сделали бы, раз время есть свободное. Ты же давно понял — здесь нет ничего полезного для твоих целей. Пиар портала конечно хорошо, но ты себя тогда дескредитируешь оскорбляя потенцеальных клиентов. Да и сам понимаешь раз «биржа=жир раба» это разводилово, то будет текучка и зазывать на свой сайт придется постоянно — выхлоп минимальный траты времени максимальны
palka, я если честно не слишком верю в возможности математики для применений в чисто гуманитарной сфере. Слишком разные концепции и подходы. Пусть у кого то и получается но для меня темный лес.
avatar
Ru-Ticker.com, «гуманитарная специфика» это миф… генетики давно скооперировались с лингвистами, у них даже матаппарат сейчас совместно (буквально садится генетик и лингвист с программистом) разрабатывается. Забудь про «узкие специализации» новые технологии требуют то что считалось «между двумя стульями и там нет ничего»… оказывается вся суть как раз в этом месте и нет там никакого деления «один стул» и «два стул»…Мир непрерывен — человечество до этого удобно разбило его на дискретные части, которые на том этапе могло осмыслить, теперь когда горизонт знаний расширился а заблуждения «про китов и бегающих в проводах человечках» испарились происходит смена парадигм. мол «есть лингвистика» и «есть математика» а где-то вообще далеко и не связанно «генетика» — чушь!… все прозрели и поняли что слишком аппроксимировали реальность а после фракталов вообще по иному увидели мир. Почитай мои последние 2 поста. Эволюция генов и эволюция языка — это почти одни и теже процессы только идущие с разной скоростью (как графики разных таймфреймов но подобных процессов)… и в разных пространствах (производные разных систем отнюдь не простых по результатам своей деятельности но в принципе простые по механизмам «мутаций»)
palka, ты в курсе что например оккультные науки серьезно изучают проблему языка? Вот и свяжи их с математикой
avatar
Ru-Ticker.com, одно дело ассоциации и «пафосный фон» другое дело «моделирующие процессы» (вроде моделирование атмосферных явлений где по идее вообще полный хаос)… Я лично пока вижу задачу в моделировании виртуального пространства (этакий 3D мир..) в котором будет своя простая пока что физика и в него через слова, картинки, модели помещать предметы описание которых будет словесным… а вот «размышление о чем идет речь» система должна принимать моделируя в этом пространстве и «задавая вопросы и изучая не знаю что не знаю как»… по сути это постижение ребенком нового не знакомого как физически так и когнитивно мира… его законов, закономерностей.
palka, понимаешь познавательный моделей много и мат метод лишь один из них. честно говоря над философией языка ломаю голову со студ. скамьи и подходы интересны самые разные… Бродский считал что через язык себя выражает Время. У оккультистов своя теория с передачей энергии через знаки. Я не говорю о том что проблема языка одна из ключевых современной философии и лежит в основе таких течений как постмодерн. Щаз мне мат подход кажется несколько наивным на фоне других… математика которую я знаю не слишком заточена под это. Ну на начальном этапе конечно восторг но дальше пробуксовка
avatar
Ru-Ticker.com, ты пойми :) процедурного эволюционного программирования (а собственно упрощенно это и есть интеллект) еще нормального нет… так же как собственно и 100% зарабатывающего робота… а это тождественные задачи!!! (торговый робот с самонастраивающейся по причине случайности процесса движения цены логикой… и интеллект который является тем же роботом но анализирует сигналы рецепторов и свой внутренний опыт — механизм вывода новых знаний/функций/целей)

На бирже пока все идет за счет преимущества скорости (посути технический инсайд) и буквально инсайда + «поломки бирж» (наглый полуприкрытый мухлеж)… то есть если твой робот имеет меньше скорость чем дядей — ты проиграешь, и второе — тебе никто не даст если ты не дядя такую инфраструктуру где ты буедешь зарабатывать. БИРЖА — ЖИР РАБА… ЖИР ЛОХА… ты тратишь жизнь впустую. Я потратил 4 года… но я преобрел уникальное мировоззрение и множетсво знаний изучая множество научных дисциплин. Ты сейчас снова меняешь время на деньги при этом делая систему которая посути уже мертвец. и как только трансформируется биржа или ее закроют, то весь твой труд никому будет не нужен. Но как я сказал — программисты роботов это уникальные люди как в плане психики так и в буквальном смысле «пощупавшие своими нейронами не один год случайные процессы»… то есть ты посути все это время изучал поведение 100-тен нейронов (если считать котировки графиками их функций)…
Ru-Ticker.com, ведь ты же по сути «двумерным» моделированием занимаешься… что есть мир? ты сам в посте ответил — случайный процесс. Ты просто выхватываешь одну его сущность — некий график (это параметр некоторого пространства) связанный (кстати не важно даже что с ним) с человеком. Ты пытаешься в реальном времени (что очень даже правильно! :) и по другому никак)… создать по сути систему обратной связи на поведение случайного процесса (интеллект это максимально сложная система реального времени именно такого типа — система ответа на множественные случайные процессы протекающие одновременно в пространстве носителя интеллекта)… И задача — «прагматично среагировать на случайное»… но ты моделируешь лишь одну цель — получить максимизацию одной функции… Человек же выполняет одновременно (в том числе через подсознание) множественное моделирование и реагирование на разные случайные функции активации посредством разных квази случайных функций ответа… чем тебе не аналог ХФТ?! Только что является целевой функцией в каждый квант времени — решается «интуитивнО» (не знаю как по другому описать выбор :) он очень сложно формируется в силу сложности мышления)
palka, да хер его знает что есть мир случайный или нет
avatar
Ru-Ticker.com, «случайный» = «очень сложный», сложность заключается в проблеме «от какого взмаха какой бабочки начнется ураган»…«с какого малого шага начнется длинный путь» потому как если мир это мультифрактал, то зарождается он в микропространствах и бешеных частотах или наоборот сверх больших пространствах и сверх медленных частотах. «перегибы» создаются в тех местах где когнетивное восприятие человека слепо. Ты же видишь как слеп смарт к тому что ты осоознал. Так и 100% людей слепо к тем «озарениям» или же «вдруг выскочившим из подсознания мыслям»… никто не может объяснить почему подумал в конкретный момент ИМЕННО ТАК и никак иначе, почему провел рукой в воздухе именно по такой уникальной траектории а не на 1=10 сантиметров правее. Но если в этих точках бифуркации природа «непрерывна» как взмахи птицы, то человек сделавший самолет может апроксимировать эти точки (само собой с искажением разума искусственной системы)… и ввести буквально случайное или вычисленное поведение… а дальше — все по накатанной схеме рисовать тенденцию макрофрактала который уже попадает в когнитивный диапазон восприятия и… размеров/частот/продолжительностей
Ru-Ticker.com, неужели ты не понял что «программисты торговых роботов» это ребята строящие рельсы системы «искусственный интеллект» с одного бока… с другого «программисты лингвистических систем»… с третьего бока «генетики» с четвертого «физики»..«биохимики» ..«астрономы»… все науки и наработки сойдутся в одной точке (но какое направление быстрее других объединит остальные — пока не известно… явных лидеров пока не видно) и будет получена в данной точке человеческого знания первая версия… потом будет выход в другое пространство, которое откроется благодаря этой первой версии, которая переосмыслит для человека то что он не может связать в своем мозгу… дальше пойдет синергия и сингулярность — взрывной рост технологий и покорение новых пространств/условий/материалов и т.д… так уже было с изобретением электричества, так было с изобретением интернета… так будет с изобретением сильного-ИИ… вот что будет дальше — «взмах бабочки»… все что угодно :) но точно не твои ХФТ роботы, так же как умер ажиотаж в шахматах, когда программа стала стабильно выигрывать гросмейстеров. Сильный ИИ просто убьет биржу.
а мне нравиццо

столько незнакомых слов, сразу видно

писал человек умный и культурный
михаил абанов, )))))))))))))
avatar
«Тестеры дебилы»

А кто те, которые свято верят в уровни Герчика? ))))
ьньн, я так и знал что комментаторы найдет в тексте для себя только одно знакомое слово
avatar
тебя баба чтоли кинула?
avatar
Никто не отменял кроссвалидацию, форвардный анализ и нормально тестирование со скользящим окном.
Только ни в одном софте этого нет. Или я не видел. Весь существующий софт заточён под оверфиттинг. Такие дела.
avatar
nbvehrfr, а самому написать?
avatar
Завидую я Вам, че слово, завидую.
Чувствуется, в компании у вас подобрались ребята молодые, неглупые, полные энтузиазма. И Вы тоже молоды и полны энтузиазма. Завидую!
Ну а некоторый максимализм суждений пройдет с годами. Взамен появится геморрой, суставы… и мудрость.
Если выбирать, я бы выбрал молодость! ))))))))))))
avatar
Это провокация или осеннее обострение?
avatar
то правильная точка зрения.

Только она неправильно доказана. Вы говорите что очень легко найти закономерности просто разложив ряд по фурье. А надо вот придумать теорию а потом ее потестировать и вот он — грааль. При этом обвиняете алготрейдеров что они сами вот этим зачастую и занимаются.

Это все вид с боку — как искать — копая в данных автоматом или придумывая и проверяя теории.

А вот проверять в случае выдумывания на истрии стоит — это единственное что может вам подсказать хороши ваши предположения или нет. Но не по шкале заработаете ли вы на этом или нет. А по шкале — если бы это предположение пришло вам в голову раньше.
avatar
gluhov, я не говорю что не стоит. я говорю что на 90% т.н. алготрейдеры проверяют и говорят «я в домике». А на самом деле нихрена. Условие необходимое но недостаточное.
avatar
Похоже на набор несвязных фраз. Может, вы написали робота, который сам пишет посты на СЛ? Если так, то его надо чуток доработать и протестировать.

Вот пишите:

но и работаю в HFT фонде посему знаю что говорю

У нас в компании это [тестирование] кстати запрещено и кличут подгоняторами.

Есть некий ряд и задача создать функцию его строящую

Но, вообще-то HFT сильно завязано на практику исполнения заявок. Место заявки в очереди, и так далее. А тут вообще не понятно, как ряды присовокупить. Ну и какбы ордерлог, или тот же Level2 тоже в ряды плохо укладывается. Хотя, ценовые ряды тоже имеют место в HFT. Также, не тестируя стратегии в принципе, можно банально перепутать оффер и бид местами.

Хз, конечно, чем ваш фонд занимается, может исключительно вы***вает микросекунды из FPGA и канала между Лондоном и Москвой, и в стратегиях сложнее географического арбитража не нуждается. Но если так, то 99.999% посетителей СЛ этот подход в принципе будет мало интересен и полезен.
avatar
Lafert, запрещено тестирование в стиле подгонятора. само тестирование оно есть конечно.
avatar
конечно у нас есть платформа тестирования роботов более того я ее сам пишу. дело было как. я говорю а давайте я вам трейдерам кнопочку для бачтестинга сделаю стратегии тестировать. мне говорят ни в коем случае. если стратегия сразу не заработала то в сад. а так параметры подобрать что бы оно на всей истории работало много ума не надо. такие дела.
avatar
По рядам — ну это был просто пример. Понятно что способов написать подгонятор миллион. И ряды возможно не самый оптимальный
avatar
Ru-Ticker.com, вообще, если пофилософствовать, то человек-разработчик стратегий тоже представляет собой подгонятор, работающий по алгоритму, который, скажем, на С# выглядел бы как-то так

for(;;)
{
var strategy = CreateNewRandomStrategy();
if(BasicTest(strategy))
yield return strategy;
}

отличает только то, что у человека якобы есть логическое обоснование, а у машины его нет.

Но может, просто у нас слишком узкое виденье возможностей машины?

PS сам похвастаться стратегией, полученной исключительно подгонкой не могу, хотя и создавал для этого инструменты (включая бектест на ордерлоге, учитывающий очередь заявок). Но лично я склонен думать(и имею причины так думать, хотя и не могу тут распространяться о них), что просто не туда копал и недоработал.

PPS задумайтесь об одном примере. Одни ребята сделали скоринговую систему для выдачи кредитов в банке. Она автоматически создавала правила по историческим данным (вектор признаков + вернул/не вернул). И некоторые из этих правил, которые система нагенерила, в итоге оказывались такими, что имеют очень четкое и логичное обоснование, только аналитики как-то до него сами не доходили, а увидевши, понимали, что вот оно, как мы раньше не додумались?
avatar
Lafert, ненулевая вероятность что подгонятор заработает на реальной дате есть. Но ведь дебилы считают что если подгонятор заработал то лаве уж в кармане.
avatar
из написанного Вами я понял только что я — дебил
больше никакой полезной информации в Вашем высере не обнаружено
avatar
Андрей Л, ну хоть что то полезное
avatar
HFT стратегии качественно протестировать на истории нельзя т.к. они сильно влияют на рынок. Видать отсюда и заблуждение по поводу тестирования.
А панацей и гарантий в этом деле в принципе быть не может.
avatar
ivanovr, от ликвидности тоже зависит. да и рознь они
avatar
Что-то вы в моих глазах все больше падаете как в профессиональном отношении, так и в воспитании.
Машковский Евгений, возражайте по существу. Опровергните тезис про разложение на ряды
avatar
Ru-Ticker.com, если взять N точек (условно баров) и построить по ним разложение в ряд с M<<N коэффициентами, и она покажет убедительно качество работы на M2~M точках (M2 должно быть достаточно велико, чтобы сделок было несколько десятков). То скорее всего вам удалось найти вполне рабочий вариант.
Правда если вы повторите это много много раз и в одном из множества раз найдется что-то рабочее на M и M2, то обольщаться не надо, с большой вер-ю получена подгонка.
Ничего личного, только статистика.
avatar
Ru-Ticker.com, Причем тут ряды вообще, надо искать функцию обобщения, а не аппроксимации!
Машковский Евгений, причем тут надо
я на пальцах показал что если робот работает на истории это вообще ничего не значит
avatar
Ru-Ticker.com, Так и дураку понятно! Алготрейдерам первым делом говорят, что переподгонка это зло, вон на искусственном интеллекте можно сделать сотню тысяч прибыльных сделок на истории и ни одной прибыльной на новых данных, так что вы не новатор! А вот зачем оскорблять людей дебилами не пойму?
Вот хороший пример из реальных s017.radikal.ru/i438/1510/a5/78b37638c2e9.png. Слева от вертикальной линии область обучения и проверки. Справа — то как стратегия работала после. Кой-что с нее удалось поиметь, но сейчас я ее временно выключил, посмотрю на восстановление. Ничто не вечно.
Изначально стратегия была получена путем перебора правил и настройки параметров генетическим алгоритмом. Ее «смысл» исследовать и не пытался.
avatar
ivanovr, какой занятный график. Ни на трендовуху, ни на контру не похоже. Впрочем, предположения о том, чего генетика нащупала, есть. Ломалась у нас серия стратегий схожим образом в 15-м году. В связи с тем, что смысл мы тоже обнаружить в свое время не смогли, остановили нафиг где-то в марте.
avatar
Пост, из серии:

— Вот за это я не люблю кошек.
— Ты просто не умеешь их готовить.

Понятно, что тестирование — это очень тонкий инструмент. Ведь элементарный перебор десятка параметров системы, основанной на пересечении двух скользящих средних, позволит найти «прибыльную» систему и на случайном блуждании с нулевым средним приращений. И совершенно точно, что предикативность этого результата для будущего — нулевая. Но..., есть куча методов, как избежать подобной переподгонки. Просто надо уметь отвязаться от оптимизации целевой функции доходность-просадка.
avatar
А. Г.,
а что, по Вашему мнению, должно быть целью перебора параметров/оптимизации? И где можно было бы прочитать про «кучу методов, как избежать подобной переподгонки»?
avatar
bealtrader,

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

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

И наконец на третьем этапе из неотсеянных на первых двух, отбираем лучшие по соотношению «доходность-риск» (второй параметр вариативен и зависит от предпочтений разработчика).

И последнее — это лучше делать отдельно для только лонг и только шорт.

Как классифицировать участки цен (!) по указанным критериям описано для произвольной выборки в любом учебнике или справочнике по матстатистике.

Забыл добавить: вначале до всех отборов выбираем такой параметр, как «проскальзование+комиссия».

И еще очень важное замечание: выше «цена» — это от приращения чего зависит наша прибыль или убыток, при нахождении в позиции. Например, для торгующих спред — это именно спред, а не цены отдельных активов, для торгующих опционы — это премия, а не цена базового актива и т. д…
avatar

теги блога StockChart.ru

....все тэги



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