Всем привет. С вами рубрика «Данные говорят». Да, это первый выпуск в этой рубрике). В этой рубрике мы будем разговаривать с данными. Нет, я не сошел с ума. Данные будут говорить, а я только слушать. А с вами данные тоже разговаривают?
Погнали. Под данными в данном случае имею в виду числа, графики числовых рядов, таблички и аналогичное. В данном конкретном случае речь про числа, графики, таблички по итогам бэктестов стратегии (её болванки, или другими словами корневой идеи).
Если уметь слушать данные, то можно многое услышать – например, например, можно находить баги в коде стратегии, интересные идеи, резервы и т.д. Затягиваешь параметром диапазон значений, а число трейдов растёт? – Ну значит где-то баг. Если вслушиваться в данные – иногда можно идентифицировать не только факт наличие бага, но и его локализацию и характер.
Теперь конкретней про «корреляция графиков зависимости лонга и шорта от значения параметра». Наверно, по формулировке не очень понятно, о чем речь. Тем более, предположу, что так глубоко и в эту сторону копают не только лишь все. Поэтому поясню: допустим, я хочу понять роль параметра А в стратегии, самый простой вариант – не шевеля параметры Б, В, Г и Д, перебирать А с некоторым шагом. Вот мы пошевелили А, не шевеля Б, В, Г, Д. А теперь для каждого прогона посчитали, допустим Profit Factor (возьмем его условно за некий показатель, характеризующий качество стратегии) отдельно для лонговых позиций и отдельно для шортовых. Ну и построили два графика – значение PF в зависимости от А для лонга и значение PF в зависимости от А для шорта. Так вот, иногда/часто эти графики будут прилично коррелировать.
1. Отэксплуатировать на бэктесте подмеченную ранее на одной неликвидной бумажке закономерность. Done.
2. Запостить для галочки результата бэктеста с растущей эквити. Done.
3. Собрать под постом комментарии вида: «почем робот?», «а ты результаты реальной торговли этого алгоритма покажи», «ну и чё, небось инвесторов зазываешь?», «фи, у меня вагон таких и даже получше». В работе.
4. ...
...
Ладно, если что пост полушуточный. Но закономерность реальная. Интересный кстати челлендж замутить экзекьюшн для неликвидной бумаги, чтоб потом не писали: а чей это робот свечу нарисовал на 25% выше рынка?
Кстати, кто-то торгует алгоритмически слабо-ликвидные активы — ну там с дырявыми стаканами и т.д.? Там же роботы точно есть, может это, конечно, маркетмейкеры просто, но может ведь и нет.
Есть ли смысл покупать торговых роботов? — Нет.
На этом, в принципе, можно было бы и закончить пост. Но расшифрую.
Для обоснования буду использовать модель воронки, сознательно не буду использовать никаких цифр, если интересно — сами подставьте. Просто не люблю писать проценты и вероятности от балды, лучше ничего не писать, чем такое.
Итак, погнали. На рынке имеется некоторое кол-во торговых роботов, которых можно приобрести, а теперь давайте прикинем, велики ли шансы заработать на этом мероприятии (на покупке, не на продаже :))) ). Далее идут этапы/слои/фильтры, отсеивающие роботов, которые не позволили бы вам заработать:
— Часть предложений — мошеннические (тут как везде, где есть хоть какие-то деньги — есть мошенники — возможно, при покупке вам даже ничего не пришлют).
— После отсеивания мошенников, часть товарищей продают заведомо неприбильных роботов (ими движет мотивации типа: а. он когда-то работал, мне трудно смириться с тем, что он больше не работаю, выжму из него ещё немного, продавая его; б. я протестировал на 150 инструментах, на 27 таймфреймах, на 5-ти комбинациях таймфрейм-инструмент робото зарабатывал — а-чё, не плюсовой, скажете? в. главное, красиво обставить продажу и чтоб купили, дальше хоть трава не расти, пох, что он минусовой).
Есть ли польза в общих фразах, теоретизировании, логических выкладках без жесткой привязки к практике – иногда да, иногда нет. Из за наличия этого «иногда да» узрите теоретический грааль!))
Алгоритмисты ищут закономерности, находят, со временем учатся отличать закономерность от случайности и подгонки на раз два, со временем, возможно, научаются понимать, как закономерности между собой взаимодействуют и почему, но сейчас попробую сформулировать максимально обобщенный теоретический грааль в трейдинге! – позовите ваших бабушек и дедушек к экрану.
У меня страсть к обобщениям.
Итак…
Есть некий финансовый инструмент, торгуемый на бирже – в данном контексте абсолютно не важно, какой именно инструмент. Что определяет движение цены – факторы и факты. Разделение на факторы и факты – полнейшая абстракция, на самом деле только факторы, просто на некоторых уровнях обобщения факторы становятся на столько низкоуровневыми, что называть каждый из них фактором становится некомфортно, поэтому можно вполне использовать термин «факты». Теперь чуть подробней)). Факторы. Сейчас будет аналогия. Не так, которая анонсирована в заглавии, но тоже аналогия. Корабль. С парусом. Корабль в открытом море и раскрыл (распустил? поднял? – не важно) свой парус. И есть ветра, разные, дуют с разных сторон, с разной силой, по разным причинам. Одни из-за разницы температур между сушей и землей, другие из-за разницы скорости остывания земли и воды, другие из-за течений, четвертые-десятые-стосемдесятпятые – по другим основаниям. Причины наличия ветров обуславливают их время действия, силу, стабильность, направление. И вот возвращаемся к кораблю. Этот парень отдан ветрам — то куда он плывет, зависит от того, какие ветра, с какой силой, с каких сторону дуют на него в моменте и дули какое-то время назад (создав ему инерцию). Какой-то ветер носит сезонный характер — дует 3 месяца в году, потом вообще не дует, какой-то дует всегда вечером и не дует утром. Существуют и порывы флуктуационного свойства в пределах одного ветра, они тоже влияют.
Всем привет).
В процессе углубления знаний языка C# пришла такая мысль, хочется получить обратную связь на предмет незамеченных подводных камней и аналогичного — буду благодарен.
Собственно: богатый арсенал языков программирования, а в частности C# — в т.ч. наследование и прочее, позволяют реализовать торгующий модуль какой угодно архитектуры, структуры, с нужными названиями классов, полей и методов. Посему, предположительно, можно написать такой проторговщик, который будет принимать код стратегий из Wealth-Lab как родной, без необходимости его менять, подгонять, править, дебажить, искать ошибки переноса и прочее. Все что я написал после слов «без необходимости» — как бы известные плюсы использования одного кода для тестов и торговли (наверняка, не все плюсы даже перечислил). Т.е. тут один раз качественно убеждаемся, что код интерпретируется полностью аналогично и всё — дальше Ctrl + C, Ctrl + V.
Или если можешь написать такой проторговщик, то проще и Велс свой написать и не иметь мозг?))
Что думаете? :)
UPD.: как это часто бывает, комментарии достаточно волатильно отходят от непосредственно затрагиваемого вопроса)), но все равно есть интересные мысли.
Ненавижу дебажить код.
Код стратегий, код чего угодно. По типу задачи (задача найти баг или оценить код на предмет: есть ли баги) – задача моя – т.е. я такое люблю – найди то, не зная что, так не зная как. Но блин – итак много задач, эти задачи они как бы не входили в твои планы, это как бы внеплановые задачи. Задача найти баги – плановая – но каждый конкретный новый баг – это внеплановая фигня – поэтому она напрягает. Это не задача, двигающая вперед, а задача, решение которой тебя возвращает в текущую точку развития после откидывания назад. Когда возникнет такая возможность, в первую очередь делегирую QA.
Больше меня напрягает искать баги когда нет формальных свидетельств их наличия. Код компилируется, трейды совершаются, но ты, блин, очень не уверен, что в таком объёме кода нет ни одного бага)). Приходится планомерно проверять корректность. Пожалуй я начинаю переходить именно к такому подходу: планомерно всё проверять, а не на финальном этапе вдруг выяснить, что «похоже, что-то работает не так как надо». Думаю, с опытом процесс будет всё системней, а как следствие данную систему можно оптимизировать и она будет протекать всё легче, всё менее затратней, всё приятней в конце концов.
Ещё хочется верить, что опыт приводит к уменьшению кол-ва ошибок, ну и повторное использование кода (читай, библиотеки) тоже.
Легко оставаться оптимистом когда всё хорошо, сложнее — когда всё похуже). Хотя нет — конечно же от человека зависит — кого-то заставляют шевелиться неудачи, кого-то воодушевляют его победы.
Смогли догадаться по эпиграфу, какая будет эмоциональная окраска поста?))
Я не особо доволен своими результатами, хотел, конечно, большего. Но если посмотреть объективно, отодвинуть загораживающие обзор недостижения крупных целей или значимых результатов, то в принципе всё вполне позитивно. Местами будет достаточно абстрактно написано — сорри, это мой стиль)).
1. Результаты торговли за год (любой), аккурат в районе нуля. Ну ± 1%, ну скорее минус конечно)). А вообще я так и не знаю, как считать %% дохода в случае если ты периодически довносил/довыносил)) — по-моему в любом подходе к вычислению % в этом случае будет достаточно высокий процент условностей — если я не прав — напишите в комментариях).
Комментарии: как торговал — особо никак — одну бумажку мучил весь год, инвестиционно, пытаясь перезаходить частью пакета по лучшей цене. Идея долгосрочная, то что в нулях остался на таком небольшом горизонте — можно сказать, везение.
Одна из формул). Ну и этот грааль не окончателен, скорее размышления на тему.
Составляющие успеха следующие:
— Иметь набор зарабатывающих алгоритмов.
— Иметь систему, увязывающую эти алгоритмы в единое целое таким образом, чтобы эффективность связки была оптимальной для данного набора.
— Иметь понимание, когда и почему зарабатывают эти стратегии.
— Уметь понимать, когда и почему зарабатывают любые стратегии.
— Уметь генерировать работающие стратегии.
Это если говорить о долгосрочных горизонтах, с более короткими горизонтами можно без части этих компонентов оставаться на плаву, но обвалиться когда сменится фаза рынка, или перестанут работать работавшие раньше алгоритмы и т.д.
Не судите строго. Не, ну а чё, не каждый же раз гениальные посты выдавать)))