Created
August 6, 2019 17:23
-
-
Save marcopeix/46db97e91a4b4e0e25706bf5805f711d to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
def plot_moving_average(series, window, plot_intervals=False, scale=1.96): | |
rolling_mean = series.rolling(window=window).mean() | |
plt.figure(figsize=(17,8)) | |
plt.title('Moving average\n window size = {}'.format(window)) | |
plt.plot(rolling_mean, 'g', label='Rolling mean trend') | |
#Plot confidence intervals for smoothed values | |
if plot_intervals: | |
mae = mean_absolute_error(series[window:], rolling_mean[window:]) | |
deviation = np.std(series[window:] - rolling_mean[window:]) | |
lower_bound = rolling_mean - (mae + scale * deviation) | |
upper_bound = rolling_mean + (mae + scale * deviation) | |
plt.plot(upper_bound, 'r--', label='Upper bound / Lower bound') | |
plt.plot(lower_bound, 'r--') | |
plt.plot(series[window:], label='Actual values') | |
plt.legend(loc='best') | |
plt.grid(True) | |
#Smooth by the previous 5 days (by week) | |
plot_moving_average(data.CLOSE, 5) | |
#Smooth by the previous month (30 days) | |
plot_moving_average(data.CLOSE, 30) | |
#Smooth by previous quarter (90 days) | |
plot_moving_average(data.CLOSE, 90, plot_intervals=True) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment