如题,很多人都认为常见的、属于同一行业的股票大多数都具有相关性,可以拿来做组合策略。为了打破老中医式的认识,今天咱们来看看几对常见的疑似相关性组合:
1.地产行业:华夏幸福、万科
2.家电行业:格力电器、美的股份
3.快消行业(酒类):茅台、五粮液
4.银行业:中信银行、民生银行
数据准备:
import pandas as pd
import numpy as np
import datetime
import tushare as ts
def getLastWeekDay(day=datetime.date.today()):
now=day
if now.isoweekday()==1:
dayStep=3
else:
dayStep=1
lastWorkDay = now - datetime.timedelta(days=dayStep)
return lastWorkDay
start='20110103'
end=str(getLastWeekDay())
GL=ts.pro_bar(pro_api=api, ts_code='000651.SZ', adj='qfq', start_date=start, end_date='20190108')
MD=ts.pro_bar(pro_api=api, ts_code='000333.SZ', adj='qfq', start_date=start, end_date='20190108')
HX=ts.pro_bar(pro_api=api, ts_code='600340.SH', adj='qfq', start_date=start, end_date='20190108')
WK=ts.pro_bar(pro_api=api, ts_code='000002.SZ', adj='qfq', start_date=start, end_date='20190108')
MT=ts.pro_bar(pro_api=api, ts_code='600519.SH', adj='qfq', start_date=start, end_date='20190108')
WLY=ts.pro_bar(pro_api=api, ts_code='000858.SZ', adj='qfq', start_date=start, end_date='20190108')
ZX=ts.pro_bar(pro_api=api, ts_code='601998.SH', adj='qfq', start_date=start, end_date='20190108')
MS=ts.pro_bar(pro_api=api, ts_code='600016.SH', adj='qfq', start_date=start, end_date='20190108')
利用ADF检验组合稳定性:
from statsmodels.tsa.stattools import adfuller
def testStationarity(data):
adftest = adfuller(data)
result = pd.Series(adftest[0:4], index=['Test Statistic','p-value','Lags Used','Number of Observations Used'])
for key,value in adftest[4].items():
result['Critical Value (%s)'%key] = value
return result
经过检验,所有组合都在Critical Value (1%)上被拒绝原假设,即不具备稳定性。唯有格力电器、美的股份勉强在5%上驳回原假设,即一定程度上有弱稳定性。
testStationarity(coint_list_verify['GL/MD'])
Test Statistic -2.909245
p-value 0.044283
Lags Used 7.000000
Number of Observations Used 1925.000000
Critical Value (1%) -3.433752
Critical Value (5%) -2.863043
Critical Value (10%) -2.567570
将各个组合进行可视化展示:
coint_list_verify=pd.DataFrame()
coint_list_verify['GL/MD']=GL['close']/MD['close']
coint_list_verify['HX/WK']=HX['close']/WK['close']
coint_list_verify['MT/WLY']=MT['close']/WLY['close']
coint_list_verify['ZX/MS']=ZX['close']/MS['close']
coint_list_verify.fillna(method='ffill',inplace=True)
coint_list_verify.fillna(method='bfill',inplace=True)
from pyecharts import online
from pyecharts import Line,Overlap,EffectScatter
line = Line('稳定性研究')
line.add("GL/MD",coint_list_verify['GL/MD'].index, coint_list_verify['GL/MD'], is_symbol_show=True,is_datazoom_show=True)
line.add("HX/WK",coint_list_verify['HX/WK'].index, coint_list_verify['HX/WK'], is_symbol_show=True)
line.add("MT/WLY",coint_list_verify['MT/WLY'].index, coint_list_verify['MT/WLY'], is_symbol_show=True)
line.add("ZX/MS",coint_list_verify['ZX/MS'].index, coint_list_verify['ZX/MS'], is_symbol_show=True)
line.render()
line
华夏幸福VS万科:
茅台VS五粮液:
中信银行VS民生银行:
格力VS美的:
根据上面图形,基本上老中医的看法都可以被反驳回去,除了格力VS美的以外都不具备可操作性。格力VS美的本身只有短期稳定性,考虑到组合交易都需要进行长期操作,这样的组合标的还是有一定风险的。