moving average
Főnév
moving average (tsz. moving averages)
A moving average (mozgó átlag) egy idősor-elemzési és szűrési módszer, amely segít az adatok trendjének kiemelésében és a rövid távú ingadozások kisimításában. A moving average az egyik legalapvetőbb és leggyakrabban használt statisztikai és pénzügyi eszköz.
1. Mi az a moving average?
A mozgó átlag egy sorozat tagjaiból számított átlag, amely folyamatosan változik az új értékek érkezésével. Az aktuális értéket mindig az adott időpont körüli (vagy előtti) értékekből számítjuk.
Általános forma:
– ahol:
- : az aktuális mozgó átlag
- : az idősor aktuális értéke
- : az ablakméret (hány adatból számolunk átlagot)
2. Fő típusok
a) Simple Moving Average (SMA)
Egyszerű, egyenlő súlyozású átlag:
📌 Pl. 5 napos SMA: az utolsó 5 nap értékeinek átlaga.
b) Weighted Moving Average (WMA)
Nagyobb súlyt ad az újabb értékeknek:
📌 Példa: súlyok = [1, 2, 3, 4, 5] → legfrissebb érték legfontosabb.
c) Exponential Moving Average (EMA)
A legfrissebb érték exponenciálisan nagyobb súlyt kap:
- : simítási együttható,
- Képlet rekurzív, gyors és érzékeny a változásokra
3. Mire használják?
📈 Idősor elemzés
- Trendek felismerése
- Zaj szűrése
- Előrejelzés alapja
💹 Pénzügy
- Részvényárfolyamok trendjeinek követése
- Technikai indikátorok (pl. „SMA crossover”)
📊 Mérnöki tudomány
- Jel- és adatfeldolgozás
- Szenzoradatok zajszűrése
🤖 Gépi tanulás / AI
- Feature-simítás
- Sztochasztikus gradiens csillapítása
4. Előnyök és hátrányok
| Előnyök | Hátrányok |
|---|---|
| Egyszerű, gyors számítás | Lassú reagálás hirtelen változásra |
| Csökkenti a zajt | Előrejelzésre korlátozott |
| Érthető, vizuálisan hasznos | Nem tükröz nemlineáris trendeket |
5. SMA példa Pythonban
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
data = [2, 3, 5, 8, 12, 18, 21, 20, 16, 10]
series = pd.Series(data)
sma = series.rolling(window=3).mean()
plt.plot(series, label='Eredeti')
plt.plot(sma, label='3-napos SMA')
plt.legend()
plt.grid(True)
plt.show()
6. SMA kézi példa
Adatok: [10, 13, 15, 14, 16, 18]
3-napos SMA:
| Idő | Adat | SMA |
|---|---|---|
| 1 | 10 | – |
| 2 | 13 | – |
| 3 | 15 | (10+13+15)/3 = 12.67 |
| 4 | 14 | (13+15+14)/3 = 14.00 |
| 5 | 16 | (15+14+16)/3 = 15.00 |
| 6 | 18 | (14+16+18)/3 = 16.00 |
7. EMA simítási együttható
Általában:
→ Pl. 10 napos EMA esetén Értelmezés sikertelen (formai hiba): {\textstyle \alpha = 2/11 ≈ 0.1818}
Az EMA gyorsabban reagál az új adatokra, mint az SMA.
8. C++ példa – SMA kiszámítása
#include <iostream>
#include <vector>
#include <iomanip>
std::vector<double> simpleMovingAverage(const std::vector<double>& data, int window) {
std::vector<double> result;
for (int i = 0; i <= data.size() - window; ++i) {
double sum = 0;
for (int j = 0; j < window; ++j) {
sum += data[i + j];
}
result.push_back(sum / window);
}
return result;
}
int main() {
std::vector<double> values = {10, 13, 15, 14, 16, 18};
int window = 3;
std::vector<double> sma = simpleMovingAverage(values, window);
for (double val : sma) {
std::cout << std::fixed << std::setprecision(2) << val << "\n";
}
return 0;
}
9. Kombinált használat – SMA és EMA
- Rövid távú mozgó átlag (pl. 10 nap)
- Hosszú távú mozgó átlag (pl. 50 nap)
📌 „Crossover” jelzések:
- Ha a rövid távú átlag megszegi a hosszút alulról: vételi jelzés
- Ha felülről: eladási jelzés
10. Összefoglalás
| Fogalom | Leírás |
|---|---|
| Moving average | Idősorok simítása, trendek kiemelése |
| SMA | Egyszerű átlag, egyforma súly |
| EMA | Exponenciálisan csökkenő súlyok |
| WMA | Egyéni súlyozás |
| Alkalmazás | Idősor-elemzés, pénzügy, gépi tanulás, zajszűrés |
A moving average egyszerű, de hatékony módszer trendek és jellemzők feltárására idősoros adatokon. Segít a döntéshozatalban, vizualizációban, és adatelőkészítésben is.
- moving average - Szótár.net (en-hu)
- moving average - Sztaki (en-hu)
- moving average - Merriam–Webster
- moving average - Cambridge
- moving average - WordNet
- moving average - Яндекс (en-ru)
- moving average - Google (en-hu)
- moving average - Wikidata
- moving average - Wikipédia (angol)