Инструменты для алготрейдинга на Python. Расчет дневного изменения цены

Привет, Хабр! Сегодня я хочу начать свой цикл статей по алготрейдингу.

Первым делом расскажу о самом простом индикаторе ожидаемой доходности ценной бумаги — дневное изменение цены.

Дневное изменение цены — это отношение цены закрытия текущего дня к цене закрытия предыдущего дня. Говоря простым языком, это процент, на который выросла или упала ценная бумага за 1 день.

Сам по себе этот индикатор не сильно полезен — он просто показывает дневное изменение цены. Но, вот, если мы накопим статистику за какой-либо период (например, за месяц), мы можем рассчитать медиану и, тем самым, попытаться предсказать ожидаемую прибыль за 1 день.

Перейдем к практике:

Для проведения расчетов нам понадобится:

  1. Данные об изменениях цен (вполне сойдет API Мосбиржи)

  2. Знание Python и его библиотек Pandas и Matplotlib

  3. Трейдерская чуйка (уверен, если вы читаете эту статью, то она у вас есть)

Весь код я приведу в ноутбуке на google colab

Далее я буду рассказывать о дневном изменении стоимости ценных бумаг за период с 1 января 2021 г. по 25 мая 2021 г.

Для примера, возьмем акции компании Лукойл (тикер LKOH). Для них распределение дневного изменения цены выглядит следующим образом:

26378ebdeaa2ec96d26afb6c03c5bbb6.png

Для акций Лукойла за период с 1 января 2021 года по 25 мая 2021 года мы имеем медиану, равную 0,26%. Это означает, что если завтра не предвидится никаких хороших или плохих новостей, то мы можем ожидать рост стоимости акций на 0,26%

Для понимания разброса значений мы должны рассчитать нижнюю и верхнюю квантили.

ticker

median

q005

q05

q25

q75

q95

q995

LKOH

0.0026

-0.036

-0.026

-0.01

0.011

0.032

0.035

Рассчитав квантили q25 и q75 мы видим, что 50% всех значений дневного изменения цены лежат в диапазоне [-1%; 1,1%]. Т.е., согласно статистике, в 5 из 10 торговых сессиях, цена акции Лукойла упадет не более чем на -1% или вырастет не более чем на 1,1%.

Рассчитав квантили q005 и q995 мы видим, что 99% всех значений дневного изменения цены лежат в диапазоне [-3,6%; 3,5%]. Т.е., согласно статистике, почти во всех торговых сессиях, цена акции Лукойла упадет не более чем на -3,6% или вырастет не более чем на 3,5%.

Рассчитав квантили q05 и q95 мы видим, что 90% всех значений дневного изменения цены лежат в диапазоне [-2,6%; 3,2%]. Т.е., согласно статистике, в 9 из 10 торговых сессиях, цена акции Лукойла упадет не более чем на -2,6% или вырастет не более чем на 3,2%.

Визуализация этого распределения будет выглядеть следующим образом:

01bd37112f3a2fda6a440879f60256af.png

Следующим этапом является разделение данных на месячные периоды. В таком случае, основные квантили будут иметь следующие значения:

month

ticker

median

q005

q05

q25

q75

q95

q995

2021–01–01

LKOH

0.0032

-0.022

-0.029

-0.007

0.011

0.033

0.032

2021–02–01

LKOH

0.0041

-0.027

-0.028

-0.010

0.014

0.027

0.027

2021–03–01

LKOH

0.0029

-0.028

-0.027

-0.006

0.014

0.034

0.035

2021–04–01

LKOH

-0.0005

-0.019

-0.019

-0.011

0.005

0.015

0.015

2021–05–01

LKOH

0.0023

-0.022

-0.024

-0.013

0.016

0.027

0.022

Видим, что в апреле 2021 г. медиана стала отрицательной, что намекает нам об открытии коротких позиций в этом месяце. Визуализировав эти цифры мы получим следующую картинку:

d0a091726bdac4f9c1b9a8451c7ba541.png

В следующей статье расскажу про индикатор «Полосы Боллинджера».

© Habrahabr.ru