金融数据分析与挖掘——股票时间序列数据处理

1、什么是时间序列分析

时间序列分析( time series analysis)方法,强调的是通过对一个区域进行一定时间段内的连续观察计算,提取相关特征,并分析其变化过程。

时间序列分析主要有确定性变化分析和随机性变化分析

2、移动平均法

2.1 移动窗口

主要用在时间序列的数组变换, 不同作用的函数将它们统称为移动窗口函数

金融数据分析与挖掘——股票时间序列数据处理

2.2 移动平均线

那么会有各种观察窗口的方法,其中最常用的就是移动平均法

金融数据分析与挖掘——股票时间序列数据处理

2.2.1移动平均线的分类

注:不同的移动平均线方法不一样

2.3 简单移动平均线

简单移动平均线(SMA),又称“算数移动平均线”,是指特定期间的收盘价进行平均化比如说,5日的均线SMA=(C1+ C2 + C3 + C4 + C5) / 5

金融数据分析与挖掘——股票时间序列数据处理

例子:

金融数据分析与挖掘——股票时间序列数据处理

案例:对股票数据进行移动平均计算

金融数据分析与挖掘——股票时间序列数据处理

1、拿到股票数据,画出K线图

# 拿到股票K线数据
stock_day = pd.read_csv("./data/stock_day/stock_day.csv")
stock_day = stock_day.sort_index()
stock_day["index"] = [i for i in range(stock_day.shape[0])]
arr = stock_day[['index', 'open', 'close', 'high', 'low']]
values = arr.values[:200]
# 画出K线图
fig, axes = plt.subplots(nrows=1, ncols=1, figsize=(20, 8), dpi=80)
candlestick_ochl(axes, values, width=0.2, colorup='r', colordown='g')

2、计算移动平均线

# 直接对每天的收盘价进行求平均值, 简单移动平局线(SMA) # 分别加上短期、中期、长期局均线 pd.rolling_mean(stock_day["close"][:200], window=5).plot() pd.rolling_mean(stock_day["close"][:200], window=10).plot() pd.rolling_mean(stock_day["close"][:200], window=20).plot() pd.rolling_mean(stock_day["close"][:200], window=30).plot() pd.rolling_mean(stock_day["close"][:200], window=60).plot() pd.rolling_mean(stock_day["close"][:200], window=120).plot()

2.3 加权移动平均线 (WMA)

加权移动平均线 (WMA)将过去某特定时间内的价格取其平均值,它的比重以平均线的长度设定,愈近期的收市价,对市况影响愈重要。

金融数据分析与挖掘——股票时间序列数据处理

正因加权移动平均线强调将愈近期的价格比重提升,故此当市况倒退时,加权移动平均线比起其它平均线更容易预测价格波动。但是我们还是不会轻易使用加权,应为他的比重过大!!!!

2.4 指数平滑移动平均线(EWMA)

是因应移动平均线被视为落后指标的缺失而发展出来的,为解决一旦价格已脱离均线差值扩大,而平均线未能立即反应,EWMA可以减少类似缺点。

金融数据分析与挖掘——股票时间序列数据处理

总结:

金融数据分析与挖掘——股票时间序列数据处理

# 画出指数平滑移动平均线
pd.ewma(stock_day['close'][:200], span=10).plot()
pd.ewma(stock_day['close'][:200], span=30).plot()
pd.ewma(stock_day['close'][:200], span=60).plot()

3、移动方差和标准差 和 移动相关系数

金融数据分析与挖掘——股票时间序列数据处理

# 求出指定窗口大小的收盘价标准差和方差
pd.rolling_var(stock_day['close'][:200], window=10).plot()
pd.rolling_std(stock_day['close'][:200], window=10).plot()
金融数据分析与挖掘——股票时间序列数据处理

# 显示两个序列之间的关系(相关系数)
pd.rolling_corr(stock_day["close"][:200], stock_day["volume"][:200], window=10).plot()

但是这种查看两个序列关系不太好,或者查看多个交易指标的关系显示?接下来我们来看看各指标之间的关系

4、各项指标数据两两关联散点图


frame = data[['open','volume', 'ma20', 'p_change', 'turnover']]
pd.scatter_matrix(frame, figsize=(20, 8))

金融数据分析与挖掘——股票时间序列数据处理

从中我们可以简单看到成交量(volume)和换手率(turnover)有非常明显的线性关系,因为换手率的定义就是:成交量除以发行总股数。

通过一些图或者相关性分析可以找到强相关的一些指标,在机器学习、量化中会详细介绍 相关系数:后面会介绍,目前我们只需知道他是反应两个序列之间的关系即可

5、案例:移动平均线数据本地保存

ma_list = [5, 20 ,60]
for ma in ma_list:
    data['MA' + str(ma)] = pd.rolling_mean(data.close, ma)
for ma in ma_list:
    data['EMA' + str(ma)] = pd.ewma(data.close, span=ma)

data.to_csv("EWMA.csv")

6、 移动平均线的作用

移动平均线经常会作为技术分析的基础理论,从中衍生出各种技术指标策略。后面将会介绍简单的基于均线的策略。


金融数据分析与挖掘——股票时间序列数据处理

展开阅读全文

页面更新:2024-03-12

标签:换手率   序列   时间   方差   数据   收盘价   数据处理   系数   平均   窗口   指标   指数   两个   标准差   关系   简单   股票   金融   数码

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号

Top