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