回归法多因子策略
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
MarginLevel:交易保证金比例 MaxShare:当前合约的最大持仓量 exchangeType 表示市场类型枚举 id:交易标的代码
CFFEX ZCE
DCE SHFE
中国金融期货交易所 郑州期货交易所
大连期货交易所 上海期货交易所
第 5页
量 化 投 资 策 略 开 发 实 例
策略开发——策略运行配置全景展示
量 化 投 资 策 略 开 发 实 例
</Strategy>
第 6页
策略开发——函数名称及调仓配置
StrategyCfg.xml配置 <?xml version="1.0" encoding="utf-8"?> <Strategy> <strategyFunction name=“factors"/> <strategyArguments rebalanceCycle="1"returnCalFrequency="TimeIntervals.DAY01"/>
量 化 投 资 策 略 开 发 实 第4 页 例
策略开发——交易标的配置
Stkcd.xml配置
%Stkcd.xml名字可更换
<?xml version="1.0" encoding="utf-8"?> <Strategy> <code ContractMultiplier="" Currency="CNY" MarginLevel="1" MaxShare="" exchangeType="" id="HS300" name="沪深300成分股"/> </Strategy>
标签FactorDataCfg(用途:策略的时间及标的配置) dateListType:表示日期类型:Trading,交易日;Working,工作日; localPath:本地Mat缓存文件的存储路径(绝对路径),Matlab中,pwd表示当前的工作空间路径;
periodType:交易时间配置信息;
量 化 投 资 策 略 开 发 实 第7 页 例
%StrategyCfg.xml名字可更换
策略开发——策略数据及缓存配置
StrategyCfg.xml配置
%StrategyCfg.xml名字可更换
<FactorDataCfg dateListType="DateListType.Trading" localPath=“localPath" periodType="PeriodType.StockTradingPeriod" tickerList="stkcd.xml"/>
“宽系列”产品之QIA
如何运用QIA开发量化投资策略
——回归法多因子策略
国泰安信息技术有限公司 研究与创新中心
目 录
策略背景
2
3 4
策略开发
历史回验 绩效分析
量 化 投 资 策 略 开 发 实 第1页 例
策略背景——策略原理
回归法多因子策略就是用过去的股票的收益率对多因子进行回归,得到一个
回归方程,然后把最新的因子值代入回归方程得到一个对未来股票收益的预
第 9页
量 化 投 资 策 略 开 发 实 例
策略开发——策略运行配置全景展示
StrategyCfg.xml配置
<?xml version="1.0" encoding="utf-8"?>
<Strategy> <strategyFunction name="Factors"/> <strategyArguments rebalanceCycle="1" returnCalFrequency="TimeIntervals.DAY01"/> <FactorDataCfg dateListType="DateListType.Trading" localPath=“localPath" periodType="PeriodType.StockTradingPeriod" tickerList="stkcd.xml"/> <data decisionDataLength="22" fieldname="QF_MonthlyReturnWNCDR" frequency="TimeIntervals.DAY01"/> …… <data decisionDataLength="22" fieldname="QF_EPSF" frequency="TimeIntervals.DAY01"/> <data decisionDataLength="22" fieldname="Rtn" frequency="TimeIntervals.DAY01"/>
策略开发
策略配置
StrategyCfg.xml Stkcd.xml
编写主程序
factors.m
回验配置
BackTestCfg.xml
绩效分析
对策略函数的名 称、参数、时间、 交易标的及所需 数据的配置 策略流程的实 现
对策略回验参 数、交易品种
交易费用、绩
效指标的数据 参数的配置
命令窗口运行 界面工具运行
量 化 投 资 策 略 开 发 实 第 10 页 例
</Strategy>
策略开发——主程序
function [ portfolio, newStateMatrix ] = factors( tradingData, stateMatrix )
输入:
1、decisionData: 结构体,存储策略决策所需数据; (1) decisionData.time: 策略决策的时间 (2) decisionData.varList: 策略决策所需数据的名称列表; (3) decisionData.factorN_frequency:策略决策所需数据结构体 (4) decisionData.factorN_frequency.data: 策略决策所需数据矩阵;
tickerList:表示读取的证券代码列表,可以是定义交易标的的xml文件路径名称,也可以是板块,支持 的板块列表有: (’AllAStock,’SHA’,’SZA’,’AllBStock’,’SHB’,’SZB’,’HS300’)
量 化 投 资 策 略 开 发 实 第8页 例
策略开发——策略数据配置
第 页
—— —— —— ——
股票的超额收益率 回归系数 因子回报 残差
多因子模型的优点
反应迅速:多因子模型可以对股票的特征变化快速进行反应。
股 票因子取值的变化很快就能反映在其估计的波动率上。
模型稳健:多因子风险控制模型稳健、可解释性强。 因子间的关系相对于股票间关系更加稳定
估计误差小:多因子模型通过将股票的收益进行分解,减少了参数,估计相对稳定, 所需历史数据较短,更能反映投资组合当前的风险状况。
如:N只股票k个因子,仅需估计k(k+1)/2+N个参数。如,500只股票34个因
子,初等模型需估计125250个参数,多因子模型仅需估计1078个参数。
可扩展性强:可以推广至多个地区(大陆、美国等)、多个品种(股票、债券、期货 等)
第 页
策略背景——策略流程
来自百度文库
第3页
量 化 投 资 策 略 开 发 实 例
每个code标签下,ContractMultiplier、Currency、MarginLevel、MaxShare、为实时交易部
分配置,历史回验设置无效。 SZSE SSE HKEX 市场类型枚举 深圳证券交易所 上海证券交易所 香港联合交易所
ContractMultiplier:合约乘数
Currency:货币种类
第 11 页
输出:
量 化 投 资 策 略 开 发 实 例
策略开发——数据提取
% 变量赋值 for i=1:size(tradingData.varList,1) eval([tradingData.varList{i},'=', 'tradingData.', tradingData.varList{i},'.data;']); end %初始化处理 portfolio=zeros(size(tradingData.(tradingData.varList{1}).data,1),1); %回归数据处理,Y为沪深300成分股前一天的收益率数据,X为之前第22天的因子数 据 %利用上月末的因子与本月末的收益率进行横截面回归得到因子回报系数; Y=Rtn_DAY01(:,end-1); ));%300*16矩阵,16个因子 X=NaN(size(Rtn_DAY01, 1), (size(tradingData.varList,1)-2; i = 1; for j = 1:(size(tradingData.varList,1)) if strcmp(tradingData.varList{j},'CP_DAY01')~=1 && strcmp(tradingData.varList{j},'Rtn_DAY01')~=1 x = eval(tradingData.varList{j}); X(:,i) = x(:,1); i = i + 1; end 第 12 页 end
量 化 投 资 策 略 开 发 实 第2页 例
策略背景——策略原理
因子回报计算采取横截面回归(Cross-Sectional Regression)的方法:
y X f
yt X t ft t
注: 1)为了区别大市值股票和小市值股票,对原来的样本进行加权, 权重由流通市值来决定。 2 ) 为了消除异常值的影响,采取稳健回归的方法。
StrategyCfg.xml配置
<?xml version="1.0" encoding="utf-8"?>
<Strategy> <strategyFunction name="Factors"/> <strategyArguments rebalanceCycle="1" returnCalFrequency="TimeIntervals.DAY01"/> <FactorDataCfg dateListType="DateListType.Trading" localPath=“pwd\cacheData" periodType="PeriodType.StockTradingPeriod" tickerList="stkcd.xml"/> <data decisionDataLength="22" fieldname="QF_MonthlyReturnWNCDR" frequency="TimeIntervals.DAY01"/> …… <data decisionDataLength="22" fieldname="QF_EPSF" frequency="TimeIntervals.DAY01"/> <data decisionDataLength="22" fieldname="Rtn" frequency="TimeIntervals.DAY01"/>
……
<data decisionDataLength="22" fieldname="QF_EPSF" frequency="TimeIntervals.DAY01"/> <data decisionDataLength="22" fieldname="Rtn" frequency="TimeIntervals.DAY01"/> </Strategy>
(5) decisionData.factorN_frequency.timeList:矩阵的列索引,表示矩
阵中每列代表的时间点; (6) decisionData.factorN_frequency.tickerList:矩阵的行索引,表示 矩阵中每列代表的交易标的; 2、 stateMatrix: 策略函数上次存储的状态信息; 1、 portfolio: 策略函数经过运算后得到的,目标投资组合资金权重序列, 维度必须和订阅的交易标的数目相同;
<data decisionDataLength="22" fieldname="QF_MonthlyReturnWNCDR" frequency="TimeIntervals.DAY01"/>
标签data(用途:策略决策所需数据配置) 策略决策时每需要一种数据,则需要配置一个data标签 decisionDataLength:每次策略函数计算目标持仓权重时所需的改数据长度,必须为大于等于1的整 数; fieldname:数据的字段名; frequency:数据的频率,有SEC01(1秒),SEC05(5秒),SEC15(15秒),SEC30(30秒) ,MIN01(1分),MIN05(5分),MIN15(15分),DAY01(1天);
判,最后以此为依据进行选股。回归法的优点是能够比较及时地调整股票对 各因子的敏感性,而且不同的股票对不同的因子的敏感性也可以不同。回归 法的缺点是容易受到极端值的影响,在股票对因子敏感度变化较大的市场情 况下效果也比较差。
本策略的实证对象为所有沪深300成分股,以2013年2月22日至2013年5月 20日为回验周期,利用过去22天内所有风险因子和收益率作为决策依据,根 据预期收益率大小对前50组最大的做多,后50组最小的做空。
标签strategyFunction(用途:用户编写的策略函数名称): name填入策略函数名。 标签strategyArguments(用途:策略的参数配置): rebalanceCycle:重平衡周期,策略回验时,每过rebalanceCycle根bar将进行一次投资决策,计算目标目标持 仓。Bar的大小取决于returnCalFrequency; returnCalFrequency:计算收益率的频率
CFFEX ZCE
DCE SHFE
中国金融期货交易所 郑州期货交易所
大连期货交易所 上海期货交易所
第 5页
量 化 投 资 策 略 开 发 实 例
策略开发——策略运行配置全景展示
量 化 投 资 策 略 开 发 实 例
</Strategy>
第 6页
策略开发——函数名称及调仓配置
StrategyCfg.xml配置 <?xml version="1.0" encoding="utf-8"?> <Strategy> <strategyFunction name=“factors"/> <strategyArguments rebalanceCycle="1"returnCalFrequency="TimeIntervals.DAY01"/>
量 化 投 资 策 略 开 发 实 第4 页 例
策略开发——交易标的配置
Stkcd.xml配置
%Stkcd.xml名字可更换
<?xml version="1.0" encoding="utf-8"?> <Strategy> <code ContractMultiplier="" Currency="CNY" MarginLevel="1" MaxShare="" exchangeType="" id="HS300" name="沪深300成分股"/> </Strategy>
标签FactorDataCfg(用途:策略的时间及标的配置) dateListType:表示日期类型:Trading,交易日;Working,工作日; localPath:本地Mat缓存文件的存储路径(绝对路径),Matlab中,pwd表示当前的工作空间路径;
periodType:交易时间配置信息;
量 化 投 资 策 略 开 发 实 第7 页 例
%StrategyCfg.xml名字可更换
策略开发——策略数据及缓存配置
StrategyCfg.xml配置
%StrategyCfg.xml名字可更换
<FactorDataCfg dateListType="DateListType.Trading" localPath=“localPath" periodType="PeriodType.StockTradingPeriod" tickerList="stkcd.xml"/>
“宽系列”产品之QIA
如何运用QIA开发量化投资策略
——回归法多因子策略
国泰安信息技术有限公司 研究与创新中心
目 录
策略背景
2
3 4
策略开发
历史回验 绩效分析
量 化 投 资 策 略 开 发 实 第1页 例
策略背景——策略原理
回归法多因子策略就是用过去的股票的收益率对多因子进行回归,得到一个
回归方程,然后把最新的因子值代入回归方程得到一个对未来股票收益的预
第 9页
量 化 投 资 策 略 开 发 实 例
策略开发——策略运行配置全景展示
StrategyCfg.xml配置
<?xml version="1.0" encoding="utf-8"?>
<Strategy> <strategyFunction name="Factors"/> <strategyArguments rebalanceCycle="1" returnCalFrequency="TimeIntervals.DAY01"/> <FactorDataCfg dateListType="DateListType.Trading" localPath=“localPath" periodType="PeriodType.StockTradingPeriod" tickerList="stkcd.xml"/> <data decisionDataLength="22" fieldname="QF_MonthlyReturnWNCDR" frequency="TimeIntervals.DAY01"/> …… <data decisionDataLength="22" fieldname="QF_EPSF" frequency="TimeIntervals.DAY01"/> <data decisionDataLength="22" fieldname="Rtn" frequency="TimeIntervals.DAY01"/>
策略开发
策略配置
StrategyCfg.xml Stkcd.xml
编写主程序
factors.m
回验配置
BackTestCfg.xml
绩效分析
对策略函数的名 称、参数、时间、 交易标的及所需 数据的配置 策略流程的实 现
对策略回验参 数、交易品种
交易费用、绩
效指标的数据 参数的配置
命令窗口运行 界面工具运行
量 化 投 资 策 略 开 发 实 第 10 页 例
</Strategy>
策略开发——主程序
function [ portfolio, newStateMatrix ] = factors( tradingData, stateMatrix )
输入:
1、decisionData: 结构体,存储策略决策所需数据; (1) decisionData.time: 策略决策的时间 (2) decisionData.varList: 策略决策所需数据的名称列表; (3) decisionData.factorN_frequency:策略决策所需数据结构体 (4) decisionData.factorN_frequency.data: 策略决策所需数据矩阵;
tickerList:表示读取的证券代码列表,可以是定义交易标的的xml文件路径名称,也可以是板块,支持 的板块列表有: (’AllAStock,’SHA’,’SZA’,’AllBStock’,’SHB’,’SZB’,’HS300’)
量 化 投 资 策 略 开 发 实 第8页 例
策略开发——策略数据配置
第 页
—— —— —— ——
股票的超额收益率 回归系数 因子回报 残差
多因子模型的优点
反应迅速:多因子模型可以对股票的特征变化快速进行反应。
股 票因子取值的变化很快就能反映在其估计的波动率上。
模型稳健:多因子风险控制模型稳健、可解释性强。 因子间的关系相对于股票间关系更加稳定
估计误差小:多因子模型通过将股票的收益进行分解,减少了参数,估计相对稳定, 所需历史数据较短,更能反映投资组合当前的风险状况。
如:N只股票k个因子,仅需估计k(k+1)/2+N个参数。如,500只股票34个因
子,初等模型需估计125250个参数,多因子模型仅需估计1078个参数。
可扩展性强:可以推广至多个地区(大陆、美国等)、多个品种(股票、债券、期货 等)
第 页
策略背景——策略流程
来自百度文库
第3页
量 化 投 资 策 略 开 发 实 例
每个code标签下,ContractMultiplier、Currency、MarginLevel、MaxShare、为实时交易部
分配置,历史回验设置无效。 SZSE SSE HKEX 市场类型枚举 深圳证券交易所 上海证券交易所 香港联合交易所
ContractMultiplier:合约乘数
Currency:货币种类
第 11 页
输出:
量 化 投 资 策 略 开 发 实 例
策略开发——数据提取
% 变量赋值 for i=1:size(tradingData.varList,1) eval([tradingData.varList{i},'=', 'tradingData.', tradingData.varList{i},'.data;']); end %初始化处理 portfolio=zeros(size(tradingData.(tradingData.varList{1}).data,1),1); %回归数据处理,Y为沪深300成分股前一天的收益率数据,X为之前第22天的因子数 据 %利用上月末的因子与本月末的收益率进行横截面回归得到因子回报系数; Y=Rtn_DAY01(:,end-1); ));%300*16矩阵,16个因子 X=NaN(size(Rtn_DAY01, 1), (size(tradingData.varList,1)-2; i = 1; for j = 1:(size(tradingData.varList,1)) if strcmp(tradingData.varList{j},'CP_DAY01')~=1 && strcmp(tradingData.varList{j},'Rtn_DAY01')~=1 x = eval(tradingData.varList{j}); X(:,i) = x(:,1); i = i + 1; end 第 12 页 end
量 化 投 资 策 略 开 发 实 第2页 例
策略背景——策略原理
因子回报计算采取横截面回归(Cross-Sectional Regression)的方法:
y X f
yt X t ft t
注: 1)为了区别大市值股票和小市值股票,对原来的样本进行加权, 权重由流通市值来决定。 2 ) 为了消除异常值的影响,采取稳健回归的方法。
StrategyCfg.xml配置
<?xml version="1.0" encoding="utf-8"?>
<Strategy> <strategyFunction name="Factors"/> <strategyArguments rebalanceCycle="1" returnCalFrequency="TimeIntervals.DAY01"/> <FactorDataCfg dateListType="DateListType.Trading" localPath=“pwd\cacheData" periodType="PeriodType.StockTradingPeriod" tickerList="stkcd.xml"/> <data decisionDataLength="22" fieldname="QF_MonthlyReturnWNCDR" frequency="TimeIntervals.DAY01"/> …… <data decisionDataLength="22" fieldname="QF_EPSF" frequency="TimeIntervals.DAY01"/> <data decisionDataLength="22" fieldname="Rtn" frequency="TimeIntervals.DAY01"/>
……
<data decisionDataLength="22" fieldname="QF_EPSF" frequency="TimeIntervals.DAY01"/> <data decisionDataLength="22" fieldname="Rtn" frequency="TimeIntervals.DAY01"/> </Strategy>
(5) decisionData.factorN_frequency.timeList:矩阵的列索引,表示矩
阵中每列代表的时间点; (6) decisionData.factorN_frequency.tickerList:矩阵的行索引,表示 矩阵中每列代表的交易标的; 2、 stateMatrix: 策略函数上次存储的状态信息; 1、 portfolio: 策略函数经过运算后得到的,目标投资组合资金权重序列, 维度必须和订阅的交易标的数目相同;
<data decisionDataLength="22" fieldname="QF_MonthlyReturnWNCDR" frequency="TimeIntervals.DAY01"/>
标签data(用途:策略决策所需数据配置) 策略决策时每需要一种数据,则需要配置一个data标签 decisionDataLength:每次策略函数计算目标持仓权重时所需的改数据长度,必须为大于等于1的整 数; fieldname:数据的字段名; frequency:数据的频率,有SEC01(1秒),SEC05(5秒),SEC15(15秒),SEC30(30秒) ,MIN01(1分),MIN05(5分),MIN15(15分),DAY01(1天);
判,最后以此为依据进行选股。回归法的优点是能够比较及时地调整股票对 各因子的敏感性,而且不同的股票对不同的因子的敏感性也可以不同。回归 法的缺点是容易受到极端值的影响,在股票对因子敏感度变化较大的市场情 况下效果也比较差。
本策略的实证对象为所有沪深300成分股,以2013年2月22日至2013年5月 20日为回验周期,利用过去22天内所有风险因子和收益率作为决策依据,根 据预期收益率大小对前50组最大的做多,后50组最小的做空。
标签strategyFunction(用途:用户编写的策略函数名称): name填入策略函数名。 标签strategyArguments(用途:策略的参数配置): rebalanceCycle:重平衡周期,策略回验时,每过rebalanceCycle根bar将进行一次投资决策,计算目标目标持 仓。Bar的大小取决于returnCalFrequency; returnCalFrequency:计算收益率的频率