Предыдущая статья о "Расчете дневного изменения цены"
Когда я писал прошлую статью (она была первой из цикла) я не предполагал, что читатели разделятся на 2 категории:
Те, кто верят, в алготрейдинг
Те, кто верят, что я шарлатан
Для обоих групп я напоминаю, что цель алготрейдинга - это увеличить вероятность получить прибыль от сделки.
Или же, как говорят в "теории игр" - сделать математическое ожидание от игры положительным.
Поэтому, предлагаю аудитории договориться о следующем:
Если ваш комментарий несет научный смысл, то пишите его под постом в Хабре.
Если ваш комментарий несет дискуссионный посыл, то прошу задавать его в специально созданном канале в телеге.
Собственно, здесь я перехожу к сути данной статьи.
SMA (Simple Moving Average, Скользящее среднее) - индикатор, основанный на подсчете среднего значения цены закрытия ценной бумаги.
Для тех, кто не знает что такое SMA, приведу алгоритм его подсчета:
Взять цену закрытия "close" ценной бумаги за период от t1 до t2 и отсортировать ее от t1 к t2.
Взять таймфрейм из первых N значений цены close.
Посчитать среднее арифметическое значение таймфрейма (simple average).
Сдвинуть таймфрейм вперед на одно значение (происходит moving) и выполнить пункт 3
Пункт 4 проводить до тех пор, пока таймфрейм не дойдет до точки t2
Отрисуем график SMA (N=20) для цены close акций Северсталь (тикер CHMF) за 27 мая 2021г.:
По графику видно, что SMA является сглаженной версией цены Close с временным лагом в 20 периодов.
Полосы Боллинджера (Bollinger Bands)
В 1980х годах Джон Боллинджер предложил рассчитывать не только SMA, но и STD (standart deviation, среднеквадратическое отклонение). Таким образом, мы будем видеть не только график изменения средней цены, но и ее волатильность.
Обычно, значения std устанавливают равным 2. В таком случае, с вероятностью в 95% следующее значение цены close будет лежать внутри полосы Боллинджера и только в 5% случаях оно будет выходить из этой полосы.
В тех местах, где цена close близка к нижней грани полосы Боллинджера, стоимость акций считается низкой. И, наоборот, если цена close близка к верхней грани полосы Боллинджера, стоимость акций считается высокой.
И тут у трейдера срабатывает чуйка: покупаем на низах, продаем на хаях (никак не наоборот).
Весь код с использованием полос Боллинджера привел на Google Colab
В следующей статье поговорим об RSI.
UPD:
Из-за большого количества негодования закрыл ноутбук на Google Colab. Открою код как только рейтинг у публикации станет больше 100.
Стратегия, основанная на полосах Боллинджера (по понятным причинам, я привел только часть этой стратегии в ноутбуке), за период с '2020-05-31' по '2021-05-31' на акция CHMF принесла:
1. Суммарный профит с учетом комиссий = 1.28
2. Средний профит от сделки = 0.0038
3. Стандартное отклонение среднего профиля = 0.015
4. Самое большой проигрыш = -0.045
5. Самый большой выигрыш = 0.052
6. Медианный профит от сделки = 0.007
7. Количество транзакций = 153
8. Количество успешных транзакций = 100
9. Количество неуспешных транзакций = 53
inferrna
Даже из вашей картинки следует, что после +-прибыльного скальпинга (75% навара с которого уйдёт брокеру в виде комиссий) последует что-то вроде
zohrabahundov Автор
Формально, цена не достигла верхней границы полосы Боллинджера, поэтому акции не продались и ушли на следующий день.
nullc0de
Можете выложить вашу статистику минимум за 3 года? С коэффициентом шарпа, сортино, с максимальной просадкой, с теоретической рассчитанной максимальной просадкой, количество прибыльных и убыточных сделок, прибыль, убыток, средняя сумма прибыли, средняя сумма убытка и т.д.? Сразу будет понятно какой вы учитель… А вам ранее давал же совет забыть про полосы болинджера, но вы не послушали меня. На смартлабе вас бы давно заминусовали…
zohrabahundov Автор
Как я уже писал в начале статьи: алготрейдинг - это система поддержки принятия решения, а не система пррнятия решений. Как минимум, классические алгоритмы не следят за новостями.
nullc0de
А что они без новостей не работают? И не меняйте тему, покажите вашу статистику, по одной и ваших систем)
zohrabahundov Автор
За период с '2020-05-31' по '2021-05-31':
1. Суммарный профит с учетом комиссий = 1.21
2. Средний профит от сделки = 0.0038,
3. Стандартное отклонение среднего профиля = 0.015
4. Самое большой проигрыш = -0.045
5. Самый большой выигрыш = 0.052
6. Медианный профит от сделки = 0.007
7. Количество транзакций = 153
8. Количество успешных транзакций = 100
9. Количество неуспешных транзакций = 53
Не посчитал:
С коэффициентом шарпа, сортино, с теоретической рассчитанной максимальной просадкой, прибыль, убыток, средняя сумма прибыли, средняя сумма убытка
inferrna
>1. Суммарный профит с учетом комиссий = 1.21
Просто купить 2020-05-31 и держать до 2021-05-31 было бы куда прибыльнее. Даже по индексу MOEX вышло бы около 1.35.
То есть, стратегия отстаёт от индекса.
То есть, если бы индекс у нас топтался на месте, стратегия дала бы убыток.
nullc0de
Могу сразу сказать, что стратегия убыточная, и минусовое математические ожидание. Вы попали в главную ментальную ловушку математического ожидания, в которую попадают все глупые новички, у вас количество успешных сделок больше не успешных. А все потому, что у вас нет системы риск менеджмента. И вам был вопрос выложить статистику минимум за 3 года. На дистанции в один год даже лудоманы могут зарабатывать благодаря дисперсии.
Voila2000
Это признак убыточной стратегии? Почему?
nullc0de
В 99% да.
При таких показателях, да:
Это убыточная стратегия, чтобы зарабатывать нам не надо иметь больше 50% положительных сделок, это самое первое заблуждение в которое попадают люди при знакомстве с трейдингом. Только система риск менеджмента, нам помогает заработать на неопределенности рынка, и снизить необходимый порог положительных сделок. Если соотношение прибыль к убытку 3:1 нам достаточно 25% прибыльных сделок, чтобы выйти в 0. С поправкой на дисперсию и комиссию брокера, чтобы нас сильно не шатало, где-то от 30%. При соотношении 4:1 нам достаточно 20%. Все это идет из формулы математического ожидания. Надо стараться минимизировать риск, и искать паттерны максимизации прибыли. Лично не признаю безрисковые системы(под безрисковыми понимаю стратегии которые не ограничивают риск, и не берут его в расчет потенциальной прибыли), в принципе есть рабочие из них, например арбитраж, но люди на них сразу могут влетать на огромные деньги… Поэтому умные даже арбитраж не торгуют в классическом виде. Плюс по статистике видно, что это теоретически рассчитанные данные, в реальности там будет заливалово конкретное. Могу такие стратегии сотнями делать, которые будут показывать красивые цифры и графики при теоретическом расчете на исторических данных за 2 года. По факту в первый же месяц сольют депозит.
Voila2000
Если не ограничиваться рассмотрением частника с маленьким депозитом и большой комиссией, то арбитраж вполне себе жизнеспособная история. Можно еще попутно спреды собирать. Или скажем торговля парами и тому подобными конструкциями.
Но вопрос был скорее о том, почему Вы не допускаете возможности существования прибыльной стратегии с большим количеством сделок с малой прибылью и малым количеством сделок с большим убытком?
nullc0de
А можно жестко залиться… Это чаще всего и происходит у плохих теоретиков… Как раз все наоборот, чем меньше у вас позиция, тем меньше вы оставляете после себя след. Чем больше позиция, тем лучше надо прятать объем, чтобы усложнить адаптацию и эксплуатацию вашей не эффективности. На классическом арбитраже люди заливаются, это в теории все хорошо, но если глубже копнуть теорию, даже в теории не все так замечательно. Не допускаю потому, что опыт, много стратегий проанализировал и разработал.
Voila2000
Да я только за, на свой опыт полагаться завсегда лучше.
А я на свой.
Starwalker
Зохраб, я придумал имя для вашей стратегии - "СливнАя". Не обижайтесь, но Bollinger bands так же как и RSI это прошлый век, причем буквально. Это НИКОГДА не будет работать на долгой дистанции. Если не верите, прогоните ее по истории хотя бы 2 года.
zohrabahundov Автор
Ты, вроде, адекватный.
Подскажи, плиз, что надо писать в статье, чтобы читатели восприняли цикл статей как обзор алгоритмов для алготрейдинга, а не как написание готовой стратегии?
Starwalker
Думаю в этом посыле и есть источник острых реакций. Вы рассказываете про алготрейдинг, формируете ожидания у аудитории, что он приведет к положительному мат. ожиданию и затем даете рецепт заведомо неработающих стратегий, да еще и подкрепляете его "заманухой" про 1.7% прибыли за день. "Но это не точно" уже не спасает ситуацию.
Возможно, стоит рассказать о простейших стратегиях, вроде вышеприведенных и уточнить, что работать они не могут, не будут и что любая попытка их использования приведет к обнулению депозита. И что просто вы их даете для целей обучения, как ретроспективное описание заблуждений прошлого :-) А так получается, что рассказали людям, что "2 + 2 = 4" а потом сказали "вот с помощью этой нехитрой стратегии сможете решать дифф. уравнения. Но это не точно"
Я просто немного сталкивался с бизнесом, занимающимся HFT (я сетевик по профессии, консультировал их по сетевой архитектуре в новой локации) и, так как в свое время немного пострадал от форекс-кухонь, стало по-человечески интересно узнать немного больше о трейдинге от явно успешных в нем людей. Вобщем получилась оказия и смог побеседовать за кофейком с их финансовым экспертом - спросил у него что в свое время я делал не так, выискивая свечные паттерны, смотря на "перепроданность" RSI и ловя лои в лентах Боллинджера? Почему мое депо улетучилось хоть и не быстро, но неумолимо? Вобщем я спокойно и неторопясь допил кофе, пока он не овладел собой и перестал смеяться, затем мне конкретно и на пальцах объяснили, что не нужно заниматься финансовой гомеопатией и что лучше бы я сходил в казино и потратил деньги с удовольствием и без нервов, а финансовый бизнес оставил бы экспертам ;-) И что "технический анализ", волны Эллиота, кластерный анализ, маржинальные уровни и ВСЕ индикаторы из MT и других консюмерских софтов иногда работают на истории, но никогда в реальности и долгосрочной перспективе. И что для разработки работающих стратегий используются не рисульки на экране, не восходящие клины, треугольники и бриллианты, а серьезные математические и статистические алгоритмы, которые ничего общего не имеют с вышеперечисленным. А единицы успешных трейдеров по графикам и свечкам это во-первых лютое везение или же нечеловеческая интуиция, во-вторых, и что скорее всего, это инсайд, но это до поры до времени, так как такие "умники" современными анти-фрод системами на биржах вылавливаются на раз-два. На этом мы закончили разговор, так как не было смысла расспрашивать дальше - он бы больше не сказал, да я бы и не понял, не мое это :-) За что купил, за то и продаю, просто решил поделиться мнением так сказать "из первых рук".
inferrna
У меня в этом плане тоже был интересный опыт: 0.28 эфириума, купленные в начале 2018 за 500$, бинанс, скрипт на питоне, работающий по статистике. Причём я даже не прогонял тесты по истории, правил наживую, если робот вдруг совершал неудачную сделку. В итоге с редкими ручными вмешательствами эти 0.28 были превращены в 0.7 и проданы за 200$ в марте 2020.
Вот и получается — с одной стороны х2, а с другой х0.4.
nullc0de
Еще как сливная. Выше он выложил липовую статистику, по которой сразу стало понятно, что товарищ заливной лудоман.
maxzhurkin
Шутками голоса не набрать
nullc0de
Меня вот это больше повеселило… ЧСВ у товарища зашкаливает…
maxzhurkin
Ну никогда, так никогда - как скажете
algotrader2013
Ок, давайте поговорим о научном смысле.
Как я понимаю, здесь намек на нормальное распределение. Но .во-первых, рынок не может быть распределен нормально, как минимум, потому, что цена не может сходить ниже 0 в большинстве ликвидных инструментов. Так что, необходимо рассматривать хотя-бы логнормальное распределение. Ладно, тут придираться не буду, ибо на малых таймфреймах разница незаметна.
Во-вторых, если попробовать проверить соответствие эмпирического распределения приращений цен реального рынка нормальному распределению, то можно увидеть, что эта гипотеза не выполняется. И причин много, - толстые хвосты, автокорреляция, да и, вцелом, "ненормальная" природа рынка.
Ну а, в третьих, предположим, удалось создать индикатор, который будет давать полосы, что с вероятностью 95% цена не будет их покидать. А заработать как? В момент, когда цена достигла полосы и можно по цене полосы зайти в сделку, событие уже наступило, и мы начинаем иметь дело с условными вероятностями. Соответственно, нам надо принципиально другая модель, которая их промоделирует.
Recosh
Уже готовые библиотеки есть https://github.com/mrjbq7/ta-lib и https://github.com/bukosabino/ta
Там и индикаторы Боллинджера и все что только не придумаешь. Грузил графики через тинька через openapi.
Ещё я научился переводить любой алгоритм из tradingview в python. Но это не дало прибыли ?. Биржа это лучший генератор рандома ?
mkovalevskyi
Ващемта, не совсем рандома. Если осилите обрабатывать (хотя б получать) весь массив событий в мире в реальном времени — будет все достаточно логично.
Но, тогда вас будут штрафовать за инсайдерскую информацию…
Voila2000
А если как банда из Редита, толпой атаковать виакомы, дискавери и байду?
Всех не переловят :))
mkovalevskyi
Всех — нет. Только тех у кого достаточно большой профит.
А толпы без лидеров, немножко не бывает ;)
GBIT
Пробовали backtrader? Делал на ней пару тестов стратегий, понравилось удобство. Хотя в процессе работы не обошлось без не очевидных моментов.
Интересно, почему репозитории таких библиотек последнее время (0,5-1 год) очень сбавили темпы в развитии?
Mox
Огромное спасибо за статьи, очень не хватало таких материалов.
Но я смотрю на всякие индикаторы — их просто прорва — например «Аллигатор Билла Вильямса» (фак мой мозг, ну и название). Осцилляторы всякие.
Есть ли место где вот настолько же детально можно про остальные почитать? Или ждать следующих статей из цикла?
nullc0de
ДА, в учебнике по математике, статистике и по обработке цифровых сигналов))) В основе индикаторов лежат простые математические принципы. Ничего гениального там нет. Индикаторы не работающие с объемом практически не работают. Поэтому опираться на них в принятии решений стоит только в последнюю очередь.