實戰之金融時間序列分析 Part 2
- 黃金交叉
- 時間序列重采樣
- 需求
- resample 函式
- 代碼
- 時間視窗
- 需求
- rolling 函式
- 代碼
- 股票序列分析策略
- 需求
- 代碼
- 回歸分析
- 需求
- 代碼
- 構建回歸方程
- 需求
- 代碼
- 相關系數
- 需求
- 代碼
黃金交叉
“黃金交叉” (Golden Cross),就是指上升中的短期移動平均線由下而上穿過上升的長期移動平均線的交叉,這個時候壓力線被向上突破,表示股價將繼續上漲,行情看好,均線黃金交叉指股價向上突破壓力,一般實線表示長期移動平均線,虛線表示短期移動平均線,短期移動平均線和長期移動平均線形成兩個交點,

時間序列重采樣
需求
- 以星期為單位重構時間序列
- 不同指定標簽的含義
resample 函式
Pandas 中的 resample (重新采樣) 是對原樣本重新處理的一個方法.是一個對常規時間序列資料重新采樣和頻率轉換的便捷的方法. 在DataFrame 的時間分布式有時候是不均勻的. 然而當我們在做金融時間序列分析時是需要時間均勻間隔的資料的.
格式:
DataFrame.resample(rule, how=None, axis=0, fill_method=None, closed=None, label=None, convention='start',kind=None, loffset=None, limit=None, base=0)
代碼
# 頻率為1周, 取最后的值
data.resample("1w").last().head()
輸出結果:

時間視窗
需求
- 以 20 為長度制作視窗序列
- 統計視窗各個常用指標結果
rolling 函式
格式:
DataFrame.rolling(window, min_periods=None, center=False, win_type=None, on=None, axis=0, closed=None)
| 引數 | 內容 |
|---|---|
| window | 表示時間窗的大小,注意有兩種形式(int or offset),如果使用int,則數值表示計算統計量的觀測值的數量即向前幾個資料,如果是 offset 型別,表示時間窗的大小, |
| min_periods | 每個視窗最少包含的觀測值數量,小于這個值的視窗結果為 NA,值可以是int,默認None,offset情況下,默認為1, |
| center | 把視窗的標簽設定為居中,布爾型,默認 False,居右, |
| win_type | 視窗的型別,截取窗的各種函式,字串型別,默認為 None, |
| axis | int、字串,默認為0,即對列進行計算 |
| closed | 定義區間的開閉,支持int型別的window,對于offset型別默認是左開右閉的即默認為right,可以根據情況指定為left both等, |
代碼
# 去除na
data_new = data.copy().dropna()
# 用第一只股票
stock = stock_list[0]
# 視窗為20天
windows = 20
data_new['min'] = data_new[stock].rolling(window=windows).min() # 最小值
data_new['max'] = data_new[stock].rolling(window=windows).max() # 最大值
data_new['mean'] = data_new[stock].rolling(window=windows).mean() # 平均值
data_new['std'] = data_new[stock].rolling(window=windows).std() # 標準差
# 除錯輸出
print(data_new.tail())
輸出結果:
601766.XSHG 601155.XSHG 600482.XSHG 002456.XSHE 600763.XSHG \
date
2020-12-25 5.37 33.94 17.55 13.83 269.08
2020-12-28 5.32 33.81 17.48 13.05 269.13
2020-12-29 5.32 34.31 17.28 13.10 274.20
2020-12-30 5.27 33.80 17.43 12.83 275.16
2020-12-31 5.31 34.83 17.92 13.18 276.52
002460.XSHE 601877.XSHG 601988.XSHG 601390.XSHG 300408.XSHE \
date
2020-12-25 108.88 38.53 3.18 5.30 35.99
2020-12-28 107.01 37.50 3.17 5.21 36.10
2020-12-29 96.31 36.97 3.17 5.22 35.88
2020-12-30 101.00 36.92 3.17 5.22 37.05
2020-12-31 101.20 39.16 3.18 5.27 37.25
min max mean std
date
2020-12-25 5.29 5.78 5.4880 0.142075
2020-12-28 5.21 5.78 5.4660 0.149540
2020-12-29 5.21 5.78 5.4425 0.149416
2020-12-30 5.21 5.71 5.4145 0.134574
2020-12-31 5.21 5.65 5.3925 0.118760
股票序列分析策略
需求
- 短期平均計算
- 長期平均計算
- 黃金交叉與死亡交叉繪圖展示
代碼
# 這里我們以洋河股份和伊利股份為例
data = get_price(["600887.XSHG"], start_date=start_date, end_date=end_date,fields="close", expect_df=True)
print(data.head())
# 短期平均 (7天)
data["7_day_moving_average"] = data["close"].rolling(window=7).mean()
# 長期平均 (50天)
data["50_day_moving_average"] = data["close"].rolling(window=50).mean()
# 除錯輸出
print(data.tail().round(2))
# 畫圖
data[60:].plot(figsize=(16,12))
# 標記黃金交叉和死亡交叉位置
data["positions"] = np.where(data["7_day_moving_average"] > data["50_day_moving_average"], 1, -1)
# 畫圖
data[60:].plot(figsize=(16,12), secondary_y="positions")
輸出結果:
close
order_book_id date
600887.XSHG 2019-01-02 21.3696
2019-01-03 21.1985
2019-01-04 21.4076
2019-01-07 21.6453
2019-01-08 21.4837
close 7_day_moving_average 50_day_moving_average
order_book_id date
600887.XSHG 2020-12-25 40.00 40.94 39.83
2020-12-28 41.89 41.02 39.86
2020-12-29 41.87 41.19 39.87
2020-12-30 43.96 41.54 39.91
2020-12-31 44.37 42.02 39.96


回歸分析
需求
- 洋河和伊利之間的關系
- 繪圖展示他們之間的變化情況
- 回歸與相關系數計算
- 隨著年份的變化,計算相關系數的變化情況,并展示
代碼
# 取出資料
data = get_price(["600887.XSHG","600597.XSHG"], start_date=start_date, end_date=end_date,fields="close")
print(data.head())
# 畫圖 (子圖)
data.plot(subplots=True)
# 畫圖 (合并)
data.plot(secondary_y="002304.XSHE")
# 獲得連續增長率
rets = np.log(data/data.shift(1))
# 除錯輸出
rets.head()
pd.plotting.scatter_matrix(rets,
alpha = 0.2,
diagonal='hist',
hist_kwds={'bins':50},
figsize=(10,6)
)
pd.plotting.scatter_matrix(rets,
alpha = 0.2,
diagonal='kde',
figsize=(10,6)
)
輸出結果:




構建回歸方程
需求
- 去除空置
- 構建回歸 (seaborn)
代碼
import seaborn as sns
# 去除空值
rets.dropna(inplace=True)
# 畫圖
sns.regplot(x= "600887.XSHG", y= "600597.XSHG", data=rets)
輸出結果:

相關系數
需求
- 分析區間 2019-01-01 到 2021-01-01
- 計算伊利股份和蒙牛股份在分析區間內的相關性
代碼
# 30天平均值
YILI = rets["600887.XSHG"].rolling(window=30) # 伊利
MENGNIU = rets["600597.XSHG"].rolling(window=30) # 蒙牛
# 畫出相關性圖
YILI.corr(MENGNIU).plot(figsize=(10,6))
輸出結果:

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/275127.html
標籤:其他
上一篇:Kafka2.8最新情報
