Aleks
Aleks личный блог
22 марта 2020, 13:48

Общий финансовый анализ на Python (Часть 2)

Ну что продолжим?

Скользящее окно(Moving Windows)

В заголовке я привел дословный перевод. Если кто меня поправит, и другой термин применяется — то спасибо.

Смысл скользящего окна– с каждым новым значением функция пересчитывается за заданный период времени. Этих функций большое количество. Для примера: rolling.mean(), rolling.std(), которые чаще всего и используют при анализе движения акций. rolling.mean() — это обычная скользящая средняя, которая сглаживает краткосрочные колебания и позволяет визуализировать общую тенденцию.

# Выделяю скорректированную цену закрытия 
adj_close_px = sber['Adj Close']

# Вычисляю скользящую среднию
moving_avg = adj_close_px.rolling(window=40).mean()

# Вывожу результат
print(moving_avg[-10:])
Общий финансовый анализ на Python (Часть 2)
Дальше построим график, чтоб лучше понять то, что получается в результате работы данной функции:
# Вычисление короткой скользящей средней
sber['40'] = adj_close_px.rolling(window=40).mean()

# Вычисление длинной скользящей средней
sber['252'] = adj_close_px.rolling(window=252).mean()

# Построение полученных значений
sber[['Adj Close', '40', '252']].plot(figsize=(20,20))

plt.show()
Общий финансовый анализ на Python (Часть 2)

Как видно rolling.mean() справляется с поставленной задачей. Функция сглаживает краткосрочные колебания и позволяет увидеть долгосрочный тренд на основании которого можно принять решение. Цена выше рассматриваемой скользящей средней — берем акцию, ниже — продаем акцию — если просто. Или кто то может построить свою стратегию на основании пересечения средних. Тут уже каждый должен самостоятельно принять решение.

Волатильность

Волатильность акций — это изменение дисперсии доходности акций в течение определенного периода времени. Обычно сравнивают волатильность одной акции с другой, чтобы получить представление о том, какая может иметь меньший риск, или с рыночным индексом, чтобы понять волатильность акций относительно рынка. Как правило, чем выше волатильность, тем рискованнее инвестиции в эту акцию. Необходимо отметить, что она не является постоянной и изменяется с течением времени. Это можно увидеть опять же при помощи функции rolling.std(), входящей в пакет pandas. Проведу расчет изменения волатильности за квартал:

# Определяю рассматриваемый период
min_periods = 60 

# Вычисляю волатильность
vol = daily_pct_change.rolling(min_periods).std() * np.sqrt(min_periods) 

# Строю график
vol.plot(figsize=(10, 10))

plt.show()
Общий финансовый анализ на Python (Часть 2)
Прошу обратить внимание, что в отличие от прошлой недели у меня появилось еще два значения — индекс московской биржи (IMOEX.ME) и РБК (RBCM.ME). Их значения мне потребуются в следующей публикации про метод наименьших квадратов.




10 Комментариев
  • 3Qu
    22 марта 2020, 14:14
    Волатильность акций — это изменение дисперсии доходности акций в течение определенного периода времени. 
    Отсюда следует, что волатильность не может изменяться скачкообразно.
    Откуда тогда на графиках скачкообразные изменения волатильности?
      • 3Qu
        22 марта 2020, 15:30
        Zmey56, не так уж и сжат. Мин период =60, на графике деление = 2 мес.
        Длительность переходного процесса на 1(t) = 2 мес. По уровню 0.7 = 42 дня.
        Не говорю, что ошибка, но я не понимаю откуда берутся скачки.
          • 3Qu
            22 марта 2020, 16:39
            Zmey56, не, на волатильность МА не надо накладывать. Она сама по себе уже д.б. сглажена.
  • Exorcist
    22 марта 2020, 15:10
    Графики может рисовать только Юпитер или еще кто?
    • 3Qu
      22 марта 2020, 16:36
      Exorcist, я, так, в Spyder все делаю. Имхо, все гораздо удобней. Но на вкус и цвет…

Активные форумы
Что сейчас обсуждают

Старый дизайн
Старый
дизайн