Posts

Calculating the Exponential Moving Average in Python

avatar of @chasmic-cosm
25
@chasmic-cosm
·
·
0 views
·
1 min read

Theory

The exponential moving average differs from the simple moving average in that more recent samples are more strongly weighted. This means that the exponential moving average responds more quickly to changes in the signal.

Implementation

The signal parameter is a one dimensional array. the smoothing parameter controls how much influence the more recent samples have on the value of the average.

import numpy as np 
 
def exponential_moving_average(signal, points, smoothing=2): 
    """ 
    Calculate the N-point exponential moving average of a signal 
 
    Inputs: 
        signal: numpy array -   A sequence of price points in time 
        points:      int    -   The size of the moving average 
        smoothing: float    -   The smoothing factor 
 
    Outputs: 
        ma:     numpy array -   The moving average at each point in the signal 
    """ 
 
    weight = smoothing / (points + 1) 
    ema = np.zeros(len(signal)) 
    ema[0] = signal[0] 
 
    for i in range(1, len(signal)): 
        ema[i] = (signal[i] <em> weight) + (ema[i - 1] </em> (1 - weight)) 
 
    return ema 

Results

Consider the following diagram showing the exponential average in blue and the simple average in red. Note that the exponential average leads the simple average, reacting to price changes more quickly.

Posted Using LeoFinance