Итак прежде всего, перед началом торгов вспомогательный софт должен помочь определиться с выбором позиций на которых стоит торговать. После чего следующим вопросом на который должен помочь ответить этот софт будет: по какой стоимости покупать? И это уже постепенно переводит программу помогающую разобраться в исторических данных биржи в сигнального бота … который должен уже будет ответить на 3 вопроса: что и по какой цене покупать? Что и по какой цене продавать? Появились ли новые выгодные позиции?
То есть помимо вывода отчета по историческим данным, в первую очередь потребуется хотя бы рассчитать предполагаемую цену на следующий день торгов. В этой части я попробую обойтись минимумом матана, выбрав для реализации простейший алгоритм прогноза временных рядов: Linear Regression.
Введение
Как я показывал в прошлых частях, на рынке облигаций с выбором позиций очень непросто - позиции с длинной дюрацией уже который месяц под угрозой убытков норовят превратить из спекулянта в инвестора. А потом незадачливый инвестор уставившись на счет посчитает, что эти облигации уже который месяц падают в цене со скоростью в 2-3 раза превышающей выплаты по ним купонов и все что было выиграно на рандоме на акциях - проиграно, а брокенский счетик, если продолжать держать и будет сохраняться экономический спад уйдет в -4-15% годовых.
Пока наиболее вероятно лишь то, что время сохранять 16% годовых на 3-14 лет в облигациях еще не пришло.
Новые позиции:
![](https://habrastorage.org/getpro/habr/upload_files/927/dd2/3d4/927dd23d42abc01003ce24e825de1468.png)
Итак судя по графикам на рынке облигаций можно вкладываться в дюрацию не больше года. При большей дюрации есть определенный риск не вытянуть спекуляцию и по вашему выбору либо долго ожидать роста либо принять небольшой убыток.
Табличка прибылей и убытков в процентах годовых, ситуация вроде за последний месяц немного улучшается, но рисковать со спекуляциями лучше не превышая 2х годовую дюрацию.
![](https://habrastorage.org/getpro/habr/upload_files/09c/76e/3a9/09c76e3a9d69c860b4132288d3ddcee7.png)
Пересчитал последнюю колонку в падение за 10 дней. Если облигации с дюрацией в год с декабря потихоньку растут, то со средней дюрацией теряют 0.3-0.4% за 10 дней, что также сопровождается кратковременными падениями на 1.3% на 9 дней.
![](https://habrastorage.org/getpro/habr/upload_files/79f/f94/1f5/79ff941f56fac8e208634bf601517827.png)
Облигации с большой дюрацией чередуют падения на 1.8-1.9% с периодами более плавного спада в 0.7-0.9% в 10 дней.
Немного матана для продвинутых пятиклассников: линейная регрессия
Как сказал Джесс Ливермор: "Для игры на бирже достаточно 4-х классов школы", поэтому постараюсь сильно не усложнять…
Простейшим способом предсказать следующее еще не наступившее значение временного ряда - это использовать линейную регрессию. Ее можно представить графиком функции:
y = ax +b
Где y значение следующего искомого значения временного ряда, х текущее значение временного ряда, по которому мы будем предсказывать у. А а и b параметры прямой от которой равноудалены точки на scatter x y
![](https://habrastorage.org/getpro/habr/upload_files/223/b20/bc3/223b20bc3e032c2ac8821bb50587bc10.png)
Первое что бросается в глаза это не линейная зависимость облигации с дюрацией по 2038 год, от облигации по 2024, второе - это параболическая зависимость 243 от облигаций со средней дюрацией на интервале значений примерно от 100 до 95 и немного меньшая зависимость 243 от своих предыдущих значений на интервале 101-94. Таким образом можно сделать вывод, что точность прогноза можно увеличить уменьшив временные ряды до даты когда они стали ниже 90 и введя в формулу 2 дополнительных переменных в которые будем подставлять курс 26219 и 212 облигации.
То есть формулу линейной регрессии можно будет расширить до:
y = aX1+bX2+cX3+Bias
где Х это курсы 243 219 212, а y цена 243 на следующий день…
И второй небольшой нюанс, точность предсказания можно будет повысить убрав из расчета первоначальные даты где курс облигации был выше 90, смотрим на первый график в разделе новые позиции, это будет примерно там, где 212 и 219 снизились до 92 и 86.
Если вам немного непонятно почему на первом графике линия снижается, а на остальных возрастает - это потому, что 222 с короткой дюрацией и их курс растет, а курс со средней и большой дюрацией падает. Отсюда и разный наклон графиков: коэффициент а на графике с лагом стремится к 1, а на 219 где то ближе к 1\3 ( (92-85)/(90-69))
![](https://habrastorage.org/getpro/habr/upload_files/7ac/b2a/bae/7acb2abaee70bcbe238134d00d5e0ee2.png)
Итак переместив дату начала графиков на 2023-10-13 мы избавились, от большей части неточностей и параболических зависимостей, а также появился вопрос: не поможет ли нам в прогнозах 4 переменная? и будут ли прогнозы точнее если при этом перенести старт предсказаний на дату когда 243 упали ниже 80? ( при этом зависимость 222 и 243 выглядит намного ближе к линии регрессии) … А это нас приводит к:
Еще немного матана: средняя абсолютная ошибка.
Таким образом, мы в наших прогнозах столкнулись с несколькими версиями формирования данных для предсказания: как в плане добавления к ним курса еще одной облигации, так и к неясности с какой даты лучше стартовать прогноз - поэтому нужен инструмент, который нам наглядно посчитает, насколько один прогноз точнее другого.
Наиболее наглядным для использования будет mae, это просто сумма модулей разности между реальной стоимостью облигации и прогнозируемой на исторических данных, разделенная на число дней за которые разность была просуммирована:
В названии колонок отмечено на скольки днях собирались тренировочные данные, в названии рядов для скольки последних дней считалось mae.
![](https://habrastorage.org/getpro/habr/upload_files/12e/cab/d4b/12ecabd4b1421635f102f4b6f33503fd.png)
У 222 мы видим ухудшение точности предсказаний на 10 дневном интервале - в это время на графике после 2024-07-15 остановился рост акций.
У 234 за последние 10 дней график выписывал странные кульбиты, чем было видимо и вызвано увеличение точности предсказания за последнии 15 и 20 дней
У 219 последний месяц полтора отмечается отмена более резкого падения и возвращение к более типичному для него тренду
При остановке тренда по росту облигаций, более точные данные по прогнозу 222 за последние 10 дней, удается получить, если уменьшить число тренировочных дней до 50 или 100, и в тренировочных данных вместо 222 разместить облигации во флате 234 и с самым резким падением 243
![](https://habrastorage.org/getpro/habr/upload_files/8a6/1b9/34e/8a61b934ed43504a637f78f33445867c.png)
Возросшая с уменьшением количества тренировочных дней, точность на 10 дневном интервале mae у 222 связана с тем, что из прогнозов выкинули 222. Следовательно при обучении на коротких 50-100 дневных интервалах можно столкнуться с ситуацией, когда данные по стоимости предыдущего дня той же самой облигации не настолько важны, как данные по другим облигациям
![](https://habrastorage.org/getpro/habr/upload_files/b35/37b/9f1/b3537b9f17de75f2c20117fcd92be8bc.png)
Как результат мы видим, что с увеличением дюрации акции растет абсолютная ошибка, то есть нарастают колебания цен.
![](https://habrastorage.org/getpro/habr/upload_files/23b/64b/587/23b64b58750dc01a3921736611fd141d.png)
212 чем меньше тренировочных дней и чем меньше предсказанных дней, тем точнее предсказания: за последнии 50 дней на графике было 3 падения и 2 роста - и линейная регрессия плохо работает с периодическими колебаниями.
243 в последнии полтора месяца стали замедлять угол падения, а после объявления новой ключевой ставки снова резко упали, поэтому с уменьшением предстазанных дней точность предсказания стала падать
Причем у 243 из-за изменения тренда точность предсказаний упала настолько, что их самих для увеличения точности пришлось выкинуть из прогноза, оставив в данных прогноза только облигации со средней дюрацией 219 и 212
![](https://habrastorage.org/getpro/habr/upload_files/2c0/44e/c00/2c044ec0031f2e500884271611dcdda1.png)
Кстати, я совсем забыл про цифры предсказаний:
![](https://habrastorage.org/getpro/habr/upload_files/81a/82b/a31/81a82ba31ea68708391cf7404a99aab7.png)
У 234 разброс прогнозов в зависимости от перетасовки вводных данных ( выбор облигаций для создание модели линейной регрессии, выбор размера тренировочного окна, выбор размера окна мае) стал примерно равен средней мае.
![](https://habrastorage.org/getpro/habr/upload_files/022/0af/7dd/0220af7dd72c2926e9f603f526ca68cb.png)
У 243 разброс предсказания открытия следующего дня из-за перетасовки вводных данных оказался в 4 раза больше mean mae.
Советы и выводы:
По мере приближения графиков к дню объявления ключевой ставки, средняя абсолютная ошибка в прогнозах растет на 10-15%
При резком отклонение от основной линии тренда более информативными для прогнозов становятся курсы других облигаций со средней или большой дюрацией, что повышает точность прогнозов на 7-11%
Добавление в данные для прогноза к цене предыдущего дня, данных по некоторым другим облигациям может улучшить точность прогнозов на 1.5-5%
В некоторых редких случаях значительное уменьшение тренировочных дней и смена в данных облигаций на отличные от таргета( прогнозируемого временного ряда) позволяет увеличить точность прогноза до 32%
Если придерживаться стратегии покупки акций по цене ниже от прогнозируемой на размер среднего абсолютного отклонения - то спекуляции растущими облигациями размер мае меньший чем комиссия брокера делает нецелесообразными.
Если придерживаться такой стратегии с падающими облигациями, то вы скорее всего попадете в очень неприятную ситуацию, если не удасться продать падающие облигации в течении 5-7 дней.
Мне сильно не хватает знаний статистики, чтобы придумать стратегию отличную от прямого использования мае, для разности между ценой покупки и прогнозируемой ценой на следующий день.
Если кто использует информационного бота фильтрующего новости рынка по облигациям и датам +- 10 дней от изменения ставки рефинансирования … то будет довольно интересно почитать их заголовки.
При хаотичном колебании облигации с огромной дюрацией в преддверии изменения ключевой ставки при уменьшении прогнозируемых дней с 50 до 10 точность предсказания падает на 33%, с малой дюрацией на 25%
У линейной регрессии предсказания могут сильно разниться в зависимости от выбранного набора тренировочных данных, в зависимости: как от выбора стартового дня, так и от выбора набора облигаций в качестве вводных для предсказания. Причем разброс предсказаний цены открытия следующего дня может стать в несколько раз больше mae.
Комментарии (5)
sergeiosipoff
31.07.2024 05:17+3Автор, ну и как линейная регрессия может помочь в биржевой торговле? Если бы цены линейно зависели от времени, то достаточно было бы один раз открыть позицию по тренду и держать бесконечно) Проблема биржевой торговли как-раз заключается в том, чтобы заранее предсказать изменение угла касательной и линейная регрессия тут никак ( Но в любом случае - удачи!
marimero Автор
31.07.2024 05:17Просто надо с чего-то было начать прогнозы цен, в ML начинают учить с линейной регресии, поначалу полностью согласен с вами получилось очень плохо - но я попытаюсь допилить алгоритм, чтобы хотя бы какие-то плохие результаты выдавал
densss2
31.07.2024 05:17чтобы хотя бы какие-то плохие результаты выдавал
Ну так в этом и проблема, что гарантированно оно может выдавать только плохие результаты. Смотрите, Ваша модель, насколько я понял, анализирует только исторические данные, но не учитывает актуальные данные в стакане. Моменты разворота рынка подобные модели просчитать явно не смогут.
densss2
Давно играете?
marimero Автор
В Ив онлайн несколько лет торговал, на форексе пару месяцев, на бирже пару лет с большими перерывами