Source: Скользящие средние (moving average)

← Rendered

markdown source:

---
description: Скользящие средние и их реализация на python
tags: market-stocks
title: Скользящие средние (moving average)
---
[Статья на вики](https://ru.wikipedia.org/wiki/%D0%A1%D0%BA%D0%BE%D0%BB%D1%8C%D0%B7%D1%8F%D1%89%D0%B0%D1%8F_%D1%81%D1%80%D0%B5%D0%B4%D0%BD%D1%8F%D1%8F)

Общее название для семейства функций, значения которых в каждой точке определения равны некоторому среднему значению исходной функции за предыдущий период. Математически - это один из видов свертки.

Используются (в том числе) в аналитике [[market-stocks]]. На базе скольязих средних построен алгоритм [[arima-alghoritm]]. Основная задача - сглаживание краткосрочных колебаний во временных рядах.

Виды скользящих средних:

- Простые скользящие средние (SMA)
- Экспоненциальные скользящие средние (EMA)
- Взвешенное скользящее среднее (WMA)

**SMA** - это среднее за некоторый период

$$SMA = \frac{A_1 + A_2 + ... + A_n}{n}$$

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

**WMA** - иногда при построении скользящей средней некоторые значения исходной функции целесообразно сделать более значимыми. Например, если предполагается, что внутри интервала сглаживания имеет место нелинейная тенденция, или, в случае временных рядов, последние — более актуальные — данные могут быть весомее предыдущих. Бывает, что исходная функция многомерна, то есть представлена сразу несколькими связанными рядами. В этом случае может возникнуть необходимость объединить в итоговой функции скользящей средней все полученные данные. Например, **временные ряды биржевых цен обычно для каждого момента времени представлены как минимум двумя значениями — ценой сделки и её объёмом. Необходим инструмент для вычисления скользящей средней цены, взвешенной по объёму**.

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

**EMA** - разновидность WMA, использует веса, которые убывают экспоненциально и никогда не равны нулю.

$$EMA = (Value_{today} * (\frac{Smothing}{1 + Days})) + EMA_{Yesteday} * (1 - (\frac{Smothing}{1 + Days}))$$

Здесь $Smothing$ - сглаживающий вес

Возможны EMA произвольного порядка.

Кроме того, применяются:

- MMA (модифицированные скользящие средние)
- MA на основе других усредняющих функций (среднее степенное, среднее квадратическое, среднее гармоническое и т.д., к примеру скользящая медиана SMM)
- динамические MA
- CMA (совокупные или кумулятивные скользящие средние) - среднее арифметическое значений итсходной функции за весь период наблюдений
- кумулятивная сумма - сумма всех значений ряда нарастающим итогом

## Пример реализации на python

`pyEx` - поставщик данных

[смотри ссылку](https://www.machinelearningmastery.ru/implementing-moving-averages-in-python-1ad28e636f9d/)

Смотри [[pandas-rolling-window]]


[market-stocks]: market-stocks "Market stocks"
[arima-alghoritm]: arima-alghoritm "Arima alghoritm"
[pandas-rolling-window]: pandas-rolling-window "Pandas rolling window - скользящие средние в pandas"