Python金融数据分析与挖掘(微课版) 课件 10-3.量化投资策略设计与实现_第1页
Python金融数据分析与挖掘(微课版) 课件 10-3.量化投资策略设计与实现_第2页
Python金融数据分析与挖掘(微课版) 课件 10-3.量化投资策略设计与实现_第3页
Python金融数据分析与挖掘(微课版) 课件 10-3.量化投资策略设计与实现_第4页
Python金融数据分析与挖掘(微课版) 课件 10-3.量化投资策略设计与实现_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第10章

股票价格形态聚类与收益分析函数定义及使用方法训练样本与预测样本的构建量化投资策略设计函数定义及使用方法第10章

将以上介绍的股票价格形态特征提取定义为函数FR1defFR1(DA,t_trd1,t_trd2,num):

#输入:

#DA--2017年股票交易数据

#t_trd1--聚类数据区间开始日期

#t_trd2--聚类数据区间结束日期

#num--基于总体规模与投资效率指标的综合评价方法提取样本个数

#输出:

#Data--形态特征数据

#KeyData--关键价格点数据

#KeyData_index--关键价格点对应序号函数定义及使用方法第10章

将以上介绍的形态特征聚类与收益率计算定义为函数FR2defFR2(DA,Data,KeyData,KeyData_index,s_trd1,s_trd2,class_num):

#输入:

#DA--2017年股票交易数据

#Data--形态特征数据

#KeyData--关键价格点数据

#KeyData_index--关键价格点对应序号

#s_trd1--收益率计算持有期开始日期

#s_trd2--收益率计算持有期结束日期

#class_num--聚类个数

#输出:

#Data_c--形态特征数据+聚类结果列

#KeyData_c--关键价格点数据+聚类结果列

#KeyData_index_c--关键价格点对应序号+聚类结果列

#D--每只股票代码、所属聚类类别、收益率组成的数据框

#list_cr--每类股票的总收益训练样本与预测样本的构建第10章

选用2017年5月1日—2017年7月31日和2017年6月1日—2017年8月31日两个计算周期的交易数据提取股票价格形态特征进行聚类,并分别以2017年8月1日—2017年8月31日和2017年9月1日—2017年9月30日两个持有期计算每个类别的平均收益率,如果类平均收益率排名前5,则该类中所有股票记为+1类,否则记为−1类,并以此构建训练样本。importpandasaspdDA=pd.read_excel('DA.xlsx')R1=FR1(DA,'2017-05-01','2017-07-31',400)R2=FR2(DA,R1[0],R1[1],R1[2],'2017-08-01','2017-08-31',20)dt1=R2[0]

#2017年5月1日至2017年7月31日的股票价格形态特征数据+聚类结果列cr1=pd.Series(R2[4])#对应每类的平均收益率crr=cr1.sort_values(ascending=False)#对类平均收益率序列cr1按降序排序cr=list(crr.index)

#取对应的类编号(排序后的数据)foriinrange(len(crr)):

#类平均收益率排名前5的类中所有股票标记为1

ifi<5:

dt1[dt1[:,len(dt1[0,:])-1]==cr[i],len(dt1[0,:])-1]=1

#(聚类结果列变为因变量+1)dt1[dt1[:,len(dt1[0,:])-1]!=1,len(dt1[0,:])-1]=-1

#(聚类结果列变为因变量-1)训练样本与预测样本的构建第10章

R1=FR1(DA,'2017-06-01','2017-08-31',400)R2=FR2(DA,R1[0],R1[1],R1[2],'2017-09-01','2017-09-30',20)dt2=R2[0]

#2017年6月1日至2017年8月31日的股票价格形态特征数据+聚类结果列cr2=pd.Series(R2[4])crr=cr2.sort_values(ascending=False)cr=list(crr.index)foriinrange(len(crr)):ifi<5:dt2[dt2[:,len(dt2[0,:])-1]==cr[i],len(dt2[0,:])-1]=1

#(聚类结果列变为因变量+1)dt2[dt2[:,len(dt2[0,:])-1]!=1,len(dt2[0,:])-1]=-1

#(聚类结果列变为因变量-1)#构造训练样本importnumpyasnpdt=np.vstack((dt2,dt1))x=dt[:,1:-1]#训练样本的Xy=dt[:,len(dt[0,:])-1]#训练样本的Y训练样本与预测样本的构建第10章

对于预测样本,选用的是2017年7月1日—2017年9月30日的交易数据计算形态特征,这里调用前面定义的FR1函数来实现。#预测样本的构建R1=FR1(DA,'2017-07-01','2017-09-30',400)dt3=R1[0]x1=dt3[:,1:]#交易数据为2017年7月1日~2017年9月30日的股票价格形态特征数据量化投资策略设计第10章

根据前面构建的训练样本和预测样本,利用支持向量机模型进行训练和预测,如果预测结果为+1,表示该只股票在未来一个月内可能获得比较好的收益,对该只股票以持有期为2017年10月1日—2017年10月31日进行计算投资收益率(期初收盘价买入,期末收盘价卖出),最终将所有预测结果为+1的股票收益率求和,即得到投资策略的总收益率,并以同期的沪深300指数收益率作为基准进行比较。fromsklearnimportsvmclf=svm.SVC()clf.fit(x,y)res=clf.predict(x1)#支持向量机预测结果code=dt3[res==1,0]list_r=[]#预定义列表,用于存放预测结果为+1的股票收益率list_code=[]#预定义列表,用于存放预测结果为+1的股票代码foriinrange(len(code)):

I1=DA['Trddt'].values>='2017-10-01'

I2=DA['Trddt'].values<='2017-10-31'

I3=DA['Stkcd'].values==code[i]

I=I1&I2&I3

dta=DA.iloc[I,[2]]['Clsprc'].values

iflen(dta)>1:

r=(dta[len(dta)-1]-dta[0])/dta[0]

list_r.append(r)

list_code.append(code[i])result={'code':list_code,'r':list_r}result=pd.DataFrame(result)#结果整理total_r=sum(list_r)

#总收益率####沪深300指数同期收益率的计算indx300=pd.read_excel('index300.xlsx')I1=indx300['Idxtrd01'].values>='2017-10-01'I2=indx300['Idxtrd01'].values<='2017-10-31'In=I1&I2da=indx300.loc[In,'Idxtrd05'].valuesindex300_r=(da[len(da)-1]-da[0])/da[0]量化投资策略设计第10章

其中dt3为待预测的形态特征数据集,res为支持向量机的预测结果。例如,行序号为10、13的股票代码000333和002517的股票预测结果为+1,表示未来持有期为1个月可能获得较好的收益。事实result已

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论