Немного порассуждаю про уровень абстракции в стратегиях и про ООП как инструмент для этого.
Да, чтобы войти на пересечении скользящих и выйти по трейлингу на основе параболика ООП нафиг не нужен. Но я мыслю более реальными, «физическими» категориям. В смысле более живыми. Импульс, консолидация, да тот же тренд. Да, теоретически я могу использовать стандартные индикаторы, но у меня всегда индикатор – всего лишь отражение какого-то физического процесса. Но об этом я частенько упоминал, сейчас не совсем об этом.
Когда ты дата-майнишь, рисечишь идеи для стратегий тебе позарез нужно конкурентное преимущество. Перебирать и комбинировать сигналы разных индикаторов – это давно не работает. Конкурентные преимущества бывают разные: преимущества могут быть у бога математики или физики, у бога статистики и аналогичных наук, преимущества могут быть у лютых технарей, которые могут покорить космические скорости вычислений и исполнения.
Сейчас попробую выделить ещё один вид преимущества, ну или вернее ниша, в которой, как мне кажется, пасется не так много народу. Я говорю про нишу высокоуровневых абстракций.
Что я имею в виду, зачем это надо, при чем здесь ООП.
Всем привет. С вами рубрика «Данные говорят». Да, это первый выпуск в этой рубрике). В этой рубрике мы будем разговаривать с данными. Нет, я не сошел с ума. Данные будут говорить, а я только слушать. А с вами данные тоже разговаривают?
Погнали. Под данными в данном случае имею в виду числа, графики числовых рядов, таблички и аналогичное. В данном конкретном случае речь про числа, графики, таблички по итогам бэктестов стратегии (её болванки, или другими словами корневой идеи).
Если уметь слушать данные, то можно многое услышать – например, например, можно находить баги в коде стратегии, интересные идеи, резервы и т.д. Затягиваешь параметром диапазон значений, а число трейдов растёт? – Ну значит где-то баг. Если вслушиваться в данные – иногда можно идентифицировать не только факт наличие бага, но и его локализацию и характер.
Теперь конкретней про «корреляция графиков зависимости лонга и шорта от значения параметра». Наверно, по формулировке не очень понятно, о чем речь. Тем более, предположу, что так глубоко и в эту сторону копают не только лишь все. Поэтому поясню: допустим, я хочу понять роль параметра А в стратегии, самый простой вариант – не шевеля параметры Б, В, Г и Д, перебирать А с некоторым шагом. Вот мы пошевелили А, не шевеля Б, В, Г, Д. А теперь для каждого прогона посчитали, допустим Profit Factor (возьмем его условно за некий показатель, характеризующий качество стратегии) отдельно для лонговых позиций и отдельно для шортовых. Ну и построили два графика – значение PF в зависимости от А для лонга и значение PF в зависимости от А для шорта. Так вот, иногда/часто эти графики будут прилично коррелировать.
У хорошего мастера должны быть хорошие инструменты – у кузнеца – молот, у столяра – рубанок, у алготрейдера… — оптимизатор.
Выкатил новую версию.
Настоящий мужской оптимизатор конечно же должен быть консольным. Этот красавчик быстр – 10 лет 5-минуток на простой стратегии вместе с вычислением всяких там PF, RF 0,3 секунды. И это на одном потоке! (с многопоточностью, к слову, пока не смог подружить, но заложил такую возможность).
Бэктестер берет задания из csv файла и пашет. Т.е. на данный момент задания на оптимизацию задаются в момент создания файла с заданиями, решил поменять план оптимизации – меняю файл – меняется дальнейшая оптимизация. Т.е. по факту сейчас план на оптимизацию предустановленный, но легко прикрутить в дальнейшем оптимизацию с обратной связью на результаты предыдущих бэктестов. Меня всегда смущали стандартные оптимизаторы в этой части – где перебирается один параметр, или несколько строго итерационно, но я не мог задать явно другие алгоритмы перебора или в общем случае даже не перебора, а «изменения» значений. А здесь могу: т.е., могу за раз закинуть задания сразу на нужное количество гипотез, хочу посмотреть, как стратегия себя ведет между тикерам – не трогаю ничего, меняю только тикер, хочу проверить как ведет себя между тайм-фреймами – меняю только тайм-фреймы и т.д., т.е. минут за 5-10 во всемогущем экселе можно создать файл с заданиями для нужного набора гипотез. Потом когда бэктестер отработает – берешь эксельку и дата-майнишь данные.
Все-таки когда ты точно знаешь, чего хочешь, свой бэктестер это кайф! Нужна скорость, но не нужна какая-то функциональность – супер, не делаешь тормозящую функциональность, получая преимущество в скорости, интересует какая-то конкретная парадигма в оптимизации – отлично, пилишь архитектуру именно под парадигму, без оглядки на стандартные «лучшие практики», «модные мнения» и прочие «а вот я так делаю, а ты какую-то херню».
Более менее ООПшная прога получилась, так что есть надежда, что можно мяса при необходимости накрутить с контролируемым уровнем сложности и поддерживаемости.
Если вдруг кто-то собирался завидовать – не надо, вам бы не понравился мой оптимизатор. Думаю, он будет нравиться только мне! :)
В детстве очень любил классифицировать – всё и вся, выводить определения понятий – максимально стройные. Сейчас осталась только тяга к обобщениям, но не формальным моментам – сейчас мне не важны названия, ярлыки, классификации, только суть.
Когда мне говорят: Юзаешь индикаторы? – Фу какая мерзость – отвечаю обычно.
А ведь что есть индикатор, если обобщить – это одно или несколько значений, закрепленных за свечой. Т.е. то, что это что-то отрисовывается на графике, содержится в стандартных пакетах индикаторов – это несущественные признаки. Основное – то, что на каждой свече есть какое-то значение. А я постоянно что-то считаю на каждой свече – волатильность, ликвидность, рэйндж, ускорение, что-то ещё. И если с этой стороны посмотреть, то я тоже, получается, использую индикаторы((.
И практически сразу мой мозг решил (вот они плюсы гибкости): и чего, когда я думал, что я не использую индикаторы, я считал, что индикаторы зло, при этом, как оказалось, индикаторы я использую и то, что я использую – это добро. Как-то надо выходить из этой логической нестыковочки. И опять-таки (гибкий мозг даёт преимущества): я не начал оправдывать «свои» индикаторы и гнобить стандартные: возможно, дело не в том, какой индикатор, а в том, как его использовать, как его вплетать. Делаешь ли ты это бездумно, делаешь ли ты это просто и стандартно.
Как по мне, индикаторы надо использовать в паттернах. «Индикатор пересек» — конечно тоже паттерн, о это не то. Паттерны должны быть поинтересней, похитрее. А чтобы к таким паттернам прийти, желательно идти не бездумно, а с пониманием физического смысла индикатора. Само название «индикатор», этимология слова – индикатор нам показывает что-то, какой-то физический процесс, какое-то явление. Может и не показывать, индикатор ради индикатора (теоретически, такие есть, наверное).
Индикаторы заманивают своей простотой, вот вам линия, ребята, вот тут как бы очевидно как вы это просто можете использовать. Вот эта красненькая вниз наклонилась – покупайте, вот, ну смотрите же, ну глазами сопоставьте, видите: когда вниз обычно падает, ну? – всё поняли? – ну всё, давайте теперь торгуйте. На самом деле, нужно вытаскивать застревающие в этом болоте ноги и идти дальше по полю индикаторов (если уж ты на него вышел, что не обязательно). Рецепт: физический смысл + глубина рисёча + раскованное мышление.
В общем, я стал немного добрее к стандартным индикаторам и когда-нибудь с ними поиграюсь.
2*5 – 2 = 8
3*5 – 3 = 12
10*5 – 10 = 40
10 > 3 > 2
40 > 12 > 8
Это, я что хотел сказать-то своим «математическим обоснованием» (которое, конечно, больше шутка, но как иллюстрация – очень даже наглядно) — лучше развивать сильные стороны, чем вытягивать слабые.
Крутой программист – будь крутым программистом, нравится трейдинг, будь крутым программистом в трейдинге, можно стать алго-трейдером с упором на технику, на инфраструктуру – на скорости исполнения, на отсутствие багов, на удобство взаимодействия с системой и аналогичное.
Крутой коммуникатор – продавай, нравится трейдинг – продавай, обучай, находи нужных людей и добивайся от них того, что тебе нужно.
Крутой аналитик – будь крутым аналитиком, нравится трейдинг – стань алго-трейдером с упором на аналитику, заведи себе крутые аналитические инструменты, развивай этот плюс, твои стратегии будут самыми робастными, портфели самыми диверсифицированными, закономерность самыми крутыми. Не надо пытаться отъедать хлеб у «крутого программиста», ты его никогда не переиграешь на его поле. И не надо, направлять усилия туда гораздо менее эффективно.
Да, понятно, если говорить про алго, надо уметь разное – и кодить, и архитектуру приложения придумать и аналитить и т.д., но вот на что делать упор – тут уже выбор каждого. Играть всегда комфортней на своём поле. И это эффективней. Да, есть синергетический эффект, но и он не отменяет «специализации».
Если что, из приведенной неполной классификации я – «крутой аналитик».
Пирамидинг, мартингейл, усреднение. Не надо спорить о нюансах понятий. Идея этих штук какая: проседаешь — докупаешься, обычно нарастающим сайзом.
А ведь закрываться можно так же — не обязательно связке с аналогичным подходом к набору позы, можно и автономно. Когда ты открываешься — у тебя ограничению по капиталу, когда закрываешься — ограничение по размеру позы. Т.е., исходя из волатильности прикидывать шаг цены, с которым закрываться и агрессивность наращивания размера заявок. Если подумать, что при открытии что при закрытии, при использовании подобного подхода, надо ориентироваться на что-то типа характера распределения движений по выбранной системе входов, на хвосты и т.д.
В общем надо тестить, может кто уже?
Просто со входом многие так балуются, про выходы не слышал.
Привет.
В связи с этим https://smart-lab.ru/blog/521551.php топиком у меня вопрос (просто в тему, может там с налогообложением и никак не связано) :
а чем секция такая особенная, что брокеры по ней не выступают налоговыми агентами? — В брокерских калькуляторах хотя бы посчитать доход, сумму налога можно? — Хотя бы напомнят, что нужно уплатить налог?)
Сам никогда на Валютной секции не торговал.
Все чаще стал подмечать подобный расклад вещей, поэтому пора поведать о нём миру)).
Выделил 3 этапа в познании истины, вернее не всегда это этапы, в смысле кто-то почти сразу попадает на высшую ступень, кто-то не дойдет до неё никогда…
Уровень 1.
В голове каша, сложные схемы, модели, бессистемность, непонимание внутренней логики явлений и процессов.
Уровень 2.
Системность. Простые работающие схемы, модели.
Здесь следует, наверно, временно прервать перечисление и немного прокомментировать. Уровни 2 и 3 – это эффективные уровни – оно работает, оно эффективно. Если говорить о трейдинге, то переход на второй уровень – это построение своей простой, но работающей стратеги – пусть даже одной, в алго это, например, осознание того, что не должно быть больше 1-3 параметров в стратегии чтобы не было подгонки и т.д.
Попадая на второй уровень, человек из зоны хаоса где ничего не работало попадают в зону работающих моделей, поэтому многие остаются на этом уровне – ну как – ведь на первом ничего не работало, а на 2-м все очень даже.