局部hurst指数在行业轮动中的应用_第1页
局部hurst指数在行业轮动中的应用_第2页
局部hurst指数在行业轮动中的应用_第3页
局部hurst指数在行业轮动中的应用_第4页
局部hurst指数在行业轮动中的应用_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

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

文档简介

1、如何运用QIA开发量化投资策略局部 Hurst 指数在行业轮动中的应用国泰安信息技术有限公司 研究与创新中心“宽系列”产品之QIA目 录策略背景13绩效分析4策略开发2第 1 页量化投资策略开发实例历史回验策略背景策略原理基于重标极差(R/S)分析方法基础上的赫斯特指数(H)的研究是由英国水文专家HEHurst(19001978)在研究尼罗河水库水流量和贮存能力的关系时,发现用有偏的随机游走(分形布朗运动)能够更好地描述水库的长期存贮能力,并在此基础上提出了用重标极差(R/S)分析方法来建立赫斯特指数(H)。作为判断时间序列数据遵从随机游走还是有偏的随机游走过程的指标本策略首先提取行业指数及成

2、分股数据;其次,计算行业指数的hurst指数;最后,当行业指数的hurst斜率由负变为正,且hurst比均值低时,且行业指数处于近期高位,则做空成分股;若行业指数处于低位,则做多成分股。第 3 页量化投资策略开发实例策略背景策略流程第 4 页量化投资策略开发实例数据提取提取行业指数及成分股数据;初始化及交易规则设置计算行业指数的hurst指数;交易规则设置当行业指数的hurst斜率由负变为正,且hurst比均值低时,且行业指数处于近期高位,则做空成分股;若行业指数处于低位,则做多成分股。策略开发策略配置StrategyCfg.xml Stkcd.xml编写主程序hurst.m回验配置BackT

3、estCfg.xml绩效分析对策略函数的名称、参数、时间、交易标的及所需数据的配置策略流程的实现对策略回验参数、交易品种交易费用、绩效指标的数据参数的配置第5页量化投资策略开发实例命令窗口运行界面工具运行Stkcd.xml配置 . 每个code标签下,ContractMultiplier、Currency、MarginLevel、MaxShare、为实时交易部分配置,历史回验设置无效。ContractMultiplier:合约乘数Currency:货币种类MarginLevel:交易保证金比例MaxShare:当前合约的最大持仓量exchangeType 表示市场类型枚举id:交易标的代码第

4、页市场类型枚举SZSE深圳证券交易所SSE上海证券交易所HKEX香港联合交易所CFFEX 中国金融期货交易所ZCE郑州期货交易所DCE 大连期货交易所SHFE上海期货交易所策略开发交易标的配置%Stkcd.xml名字可更换StrategyCfg.xml配置 第 页策略开发策略运行配置全景展示策略开发函数名称及调仓配置StrategyCfg.xml配置 标签strategyFunction(用途:用户编写的策略函数名称):name填入策略函数名。标签strategyArguments(用途:策略的参数配置):rebalanceCycle:重平衡周期,策略回验时,每过rebalanceCycle根

5、bar将进行一次投资决策,计算目标持仓。Bar的大小取决于returnCalFrequency;returnCalFrequency:计算收益率的频率第 6 页量化投资策略开发实例%StrategyCfg.xml名字可更换策略开发策略数据及缓存配置StrategyCfg.xml配置标签FactorDataCfg(用途:策略的时间及标的配置)dateListType:表示日期类型:Trading,交易日;Working,工作日;localPath:本地Mat缓存文件的存储路径(绝对路径),Matlab中,pwd表示当前的工作空间路径;periodType:交易时间配置信息;tickerList:

