Избранное трейдера MrD

по

О возможности создания самонастраивающейся ТС (читать только алготрейдерам)

Доброй ночи, коллеги!

Начну, как водится, издалека.

Несколько лет назад на вопрос одной девушки в дискуссии про мой размер эквити я в шутку ответил «17 см» (в каждой шутке есть доля шутки). Это не привело к долгим дискуссиям, напротив, породило всего 2 каммента:
1. Один широко известный на СЛ писатель заявил, что у него 18 см (верю)
2. Другой, неизвестный мне писатель, заявил, что на СЛ встречается и 24 см, и даже больше, но без надобности об этом не пишут (тоже верю)

Несколько часов назад я запилил топик про частоту подстройки параметров ТС: Вопрос к алготрейдерам (smart-lab.ru)

2 человека ответили честно, у остальных (так получается) система сама подстраивается под рынок. Удивительно.

Я, вроде не самый тупой, но 25+ лет стремился к системе, которая настраивается сама (без моего вмешательства).
И только в прошлом году нашел семейство прибыльных ТС, которое зависит всего от 2-х параметров.
Оба параметра меняются медленно (адиабатически), так что значимо уплывают от оптимальных значений за 6-12 мес.

( Читать дальше )

Лайфхак QLUA для загрузки больших данных

    • 27 апреля 2023, 22:45
    • |
    • GOLD
      Популярный автор
  • Еще
Мой дорогой друг, если ты гоняешь бэктесты в QLUA, то тебе регулярно приходится загружать исторические данные. Как правило, это текстовый файл с тысячами строк в формате D,T,O,H,L,C,V:

20220915,090000,61420,61497,61406,61464,241
20220915,090100,61460,61476,61420,61451,160
20220915,090200,61444,61489,61436,61479,185

Осмелюсь предположить, что эти строки ты заливаешь в массив с помощью string.match. Это готовый парсер строки с разделителем. Работает достаточно шустро. Я на нем сидел пару лет.

Когда данных не много, такой метод загрузки не напрягает. Но когда за день 20-30 раз загружаешь сотни тысяч или миллион строк, то потери времени становятся невыносимыми.

Стал искать способ ускорить этот процесс. И он таки нашелся. Выяснил следующее:

Если строки в файле истории сконвертировать в такой вид (делается 1 раз):

table.insert(MyTable,{«20220915»,«090000»,61420,61497,61406,61464,241})
table.insert(MyTable,{«20220915»,«090100»,61460,61476,61420,61451,160})
table.insert(MyTable,{«20220915»,«090200»,61444,61489,61436,61479,185})



( Читать дальше )

Простой Грааль для curve-fitting

Добрый вечер, коллеги!

Все мы в разное время занимались подгонкой (curve-fitting) и всегда с разным успехом.
Главное в подгонке — убедить себя в том, что подогнанное решение будет работать и в будущем.

С этим есть большие сложности.

Субоптимальные алгоритмы для максимизации эквити можно легко получить на любом интервале. Вне зависимости от типа модели исполнения — маркетной, лимитной etc. Я специально пишу «субоптимальные», поскольку в полном объеме решение задачи максимизации эквити практически невозможно получить без квантового компьютера или чего-то в таком роде — такое решение неизбежно будет зависеть от огромного перебора данных. К счастью, приближения к идеальному решению получаются достаточно просто.

Тем не менее, все субоптимальные алгоритмы, максимизирующие результат эквити, начинают сразу косячить за пределами окна оптимизации. У меня не получилось побороть этот феномен, ну и я не слышал, чтобы кто-то в мире смог как-то его побороть.
Да, есть масса способов аутотренинга, вроде WTF WFT тестов, но это не более, чем способ убедить себя в успехе (IMHO).

( Читать дальше )

Простой способ отличить закономерность от подгонки

Добрый день, коллеги!

Хочу поделиться с теми из вас, кому это интересно, простой, но полезной фичей.

Не секрет, что все алготрейдеры в том или ином виде используют подгонку для получения рабочих стратегий.
Кто-то делает это в лоб и надеется, что полученный методом curve-fitting алгоритм будет работать в будущем.
Кто-то дополнительно делает WTF WFT тесты и отбраковывает плохих кандидатов.
Кто-то просто использует моделирование для подбора оптимальных параметров системы.
Во всяком случае мне неизвестна ни одна алгоритмическая ТС вообще без параметров.

Ниже я расскажу, как отличить пруху от собственной гениальности потенциально проявившую себя закономерность от простого результата подгонки

1. Тестируем алго в достаточно большом окне (лично я использую 500000+ баров)
2. Тестируем алго в окне вдвое большего размера (1000000+ баров)

Если результат вырос в 2 раза (примерно) — возможно, наша ТС эксплуатирует некую стабильную закономерность
Если в 1.5 раза (примерно, точнее в sqrt(2)) — скорее всего, это тупо результат подгонки

( Читать дальше )

Почему MA (скользящие средние) работают на рынке? Или не работают?

Добрый вечер, коллеги!

Хочу написать набор постов, которые убедительно покажут, что классический ТА на рынке не работает.

Поскольку надо с чего-то начать — попробую начать с МА.

Классическая идея заключается в том, что использование МА позволяет построить прибыльную стратегию.
Т.к. цена всегда возвращается к уровню МА.

