移動平均通常是指簡單移動平均 (Simple Moving Average; SMA),就是股票每天都有很多起起伏伏,真正的趨勢會被雜訊給掩蓋,所以我們把前幾天的股價一起拿出來平均,常用的有5日平均(MA5)、20日平均(MA20)、60日平均(MA60),如下圖所示。
簡單移動平均公式
$$ SMA = { p_1 + p_2 + p_3 +\cdots + p_{n-1} \over n } $$
$p_1$是今天的價格
$p_2$是昨天的價格,也就是前1天的價格。
$p_3$是前天的價格,也就是前2天的價格。依此類推。
$p_{n-1}$是前n天的價格。
指數移動平均
指數移動平均(Exponentional Moving Average)一個比較特別的概念,就是考慮不同時期的的價格對現在的影響,是指數遞減的。就像是國中失戀、高中失戀、大學失戀對現在的你來說,越近的越痛。也就是之前的股價依照經過的天數,越靠近現在的權重越重,而每一天是以幾何級數或是稱指數關係遞減。他有一個很酷的遞迴表示法。
$$\text{EMA}_{\text{today}} = \text{EMA}_{\text{yesterday}} + \alpha \times(\text{price}_{\text{today}} - \text{EMA}_\text{yesterday})$$
當然乍看這條公式,根本看不出,這裡哪裡有指數關係呢?我們可以舉幾個例子。
$\text{EMA}_1 = \text{EMA}_2 + \alpha \times(\text{price}_1 - \text{EMA}_2)$
$=\alpha\times\text{price}_1 + (1-\alpha )\times\text{EMA}_2)$
$EMA_1$是今天的指數移動平均
$EMA_2$是昨天的指數移動平均,依此類推
$price_1=p_1$是今日的價格
$\alpha$是平滑係數,是小於1的參數。
$\alpha$是平滑係數,是小於1的參數。
$\text{EMA}_1$
$=\alpha\times\text{p}_1 + (1-\alpha )\times\text{EMA}_2)$
$=\alpha\times\text{p}_1 + (1-\alpha )\times[\alpha\times\text{p}_2 + (1-\alpha )\times\text{EMA}_3]$
$=\alpha\times[\text{p}_1 + (1-\alpha )\times\text{p}_2]-(1-\alpha)^2\times\text{EMA}_3$
有沒有找到甚麼規則呢?
那這個關係可以一直寫下去,最後就會變成這樣,
$\text{EMA}_1$
$=\alpha\times[\text{p}_1 + (1-\alpha )\times\text{p}_2+ \cdots + (1-\alpha )^{n-1}\times\text{p}_n]-(1-\alpha)^n\times\text{EMA}_{n+1}$
就會發現,每多一天,價格的權重就會多乘$(1-\alpha )$,成指數關係,公比是$(1-\alpha )$。
而因為平滑係數小於1,所以如果考慮很長的一段時間,最後一項也就是,一減平滑係數的n+1次方再乘指數移動平均價格($(1-\alpha)^n\times\text{EMA}_{n+1}$)幾乎可以忽略。所以我們今天的指數移動平均價格就變成是
$\text{EMA}_1=\alpha\times[\text{p}_1 + (1-\alpha )\times\text{p}_2+ \cdots + (1-\alpha )^{n-1}\times\text{p}_n]$
每一天我們都可以問之前的股價是多少,可以一直問,問的無窮無盡,但是我希望如果可以的話,我想知道大概需要往前推算幾天,就可以涵蓋86%的權數。86%這個數字也不是亂挑的,他是1-$e^{-2}$,所以要怎麼算呢?
假設加了N天可以有86%的權數,
$$\frac{\alpha \times \left(1+(1-\alpha)+(1-\alpha)^2+\cdots +(1-\alpha)^N \right)} {\alpha \times \left(1+(1-\alpha)+(1-\alpha)^2+\cdots +(1-\alpha)^\infty \right)}= 1-e^{-2}=0.86$$
左邊利用等比級數的公式化簡,可以發現簡化如下:
$$1-(1-\alpha)^{N+1}=1-e^{-2}$$,
這個時候, 在1697年 Johann Bernoulli寫出了一個有趣的公式可以解決這個問題,
$$\exp(x) = \lim_{n\to\infty}\left(1 + \frac{x}{n}\right)^{n}$$
有沒有很熟悉? 所以我們令
$$\alpha=\frac{2}{N+1}$$
,就會發現如果N不太小的時候,$1-(1-\alpha)^{N+1}$就會滿接近0.86的。
所以為了讓權數接近0.86,我們希望$\alpha=\frac{2}{N+1}$,
實際試看看N=12以及N=26,發現帶入$1-(1-\alpha)^{N+1}$分別等於0.886跟0.875,很接近我們的目標,所以很夠用了。那弄懂指數移動平均,很多線圖的由來你大概就懂了。
那你會說EMA很難算我不知要怎麼算,那我教你兩種方法,
法一
在yahoo股市的技術分析指標選MACD,指道你想要的那天股價,中間就會有一排寫EMA12、EMA26囉。
法二