6、表示读取的证券代码列表,可以是定义交易标的的xml文件路径名称,也可以是板块,支持的板块列表有:(AllAStock,SHA,SZA,AllBStock,SHB,SZB,HS300)第 6 页量化投资策略开发实例%StrategyCfg.xml名字可更换标签data(用途:策略决策所需数据配置)策略决策时每需要一种数据,则需要配置一个data标签decisionDataLength:每次策略函数计算目标持仓权重时所需的改数据长度,必须为大于等于1的整数;fieldname:数据的字段名;frequency:数据的频率,有SEC01(1秒),SEC05(5秒),SEC15(15秒),SEC30(

7、30秒),MIN01(1分),MIN05(5分),MIN15(15分),DAY01(1天);第 页策略开发策略数据配置StrategyCfg.xml配置 第 页策略开发策略运行配置全景展示策略开发主程序第 7 页function portfolio, newStateMatirx = hurst( decisionData, stateMatirx )输入: 1、decisionData: 结构体,存储策略决策所需数据; (1) decisionData.time: 策略决策的时间 (2) decisionData.varList: 策略决策所需数据的名称列表; (3) decisionDat

8、a.factorN_frequency:策略决策所需数据结构体 (4) decisionData.factorN_frequency.data: 策略决策所需数据矩阵; (5) decisionData.factorN_frequency.timeList:矩阵的列索引,表示矩阵中每列代表的时间点; (6) decisionData.factorN_frequency.tickerList:矩阵的行索引,表示矩阵中每列代表的交易标的; 2、 stateMatrix: 策略函数上次存储的状态信息;输出: 1、 portfolio: 策略函数经过运算后得到的,目标投资组合资金权重序列,维度必须和订

