一、交易对象选取
我们以商品期货市场的螺纹钢品种的跨期套利为例,选取两组不同到期月份的同种商品期货合约作为交易对象。
相关性检验
通过新浪财经的期货数据接口爬取螺纹钢rb1903到rb1908的六组数据,先看一下它们的走势:
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
import urllib.request as urllib2
import json
def findPairs():
ids = ['rb1903', 'rb1904', 'rb1905', 'rb1906', 'rb1907', 'rb1908']
url_5m = 'http://stock2.finance.sina.com.cn/futures/api/json.php/IndexService.getInnerFuturesMiniKLine5m?symbol='
result = []
for id in ids:
url = url_5m + id
req = urllib2.Request(url)
rsp = urllib2.urlopen(req)
res = rsp.read()
res_json = json.loads(res)
result.append(res_json)
close_result = []
for instrument in result:
oneDay_list = []
for oneDay in instrument:
oneDay_list.append(float(oneDay[-2]))
close_result.append(np.array(oneDay_list))
close_result = np.array(close_result)
close_result = close_result.T
df = pd.DataFrame(data=close_result, columns=ids)
df.plot()
plt.show()
从价格的走势图中,可以看出 rb1903 和 rb1904 以及 rb1908 和 rb1907 的走势上存在很强的相关性,下面画出它们之间的相关矩阵。
sns.heatmap(df.corr(), annot=True, square=True)
plt.show()