财务的自我修养,微信公众号:机智出品(jizhjchupin),文中各类数据文件均可于公众号内下载
这里使用机器学习sklearn库中的SVM(支持向量机),训练上证近两年的数据,对上证指数涨跌进行预测。
那我们是不是能听着音乐,抖抖腿,开着Python进行股票预测,然后把钱赚了?(你想多了~)
一、需要的库
import pandas as pd
import numpy as np
from sklearn import svm
from sklearn import cross_validation
二、获取上证指数行情
如何获取股票行情数据可以看本人以前的文章。
df=ts.get_hist_data('sh',start='2016-04-06',end='2018-04-06')
df.to_csv('stock/sh.csv')
data=pd.read_csv('stock/sh.csv',parse_dates=[0],index_col=0)
data.sort_index(0,ascending=True,inplace=True)
三、开始工作,SVM
dayfeature=50#选取150天的数据
featurenum=5*dayfeature#选取的5个特征*天数
x=np.zeros((data.shape[0]-dayfeature,featurenum+1))#记录150天的5个特征值
y=np.zeros((data.shape[0]-dayfeature))#记录涨或者跌
for i in range(0,data.shape[0]-dayfeature):
x[i,0:featurenum]=np.array(data[i:i+dayfeature] \
[[u'close',u'high',u'low',u'p_change',u'volume']]).reshape((1,featurenum))
x[i,featurenum]=data.ix[i+dayfeature][u'open']
for i in range(0,data.shape[0]-dayfeature):
if float(data.ix[i+dayfeature][u'price_change'])>=0:
y[i]=1
else:
y[i]=0
clf=svm.SVC(kernel='rbf')
result = []
for i in range(5):
x_train, x_test, y_train, y_test = \
cross_validation.train_test_split(x, y, test_size = 0.2)
clf.fit(x_train, y_train)
result.append(np.mean(y_test == clf.predict(x_test)))
#print(clf.score(x_test, y_test))
print("svm classifier accuacy:")
print(sum(result)/len(result))
#print(result)
打印出来显示:
svm classifier accuacy:
0.563636363636
56%的正确率!
比我抛硬币也好不了多少......所以,别做梦了,好好学习吧。
那说明A股符合随机漫步理论?对不起,我不知道。我只知道有很多中国巴菲特获得了超额收益。
说明还有一些影响上证的feature没有输入进来,或者是其他原因(原谅我水平半桶水都没有)
功力不到家,同志仍需努力。

网友评论