Source: Скользящие средние (moving average)
← Renderedmarkdown 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"