АНТИТЕЗА:
Не цена возвращается к уровню МА, а МА возвращается к уровню цены.
Т.к. МА — не более, чем среднее от цены (арифметическое, взвешенное,… — пох)

ДЛЯ ЭСТЕТОВ:
Существуют процессы, которые возвращаются к своим средним (Орштейн-Уленбек, ...)
Но рыночные цены — это другое...

Что вы думаете по этому поводу, коллеги?

С уважение

Коннекторы Fix/Fast, Plaza2, Twime C# часть 2. Технические нюансы FIX, написание коннектора на C#.

В прошлой статье я рассказывал кратко, что представляет каждый из коннекторов. В этой статье я расскажу глубже про сам FIX, их семейство и как собрать коннектор под FIX для MOEX  на C#, а также расскажу про нюансы протокола, скорость и т.д. Погнали

Что такое FIX? 

Fix — это текстовый протокол общения, который был описан и придуман Робертом Ламуро и Крисом Морсатттом. Они создали протокол FIX для внедрения электронной передачи данных об акциях между компаниями Fidelity Investments и Salomon Brothers аж в 1992 году! Первая публичная версия появилась в 1995 году и во многом была прорывной для тех лет. Задумка гениальная и простая создать некий унифицированный вариант API, если его можно так назвать, для общения между клиентом и биржей. 

На этом история заканчивается и мы переходим к версии FIX 4.4, которая дожила до наших лет. 
Fix общается посредством текстовых строк, которые собраны определенным образом со специальными полями. 

Вот пример строки, которая отвечает за отправку ордера. Также есть другие виды сообщений в виде строки (входящие, исходящие). Logon (подключение), отклик о выставленной заявки (Execution Report), отправка ордера (Single Order) и т.д.  Было разработано огромное количество полей, чтобы FIX был универсален для любой биржи.

( Читать дальше )

Как выглядит идеальная эквити?

Добрый день, коллеги!

В самом деле — как должна выглядеть идеальная эквити?

Желательно без картинок (хотя они приветствуются) и с минимальным обоснованием.

С уважением

Варианты прямого доступа к Московской Бирже 2023

В продолжение  темы, много лет спустя
smart-lab.ru/blog/310157.php

Наша МосБиржа чудотворна во всех смыслах этого слова, и  обладает невероятно мощными  технологическими штучками для  алги!

Для  начинающих есть плаза2 ФОРТС  через тырнет,  или более модные  штучки на все  рынки  через VPN.

Ну а дальше, как  обычно,  колокация! И тут биржа молодец! На любой  вкус предлагает Блэкджек.
1 Колокация стоит денег, биржа хочет взять за малюсенький 1 юнит, с блоком питания  до 500 Вт включительно,  всего ничего 24 к  рублей  в месяц.
2 Когда мы  наш чудесный юнит разместили, нам  нужно кабель купить для доступа  к  бирже,  обычная  оптика  10 гигабит. чтобы получать маркетдату, и  отправлять наши транзакции,  всего за 60 к  в  месяц.
3 Ну и чтобы как то дружить с  нашим юнитом, управлять им, смотреть и  тд тп,  необходимо на  юнит подключить интернет. Всего ничего, 2400 руб за 1 мегабит скорости.

( Читать дальше )

Коннекторы Fix/Fast, Plaza2, Twime C# часть 1. Подробности работы, стоимость и т.д.

Приветствую.

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

1. На текущий момент Twime является одним из самых быстрых, современных коннекторов к бирже, но есть некоторые нюансы. Московская биржа это не только срочный рынок, но также и фондовый и валютный рынок. 

На картинке мы можем увидеть, что количество звеньев у Twime минимальное.



И вот тут выходят нюансы :) 

Срочный рынок стоит в месяц 4 000 р./месяц, а если вы захотите торговать на фондовом или валютном, то вам придется уже платить 30 000 р. в месяц.  Также отдельно стоит сказать, что Twime — это только работа с ордерами. То есть никакие маркет данные отсюда вы также не сможете получать, а это означает, что вам также понадобиться еще и Fast подключение для маркет данных (об этом чуть позже).

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

( Читать дальше )

Странный феномен в рыночных ценах

Добрый день, коллеги!

Давеча уважаемый wistopus задал вопрос — почему я перестал публиковать в своем блоге посты по рыночной математике?
Причина банальна — их мало, кто читает, мало, кто обсуждает, зато полно срача в камментах.

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

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

Начнем с моего любимого тестового кирпичика — реверсивной системы, основанной на линейном индикаторе. Точнее:
Пусть X(0), X(1), ..., X(N) — последовательность рыночных цен
Пусть D(1), ..., D(N) — последовательность их приращений D(I)=X(I)-X(I-1)
Пусть L(1), ..., L(n) — коэффициенты линейного индикатора
Сам индикатор — это Ind(I)=знак(сумма(L(J)*D(I-J)))
Если индикатор положительный — покупаем, отрицательный — продаем, ноль — пофиг (просто поверьте на слово, что ноль будет встречаться редко и на результаты не повлияет, лично я переопределяю функцию ЗНАК, чтобы она никогда ноль не выдавала. Самые щепетильные могут при нулевом индикаторе ничего не делать, т.е. сохранять предыдущую позицию).

( Читать дальше )

....все тэги
UPDONW
Новый дизайн