Преамбула для информации. Я не только в бывшем трейдер и создатель торговых сервисов но и работаю в HFT фонде посему знаю что говорю.
Одной из моих задач есть создание системы тестирования HFT алгоритмов.
Почему-то некоторые дебилы считают что тестирование на истории их алгоритмов пипец как увеличивает их надежность. На самом деле это полный бред. У нас в компании это кстати запрещено и кличут подгоняторами. Почему? Вот вам простешее решение.
Есть некий ряд и задача создать функцию его строящую. Ведь по сути именно это и есть торговый алгоритм. Если подходить совсем абстрактно.
Так вот — эту функцию построит любой первокурсник. Раскладываете ряд по тейлору или по фурье, далее следующее значение берете из полученной функции и вуаля! Алгоритм готов. Причем сделать это можно за полдня максимум. Алгодрочеры тратят на это годы, что бы подстроить параметры под алгоритм, работающий на истории — и он скорее всего будет работать хуже.
Понятно что тестирование на истории поможет только если сама идея заложенная в алгоритм верна — само по себе тестирование ни разу не панацея.
з.ы. я кстати уверен что дебилы не поймут математический смысл написанного, а увидят лишь слово дебилы и будут продолжать писать дескать «автор если тебе надо 2 часа что бы написать выигрывающий алгоритм на предоставленной истории, то покажи стейтмент, открой фонд, заведи курсы и т.п.»
Тот факт, что существуют ряды Фурье или ортогональные многочлены или вейвлеты или иные способы разложить ряд по какой-то системе функций, не сильно помогает прогнозировать ценовые ряды, прошел мимо Вас. Ибо то, что Вы написали, называется не прогнозирование, а интерполирование.
Вероятно, Вам встречались настолько неквалифицированные «подгонялы», что Вы смогли, совершенно ложно, убедиться в правоте собственной некомпетентности.
И мне, собственно, все равно, отчего Вы этого не понимаете и пишете глупости.
Хотя, конечно, бэктестинг не панацея, тут я согласен. Но если нет бэктестинга, остается только проверка алгоритмов в реальном времени. Что тоже не панацея.
я писал что тестирование само по себе не дает никакой гарантии.
научитесь читать уже
Не стоит разбрасываться такими словами как «дебилы»
Создается обратное впечатление.
На бирже пока все идет за счет преимущества скорости (посути технический инсайд) и буквально инсайда + «поломки бирж» (наглый полуприкрытый мухлеж)… то есть если твой робот имеет меньше скорость чем дядей — ты проиграешь, и второе — тебе никто не даст если ты не дядя такую инфраструктуру где ты буедешь зарабатывать. БИРЖА — ЖИР РАБА… ЖИР ЛОХА… ты тратишь жизнь впустую. Я потратил 4 года… но я преобрел уникальное мировоззрение и множетсво знаний изучая множество научных дисциплин. Ты сейчас снова меняешь время на деньги при этом делая систему которая посути уже мертвец. и как только трансформируется биржа или ее закроют, то весь твой труд никому будет не нужен. Но как я сказал — программисты роботов это уникальные люди как в плане психики так и в буквальном смысле «пощупавшие своими нейронами не один год случайные процессы»… то есть ты посути все это время изучал поведение 100-тен нейронов (если считать котировки графиками их функций)…
столько незнакомых слов, сразу видно
писал человек умный и культурный
А кто те, которые свято верят в уровни Герчика? ))))
Только ни в одном софте этого нет. Или я не видел. Весь существующий софт заточён под оверфиттинг. Такие дела.
Чувствуется, в компании у вас подобрались ребята молодые, неглупые, полные энтузиазма. И Вы тоже молоды и полны энтузиазма. Завидую!
Ну а некоторый максимализм суждений пройдет с годами. Взамен появится геморрой, суставы… и мудрость.
Если выбирать, я бы выбрал молодость! ))))))))))))
Только она неправильно доказана. Вы говорите что очень легко найти закономерности просто разложив ряд по фурье. А надо вот придумать теорию а потом ее потестировать и вот он — грааль. При этом обвиняете алготрейдеров что они сами вот этим зачастую и занимаются.
Это все вид с боку — как искать — копая в данных автоматом или придумывая и проверяя теории.
А вот проверять в случае выдумывания на истрии стоит — это единственное что может вам подсказать хороши ваши предположения или нет. Но не по шкале заработаете ли вы на этом или нет. А по шкале — если бы это предположение пришло вам в голову раньше.
Вот пишите:
но и работаю в HFT фонде посему знаю что говорю
У нас в компании это [тестирование] кстати запрещено и кличут подгоняторами.
Есть некий ряд и задача создать функцию его строящую
Но, вообще-то HFT сильно завязано на практику исполнения заявок. Место заявки в очереди, и так далее. А тут вообще не понятно, как ряды присовокупить. Ну и какбы ордерлог, или тот же Level2 тоже в ряды плохо укладывается. Хотя, ценовые ряды тоже имеют место в HFT. Также, не тестируя стратегии в принципе, можно банально перепутать оффер и бид местами.
Хз, конечно, чем ваш фонд занимается, может исключительно вы***вает микросекунды из FPGA и канала между Лондоном и Москвой, и в стратегиях сложнее географического арбитража не нуждается. Но если так, то 99.999% посетителей СЛ этот подход в принципе будет мало интересен и полезен.
for(;;)
{
var strategy = CreateNewRandomStrategy();
if(BasicTest(strategy))
yield return strategy;
}
отличает только то, что у человека якобы есть логическое обоснование, а у машины его нет.
Но может, просто у нас слишком узкое виденье возможностей машины?
PS сам похвастаться стратегией, полученной исключительно подгонкой не могу, хотя и создавал для этого инструменты (включая бектест на ордерлоге, учитывающий очередь заявок). Но лично я склонен думать(и имею причины так думать, хотя и не могу тут распространяться о них), что просто не туда копал и недоработал.
PPS задумайтесь об одном примере. Одни ребята сделали скоринговую систему для выдачи кредитов в банке. Она автоматически создавала правила по историческим данным (вектор признаков + вернул/не вернул). И некоторые из этих правил, которые система нагенерила, в итоге оказывались такими, что имеют очень четкое и логичное обоснование, только аналитики как-то до него сами не доходили, а увидевши, понимали, что вот оно, как мы раньше не додумались?
больше никакой полезной информации в Вашем высере не обнаружено
А панацей и гарантий в этом деле в принципе быть не может.
Правда если вы повторите это много много раз и в одном из множества раз найдется что-то рабочее на M и M2, то обольщаться не надо, с большой вер-ю получена подгонка.
Ничего личного, только статистика.
я на пальцах показал что если робот работает на истории это вообще ничего не значит
Изначально стратегия была получена путем перебора правил и настройки параметров генетическим алгоритмом. Ее «смысл» исследовать и не пытался.
— Вот за это я не люблю кошек.
— Ты просто не умеешь их готовить.
Понятно, что тестирование — это очень тонкий инструмент. Ведь элементарный перебор десятка параметров системы, основанной на пересечении двух скользящих средних, позволит найти «прибыльную» систему и на случайном блуждании с нулевым средним приращений. И совершенно точно, что предикативность этого результата для будущего — нулевая. Но..., есть куча методов, как избежать подобной переподгонки. Просто надо уметь отвязаться от оптимизации целевой функции доходность-просадка.
а что, по Вашему мнению, должно быть целью перебора параметров/оптимизации? И где можно было бы прочитать про «кучу методов, как избежать подобной переподгонки»?
Первый этап отбора состоит в отсеивании всех параметров, дающих на участках случайного блуждания в ценах того таймфрейма, на котором строим систему, результат по доходности существенно лучше (!) суммарного смещения на этих участках.
Второй этап отбора состоит в выборе параметров с наименьшим «разбросом» доходностей на участках отдельно с положительной и отдельно с отрицательной корреляцией соседних приращений цен того таймфрейма, на котором строим систему.
И наконец на третьем этапе из неотсеянных на первых двух, отбираем лучшие по соотношению «доходность-риск» (второй параметр вариативен и зависит от предпочтений разработчика).
И последнее — это лучше делать отдельно для только лонг и только шорт.
Как классифицировать участки цен (!) по указанным критериям описано для произвольной выборки в любом учебнике или справочнике по матстатистике.
Забыл добавить: вначале до всех отборов выбираем такой параметр, как «проскальзование+комиссия».
И еще очень важное замечание: выше «цена» — это от приращения чего зависит наша прибыль или убыток, при нахождении в позиции. Например, для торгующих спред — это именно спред, а не цены отдельных активов, для торгующих опционы — это премия, а не цена базового актива и т. д…