最早接触量化投资的概念,是pyAlgotrade,它可以接受google finance 和 yahoo finance的数据源,根据技术指标如macd 5日线,20日线的交叉来选择买卖股票时机,或者用kdj 之类选择买卖时机。发现这个很又意思,就是说,原本你的买卖策略需要用多年时间才能被证明,现在只需要短短数秒就能通过back-test (回测)来证明了。再后来我知道有个tushare的财经数据接口包,可以很方便地获取A股公司的基本面,技术面信息。后来偶然有次,股票投资合伙人跟我说,能不能想想办法,找出所有市值再50~80亿的深港通股票,这玩意人工找要找死人的,我就想起来用程序找,想到还有tushare这个好东西,就pip install tushare了。
这里选择市值在50亿到80亿之间,市盈率小于40倍的深圳股票: import tushare as ts import pandas as pd pd = ts.get_stock_basics() sgtSet=pd[pd.index.str[:3].isin([‘300’, ‘000’])] sgtSet5080 = sgtSet[(sgtSet[‘pe’]sgtSet[‘esp’]sgtSet[‘totals’]<800000)&(sgtSet[‘pe’]sgtSet[‘esp’]sgtSet[‘totals’]>500000)] sgtResult=sgtSet5080[(sgtSet5080[‘pe’]<40)&(sgtSet5080[‘pe’]>0)] print sgtResult
港股只能找到yahoo的数据源比较靠谱,国内数据源还是不行,这里选择香港市盈率小于11,股息率大于4%,市值在150亿以内的股票:
from yahoo_finance import Share for x in range(1000,2000): instrument = str(x).zfill(4)+’.HK’ yahoo = Share(instrument) if (yahoo==None): continue
peTemp = yahoo.get_price_earnings_ratio()
if (peTemp==None):
continue
divratioTemp = yahoo.get_dividend_yield()
if (divratioTemp==None):
continue
dailyvolume =yahoo.get_avg_daily_volume()
if (dailyvolume==None):
continue
marketcap =yahoo.get_market_cap()
if (marketcap==None):
continue
if (marketcap[-1]!='B'):
continue
pe = float(peTemp)
divratio =float(divratioTemp)
dailyvolume = int(dailyvolume)
marketcap = float(marketcap[:-2])*1000000000 if (0<pe<11)&(divratio>4)&(marketcapDown<marketcap<marketcapUP)&(dailyvolume>500000):
print (instrument,'PE:',pe,'DiviRatio:',divratio,'marketcap',marketcap) print ('finished')
我们用价值投资角度来选股,然后进行持有期的回测,看看效果如何?
按照市盈率小于15,股息率大于4%,市值小于1500亿的标准,选取2012年股票,持有2年到2014年,且看收益如何。
3 600578 京能电力 1.810 4.50 4.40 4.55 4.39 4.42
14 601633 长城汽车 0.401 12.52 12.42 12.58 12.20 12.47
20 601006 大秦铁路 0.271 7.39 7.37 7.48 7.34 7.37
24 601169 北京银行 0.210 9.55 9.55 9.59 9.49 9.53
28 600015 华夏银行 0.090 11.18 11.18 11.23 11.12 11.17
31 600657 信达地产 0.000 5.88 0.00 0.00 0.00 5.88
69 002496 辉丰股份 -1.341 5.15 5.23 5.24 5.10 5.22
77 002437 誉衡药业 -1.623 7.88 8.00 8.01 7.86 8.01
101 002546 新联电子 -3.003 7.43 7.66 7.66 7.38 7.66
103 601222 林洋能源 -3.109 7.48 7.70 7.71 7.45 7.72
收益还是颇丰的: Initial cash: 500000 600578.SS Final portfolio value: $856584.52 600578.SS Percentage gain: +71.32% on code 600578.SS
Initial cash: 500000 601633.SS Final portfolio value: $4284656.86 601633.SS Percentage gain: +756.93% on code 601633.SS
Initial cash: 500000 601006.SS Final portfolio value: $828088.52 601006.SS Percentage gain: +65.62% on code 601006.SS
Initial cash: 500000 601169.SS Final portfolio value: $802363.89 601169.SS Percentage gain: +60.47% on code 601169.SS
Initial cash: 500000 600015.SS Final portfolio value: $924935.64 600015.SS Percentage gain: +84.99% on code 600015.SS
Initial cash: 500000 600657.SS Final portfolio value: $681446.47 600657.SS
Initial cash: 500000 002496.SZ Final portfolio value: $983507.35 002496.SZ Percentage gain: +96.70% on code 002496.SZ
Initial cash: 500000 002437.SZ Final portfolio value: $1063129.99 002437.SZ Percentage gain: +112.63% on code 002437.SZ
Initial cash: 500000 002546.SZ Final portfolio value: $647442.05 002546.SZ
Initial cash: 500000 601222.SS Final portfolio value: $3090192.67 601222.SS Percentage gain: +518.04% on code 601222.SS
当然,量化投资只是一种工具而已,最主要的还是需要自己长期的实践,形成一整套投资思想,心态和胆量。