布林带
布林带由三条线组成:
中轨线:5日加权移动平均线
上轨线:中轨+2.5日标准差(这只股票顶部的压力)
上轨线:中轨-2.5日标准差(这只股票底部的支撑力)
布林带收窄代表趋于稳定,如果布林带张开代表有较大的波动空间.
sma53 = np.convolve(
closing_prices, core, 'valid')
mp.plot(dates[4:], sma53, color='violet',
linewidth=2, label='SMA-5(3)')
# 绘制5日均线的布林带
stds = np.zeros(sma53.size)
for i in range(stds.size):
stds[i] = closing_prices[i:i + 5].std()
# 底部支撑线 和 顶部压力线
lowers = sma53 - 2 * stds
uppers = sma53 + 2 * stds
# 绘制布林带
mp.plot(dates[4:], lowers,
color='limegreen', label='Lower')
mp.plot(dates[4:], uppers,
color='orangered', label='Upper')
mp.fill_between(
dates[4:], lowers, uppers,
uppers > lowers,
color='dodgerblue', alpha=0.3)
线性预测与线性拟合
线性预测
在二维世界(x,y),线性方程表示为一条直线; 在三维世界(x,y,z),线性方程表示为一个平面.再高的维度常人无法感受.但是线性方程依然存在.
假设一组数据符合一种线性规律, 那么就可以预测未来将会出现的数据.
a b c d e f ?
ax + by + cz = d
bx + cy + dz = e
cx + dy + ez = f
预测:
dx + ey + fz = ?
计算机如何解三元一次方程组?
[ a b c b c d c d e ] × [ x y z ] = [ d e f ] \left[ \begin{array}{ccc} a & b & c \\ b & c & d \\ c & d & e \\ \end{array} \right] \times \left[ \begin{array}{ccc} x\\ y\\ z\\ \end{array} \right]= \left[ \begin{array}{ccc} d\\ e\\ f\\ \end{array} \right] ⎣⎡abcbcdcde⎦⎤×⎣⎡xyz⎦⎤=⎣⎡def⎦⎤
# a矩阵为3*3的矩阵, b矩阵为等号右边的矩阵
# c即是[xyz]矩阵
c = np.linalg.lstsq(a, b)[0]
案例: 预测AAPL下一天的股价
# 整理五元一次方程组, 最终预测一组股票的走势
N = 3
pred_prices