股票量化交易初探

最近学习了一下基于Python的股市量化交易文章,于是自己也动手做了一点分析,现跟大家一起分享,不当之处还请批评指正。

首先说一下开发环境:

系统:win10/win7

Python版本:3.6

Python开发环境:Annaconda 集成的 Jupyter Notebook

使用的包:Pandas、Numpy、Tushare、Matplotlib等


上面这些东西的安装和更新就不说,大家自行摆渡。

接下来说说思路,首先利用Tushare的接口直接获取沪深300股票的交易数据,然后将这些数据进行相关性分析,利用量化投资的Alpha策略,找出相关性最大的开展对冲交易。

同时感觉到基于单一指标的分析可能胜率不高,我后续还打算加入更多的参考指标,比如“布林带”、“CCI”等,同时我感觉CTA量化中的“HANS123”、“海龟”等策略也可以改造后加进来,这些工作目前正在进行中,有兴趣的同学可以一起开发。

1.沪深300股票交易数据收集。

直接利用 Pandas 从 Tushare 的API接口获取数据,我不太确定Tushare是否可以支持连续获取,所以这里加入了一个短暂的停顿,需要说明的是,程序运行之前需要提前准备一个Excel文件,在hs300的sheet上存储了沪深300股票的名字及代码:

需要注意的是读取股票代码时需要设置其为字符串类型,否则读入之后部分股票代码前面的0就没有了。

import pandas as pd
import numpy as np
import tushare as ts
import time

df = pd.read_excel(r'D:\stock\hs.xlsx', sheet_name='hs300',dtype = {'股票代码' : str})

i = 0
while i < 300:
    stock_code = df.loc[i, '股票代码']
    print('%s .csv is getting....' % stock_code)
    stock1 = ts.get_hist_data(stock_code)
    print('Successfully get')
    stock1.to_csv(r'D:\stock\hs300\%s.csv' % stock_code)
    print('%s .csv is saved successfully!' % stock_code)
    i += 1
    time.sleep(2)
    
print('所有沪深300股票近3年数据下载完毕!')

程序运行后在“D:\stock\hs300”目录下就有了300个股票交易数据CSV文件,大概是下面这个样子:

股票量化交易初探_第1张图片

使用Excel打开一个CSV文件,大概是这个样子,我们可以看到Tushare的数据还是很不错的,除了基本的“open”、“high”、“close”、“low”之外,还有交易量,各种均线数据等。

股票量化交易初探_第2张图片

接下来我们把所有CSV文件中的“close”集中到一个表,并计算相关性。

df = pd.read_excel(r'D:\stock\hs.xlsx', sheet_name='hs300',dtype = {'股票代码' : str})
df2 = pd.DataFrame({'date':['2018-06-29']})

for code in df['股票代码'].values:
    df3 = pd.read_csv(r'D:\stock\hs300\%s.csv' % code)
    df2 = pd.merge(df2, df3[['date', 'close']], how='outer', on='date')

df2.columns = np.hstack((np.array(['date']), df['股票代码'].values))

df2.to_csv(r'D:\stock\hs300_close_comp.csv')

df4 = pd.read_csv(r'D:\stock\hs300_close_comp.csv', nrows=119)

df5 = df2.drop('date', axis=1).corr()

df5.to_csv(r'D:\stock\hs300_corr.csv')

这里我们保存了集成在一起的300支股票的收盘价,需要注意的是,在整理收盘价时候,必须要按照日期进行合并,因为有许多股票可能中间有停盘,或者上市时间不一致,按日期对其后,方便相关性计算。

股票量化交易初探_第3张图片

相关性计算表,这样我们就得到了一个300×300的相关性数据表。

计算相关性时,我只读取了2018年1月至今的数据进行计算。

股票量化交易初探_第4张图片

后续就可以针对相关性进行排序,然后选股了,下次再说吧。

另外说一下,昨晚我看到网上有个哥们,大概也是这种方法,不过使用Excel来实现的,比如用宏来保存沪深300股票数据。。。说实话,我看到后感觉还是很牛逼的。

但我觉得就算有了Python以及强力数据处理包Pandas,感觉期间穿插着使用Excel也是挺方便的,Excel打开CSV文件与它本来的xlsx是一样的,且其数据是可视化的,结合起来使用感觉会更便捷。







你可能感兴趣的:(股票量化交易初探)