9、阅的交易标的数目相同;量化投资策略开发实例策略开发数据提取% 变量赋值for i = 1:10 eval(sci_Cp(,int2str(i),1:size(decisionData.CP_DAY01.data,2) = decisionData.CP_DAY01.data(decisionData.tickerList = 10100003,int2str(i-1),:););endsci_lnRtn = log(sci_Cp(:,2:end)./sci_Cp(:,1:end-1);len = size(sci_lnRtn,2);portfolio = zeros(length(decisi

10、onData.tickerList),1);% 初始化if isempty(stateMatrix) , , alldata = xlsread(hurst.xlsx,2); orgidList = zeros(10,50); for i = 1:10 eval(SZ_0000,int2str(30+i+1), = cellstr(int2str(cell2mat(alldata(:,int2str(2*i),);); eval(SZ_0000,int2str(30+i+1),(:,2) = ExchangeType.SSE;); eval(orgidList_0000,int2str(30+

11、i+1),=getOrgidByTradingCode(SZ_0000,int2str(30+i+1),2013-09-04,2013-09-04);); eval(orgidList(,int2str(i),1:length(orgidList_0000,int2str(30+i+1),) = orgidList_0000,int2str(30+i+1),;); end for i = len-239:len for j = 1:10 temp = sci_lnRtn(j,i-240:i-1); hurst(j,i -240) = pute(temp); end endelse hurst

12、= stateMatrix.hurst(:,2:end); orgidList = idList; for i = 1:10 hurst(i,240) = pute(sci_lnRtn(i,end-239:end); end end第 8 页量化投资策略开发实例策略开发交易规则准备、设置% 交易规则设置准备hurst_Rtn = diff(hurst,2);sci_Cp_sort = sort(sci_Cp(:,end-20:end),2);% 交易规则设置sell = (hurst_Rtn(:,end-1).*hurst_Rtn(:,end) 0 & hurst(:,end) sci_Cp_

13、sort(:,15);buy = (hurst_Rtn(:,end-1).*hurst_Rtn(:,end) 0 & hurst(:,end) mean(hurst,2) & sci_Cp(:,end) 0) 0 & sum(portfolio0 portfolio(dirFactorIndex0) = portfolio(dirFactorIndex0)/sum(dirFactorIndex0)*0.5; portfolio(dirFactorIndex0) = portfolio(dirFactorIndex0)/sum(dirFactorIndex0) = portfolio(dirFa

14、ctorIndex0)/sum(dirFactorIndex0); portfolio(dirFactorIndex0) = portfolio(dirFactorIndex0)/sum(dirFactorIndex0);end% 状态变量赋值newStateMatrix.hurst = hurst; idList = orgidList;第 9 页量化投资策略开发实例策略开发交易规则设置function FactorMatrix,FactorNum=HurstFactorization(x) %hurstFactorization N=floor(x/4); FactorNum=0; for

15、 i=4:N if mod(x,i)=0 FactorNum=FactorNum+1; FactorMatrix(FactorNum,:)=i,x/i; end endend function pute(Xtimes) pute %example pute(rand(1,240) LengthX=length(Xtimes); FactorMatrix,FactorNum=HurstFactorization(LengthX); LogRS=zeros(FactorNum,1); LogN=zeros(FactorNum,1); for i=1:FactorNum dataM=reshape(

16、Xtimes,FactorMatrix(i,:); MeanM=mean(dataM); SubM =dataM - repmat( MeanM,FactorMatrix(i,1),1) ; RVector=zeros(FactorMatrix(i,2),1); SVector=zeros(FactorMatrix(i,2),1); for j=1:FactorMatrix(i,2) %SubVector=zeros(FactorMatrix(i,1),1); SubVector=cumsum( SubM(:,j); RVector(j)=max(SubVector)-min(SubVecto

17、r); SVector(j)=std( dataM(:,j) ); end LogRS(i)=log( sum( RVector./SVector)/ FactorMatrix(i,2) ); LogN(i)=log( FactorMatrix(i,1) ); end HurstExponent=polyfit(LogN,LogRS,1); HurstExponent = HurstExponent(1);end第 10 页量化投资策略开发实例策略开发全部程序展示function portfolio, newStateMatrix = hurst( decisionData, stateMat

18、rix )% 局部 Hurst 指数在行业轮动中的应用 % 变量赋值for i = 1:10 eval(sci_Cp(,int2str(i),1:size(decisionData.CP_DAY01.data,2) = decisionData.CP_DAY01.data(decisionData.tickerList = 10100003,int2str(i-1),:););endsci_lnRtn = log(sci_Cp(:,2:end)./sci_Cp(:,1:end-1);len = size(sci_lnRtn,2);portfolio = zeros(length(decisio

19、nData.tickerList),1);% 初始化if isempty(stateMatrix) , , alldata = xlsread(hurst.xlsx,2); orgidList = zeros(10,50); for i = 1:10 eval(SZ_0000,int2str(30+i+1), = cellstr(int2str(cell2mat(alldata(:,int2str(2*i),);); eval(SZ_0000,int2str(30+i+1),(:,2) = ExchangeType.SSE;); eval(orgidList_0000,int2str(30+i

20、+1),=getOrgidByTradingCode(SZ_0000,int2str(30+i+1),2013-09-04,2013-09-04);); eval(orgidList(,int2str(i),1:length(orgidList_0000,int2str(30+i+1),) = orgidList_0000,int2str(30+i+1),;); end for i = len-239:len for j = 1:10 temp = sci_lnRtn(j,i-240:i-1); hurst(j,i -240) = pute(temp); end endelse hurst =

21、 stateMatrix.hurst(:,2:end); orgidList = idList; for i = 1:10 hurst(i,240) = pute(sci_lnRtn(i,end-239:end); end end% 交易规则设置准备hurst_Rtn = diff(hurst,2);sci_Cp_sort = sort(sci_Cp(:,end-20:end),2); % 交易规则设置sell = (hurst_Rtn(:,end-1).*hurst_Rtn(:,end) 0 & hurst(:,end) sci_Cp_sort(:,15);buy = (hurst_Rtn(

22、:,end-1).*hurst_Rtn(:,end) 0 & hurst(:,end) mean(hurst,2) & sci_Cp(:,end) 0) 0 & sum(portfolio0 portfolio(dirFactorIndex0) = portfolio(dirFactorIndex0)/sum(dirFactorIndex0)*0.5; portfolio(dirFactorIndex0) = portfolio(dirFactorIndex0)/sum(dirFactorIndex0) = portfolio(dirFactorIndex0)/sum(dirFactorInd

23、ex0); portfolio(dirFactorIndex0) = portfolio(dirFactorIndex0)/sum(dirFactorIndex0);end第11页量化投资策略开发实例策略开发全部程序展示% 状态变量赋值newStateMatrix.hurst = hurst; idList = orgidList; endfunction FactorMatrix,FactorNum=HurstFactorization(x) %hurstFactorization %code by %2008-10-07 N=floor(x/4); FactorNum=0; for i=4

24、:N if mod(x,i)=0 FactorNum=FactorNum+1; FactorMatrix(FactorNum,:)=i,x/i; end endend function pute(Xtimes) pute %code by %2008-10-07 %example pute(rand(1,240) LengthX=length(Xtimes); FactorMatrix,FactorNum=HurstFactorization(LengthX); LogRS=zeros(FactorNum,1); LogN=zeros(FactorNum,1); for i=1:FactorN

25、um dataM=reshape(Xtimes,FactorMatrix(i,:); MeanM=mean(dataM); SubM =dataM - repmat( MeanM,FactorMatrix(i,1),1) ; RVector=zeros(FactorMatrix(i,2),1); SVector=zeros(FactorMatrix(i,2),1); for j=1:FactorMatrix(i,2) %SubVector=zeros(FactorMatrix(i,1),1); SubVector=cumsum( SubM(:,j); RVector(j)=max(SubVec

26、tor)-min(SubVector); SVector(j)=std( dataM(:,j) ); end LogRS(i)=log( sum( RVector./SVector)/ FactorMatrix(i,2) ); LogN(i)=log( FactorMatrix(i,1) ); end HurstExponent=polyfit(LogN,LogRS,1); HurstExponent = HurstExponent(1);end第11页量化投资策略开发实例策略开发回验配置全景展示BackTestCfg.xml配置 第 页策略开发回验配置BackTestCfg.xml配置 标签

27、backtestArguments(用途:策略回验的参数配置)actionDelay:交易延迟,策略从投资决策到通过交易生成持仓的延迟。必须为非负整数。比如actionDelay为2,returnCalFrequency为1,returnCalFrequency为 TimeIntervals.SEC05,将会以决策时点2*5 = 10秒后的价格成交;orgidMode:由交易代码转为orgid的模式。(注意:对于股票而言,同一交易代码可能由于借壳上市等原因,随着时间区间不同,其意义会发生变化,系统后台会将交易代码转为orgid对股票而言,以公司作为证券关联对象的唯一码。)对股票而言,如果用户输

28、入all,系统将会订阅回验区间内使用过该交易代码的所有行情,通过orgid进行区分,同样,通过orgid区分策略函数返回的持仓权重序列;如果用户输入latest,则系统会订阅最新使用该交易代码的行情,同样通过orgid区分。如果交易代码列表中不存在股票标的,则不用考虑该属性;第 12 页量化投资策略开发实例策略开发回验配置 标签backtestArguments(用途:策略回验的参数配置)repoFrequency:债券的回购频率。支持DAY01(每日回购)和DAY07(每七日回购)两个枚举。系统将会据此获取债券的杠杆费用。注意:当交易代码列表不存在债券标的时,则不用考虑该属性;reportD

29、isplay:excel绩效报表展示开关,当设为On的时候,策略回验结束后会显示策略绩效的excel绩效报告;设为其他值时则不会打印;resultSave:excel绩效报表保存开关,当设为On的时候,策略回验结束后会被保存;设为其他值时则不会打印;第 12 页量化投资策略开发实例 第 页品种的枚举类型securityTypeStockA A股StockBB股Index指数Fund基金Bond债券CommodityFuture商品期货IndexFuture 指数期货标签transactionCost(用途:按品种配置交易费用) 每配置一个品种需要增加一个标签,需要按买入和卖出分别配置交易费用。buy:该品种买入的交易费用比例;securityType:品种的枚举类型;sell:该品种卖出的交易费用比例;策略开发回验配置 第 页标签performanceAnalysisData(用途:策略绩效指标的数据参数配置) 计算绩效指标所需数据目前只支持指数收益率,且策略的简单收益率序列不需要配置,系统会自动传入到每个绩效评价函数中。code:如果评价指标计算需要指数收益率,属性值为指数代码,比如计算特雷诺指数需要沪深300收益率,则填写000300;如果填,认为该标签描述的是评价指标的参数,value的值不能为空;funName:计算绩效指标的函数名称,必须和per

温馨提示

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

评论

0/150

提交评论