Py学习  »  机器学习算法

【广发金工】机器学习选股训练手册

广发金融工程研究 • 3 周前 • 45 次点击  

广发证券首席金工分析师 安宁宁

SAC: S0260512020003

anningning@gf.com.cn

广发证券资深金工分析师 陈原文

SAC: S0260517080003

chenyuanwen@gf.com.cn

广发证券资深金工分析师 王小康

SAC: S0260525020002

wangxiaokang@gf.com.cn

广发金工安宁宁陈原文团队
摘要


模型选择机器学习在量化选股领域多年来被各类投资者广泛应用,近些年随着传统因子的大面积失效,量化策略中机器学习使用的占比还在不断提高。我们选择应用广泛、具有代表性的GBDT类树模型和神经网络模型进行训练测试。其中GBDT类模型主要包括LGBM, XGBoost和CatBoost,神经网络模型主要包括GRU,TCN和Transformer。

特征数据准备量价与基本面类特征适用模型类型不同,树模型能有效处理手工构造的量价和基本面特征,而神经网络类模型由于需要捕捉特征的时序变化,低频变化的基本面因子喂入会导致效果较差。此外,鉴于目前投资者积累的各类特征越来越多,进行一定程度的特征筛选再投喂模型也能提升模型的训练效率。我们经过对比发现使用SHAP方案进行筛选能够有效减少特征数量的同时保证模型训练后的效果,而使用特征中性化来去除行业市值等风格影响对于最终因子并没有明显改进。此外,特征在投喂模型之前的标准化过程也同样重要,经过测试,对于特征进行整体标准化更有利于模型学习时序信息,提升最终因子表现。
损失函数调整与预测目标处理:除一般的MSE作为损失函数外,投资者也经常使用IC作为损失。除此之外,我们对比了排序学习领域常用的各类损失函数,包括PairWise和ListWise两大类,发现部分添加NDCG指标的损失函数多头部分表现更优。同样地,在使用MSE的情况下仅对多空部分权重调整也能一定程度改善收益水平和稳健性。
在预测目标层面,使用截面标准化能保证模型学习重点在于截面收益率之间差异,排除了市场Beta的干扰,所得因子效果更优。同时结合多个不同预测周期的模型能提升最终因子稳健性。

基于机器学习模型的指数增强策略:我们结合上述结论重新训练模型,构建各主流宽基指数增强策略。策略效果整体优异,沪深300指增年化超额收益率为10.03%,超额最大回撤-5.42%,信息比率为2.23。中证500指增策略的超额稳定性略有下降,年化超额收益为8.41%,超额最大回撤为-10.78%。中证1000指增策略走势相对更加稳健,年化超额收益为11.44%,超额最大回撤为-7.95%,信息比率为2.09。

风险提示:(1)本文所述算法与模型用量化方法通过历史数据统计、建模和测算完成,所得结论与规律在市场政策、环境变化时存在失效风险。(2)基于模型得到的相关结论并不能完全准确地刻画现实环境以及预测未来。(3)本文策略通过一定的假设与历史数据回测得到,当交易成本提高、市场结构及交易行为改变时有可能存在失效风险,可能导致策略收益下降或出现亏损。

一、模型选择

机器学习的各类算法近些年在图像识别、自动驾驶、文本生成等领域都取得了较快发展,应用场景丰富且可信度较高。而量化投资领域使用机器学习算法目前也日趋成熟,得到越来越多投资者的认可。从早期的量化私募到现在越来越多的量化公募基金也都在AI选股方向有了深入的研究和实践,在本篇报告中,我们将梳理我们使用机器学习选股时的流程和细节,为投资者提供参考和比对。

(一)基于测决策树的GBDT模型

树模型是一种出现较早、逻辑直观、效果出色的机器学习算法,既可以用于回归任务,也可以用于分类任务。其核心思路为从根节点出发,对每一个特征进行判断,将样本划分到对应的子节点中。判断时一般采用基尼系数大小来度量判断的准确性,从而使得对于任意划分点s两边的样本和所求出的均方差最小,直到样本个数小于阈值或已无其他特征。
随着研究的不断深入,决策树的集成算法逐渐成为主流。人们发现,将多棵决策树融合在一起,能显著提升模型整体的精确度和泛化性能。目前主流的集成方案主要有两种:
1.Bagging:该方法采用自助法(Bootstraping)多次随机采样训练集,针对每一次采样的数据集,都训练一个简单的决策树作为基学习器。再将这些机器学习所得结果平均作为最终预测结果。这种方法主要目的在于降低模型方差(防止过拟合),在结合时也可以进一步加入一些随机性,如特征的随机抽样等,最终所形成模型为随机森林(Random Forest)。
2.Boosting:Boosting是一种有顺序的基学习器训练方式,每个基模型都会在前一个基模型的基础上进行学习,最终综合所有基模型的预测值产生最终的预测结果。在Boosting中,由于基模型共用一套训练数据集,相关性较强,整体模型的方差等于其基模型的方差,因此基模型也一般选用高偏差低方差的弱学习器。不过基于Boosting框架的GBDT可以通过对特征进行随机抽样降低基模型的相关性,从而达到减少方差的效果。
近一步细分,Boosting又可以分为Adaboost、GBDT等。其基本思路都是在训练基模型时重点关注前一个基模型表现不佳的地方,Adaboost通过提升错分数据点的权重来定位模型不足,Gradient Boosting通过计算梯度来定位模型不足。

相比之下,GBDT是相对更优的一种算法,GBDT的核心在于每棵树都是以前一棵树的残差值更新目标值,最终每棵树的值加起来即为GBDT的预测值。其训练迭代思路为:
在每轮迭代中,基模型需要不断逼近真实值y,只需要学习前一个基模型的残差,而残差就是MSE损失函数关于预测值的反向梯度。因此,GBDT的每一步残差计算其实都变相增大了被错分样本的权重,正确样本的权重趋于0。

(二)各类神经网络模型

在视觉、语言、声音等领域表现更加出色的是神经网络模型,此类模型通过模仿生物神经元相互传递信号的方式构造。模型结构包括输入层、输出层和多个隐藏层,每一层均有若干个神经元可与其他节点连接。根据实际使用场景,模型结构也会被相应设计调整。目前,在时间序列预测领域中,主要有以下几种主流的编码器:
1.RNN:又称为循环神经网络,工作时会按照时间顺序依次处理每个时刻的输入元素,将上一个时刻的信息带入下一时刻。利用递归连接“记忆”前一时刻的信息。递归层包含一组神经元,每个神经元都与自身有递归连接,并与当前时刻的输入进行连接。而一般的RNN在遇到长时间序列数据时,容易出现梯度爆炸或梯度消失的情况,LSTM和GRU作为一种特殊的RNN,可以有效解决这一问题。LSTM模型包括了遗忘门、输入门与输出门通过与输入数据的线性运算,得到隐藏层与输出信息。
而GRU是LSTM的另一种变体,可以视为LSTM的一种简化版本。GRU抛弃了LSTM中的隐藏层h,直接用状态层c代替,通过这种方式GRU选择暴露全部信息。另外由于信息传输变化带来的结构调整,将门控结构调整为更新门和重置门,网络复杂程度有所降低,较少的参数量也节省了训练时间。
2.CNN:卷积神经网络擅长进行图像识别任务,工作原理是在图像上应用一系列滤波器,逐渐提取出越来越复杂的特征。浅层的滤波器检测边缘和线条等简单特征,而深层的滤波器则检测形状和数字等更复杂的模式特征。其核心特点在于能够高效识别出数据中存在的局部特征,避免了显式的特征提取,而是隐式的从训练数据中学习。
在时间序列预测领域,基于此类模型衍生出了TCN(时域卷积网络),该模型由具有相同输入和输出长度的扩展(dilated)/因果(causal)一维卷积层组成(Bai Shaojie, 2018)。
TCN通过因果约束的设计,限制了预测输出只能来自于相同时间点或更早时间点的输入,这一点对于量化研究而言至关重要,可以有效避免未来数据的泄露。此外,在残差连接(Residual Block)的帮助下,可以增加模型的层数从而能够使用较长的时间序列数据进行预测。空洞卷积(Dilated Convolutions)的引入在回顾历史数据时,从每d步处来获取输入,使卷积的感受野呈现指数级增长。
3. Transformer:该模型通过引入自注意力机制允许模型在处理每个位置时,同时考虑输入序列中其他位置,从而能捕捉到更长距离的依赖关系,几个关键元素包括Query,Key,Value。进一步地,Transformer也应用多头注意力机制来提高模型的表达能力,可以使用多组不同的Q,K,V来进行计算。在完整的网络架构中,Transformer包括了编码器(Encoder)和解码器(Decoder)两部分。编码器部分主要作用是将输入数据编码为抽象表示,其结构为多头注意力机制+全连接神经网络。同时加入了残差连接避免梯度递减的问题。解码器的结构与编码器大体相似,不过采用了掩码多头自注意力,即在计算注意力得分时,只关注当前位置之前的信息,避免未来信息的泄漏。
此外,值得一提的是,近年来不断有新的模型结构被推出,如使用图结构或注意力机制捕捉截面股票间关系,使用自编码器的FactorVAE等,部分模型在A股量化选股领域同样有较好表现,本篇报告中我们暂不涉及。
最终,我们从各类模型中,各自选取主流、经过检验的模型用于量化选股的训练和预测。

二、特征数据准备



选择合适的特征数据输入模型,是整个流程中至关重要的一环。在机器学习的不同场景中,经常会有“Garbage In, Garbage Out”的说法,即使拥有再好的模型设计,低质量的特征数据也会严重影响最终预测效果。此处我们从特征类型选择、特征筛选、特征中性化和特征预处理几个方面分别介绍。

(一)特征类型选择

在传统的因子选股研究中,我们往往会尽量手工设计、挖掘有效的选股因子。并通过各种线性方案合成用于构建最终的投资组合。而在机器学习领域中,可用于输入模型的特征类型往往并不要求原本特征的(线性)有效性。不同模型对于特征数据的类型也有不同要求,我们一般使用如下数据集进行模型训练:
其中Alpha158所包含特征主要为各类量价数据通过各类算子叠加计算所得:
风格因子主要包括估值、成长、质量、价量等因子:
我们首先对数据进行区间划分,统一以8年训练集、2年验证集的方案对模型训练,统一采用5个随机种子取均值。报告以下部分均只展示了样本外测试集的结果。
此处我们首先对比了不同类型特征投喂不同模型的效果:
由以上数据可以基本看出,不同类型特征与模型的组合可能会对因子效果产生较大的影响。如,对于含有一定手工挖掘成分、本身具有一定预测效果的Alpha158特征及来说,GBDT和NN两类模型均有较好表现。而对于变化周期较长、主要描述公司基本面的GFStyle特征,树模型所得因子表现远好于神经网络类模型。对于原始量价特征,两类模型均有不错表现,但神经网络类模型明显更胜一筹。
我们认为,两类模型由于其结构差异,对输入特征天然具有不同的要求:
对于树模型而言,其本质为截面模型,无法学习时间序列所蕴含的规律。因此,我们所投喂的特征本身应当包含了过去一段时间的信息,且本身具有良好股票区分度的特征能给树模型带来明显帮助。
对于神经网络而言,由于理论上网络结构可以拟合任意形式函数,即便是最原始的量价数据也可以得到相对有效的因子。且由于我们所使用的神经网络模型均为时序模型,能力主要在于捕捉特征的时序变化,因此变化相对高频的量价数据最合适。而大部分基本面因子变化周期可能在季频或更久,模型反而难以学习时序规律。

(二)有效特征筛选

一般而言,树模型天然具有特征筛选机制。在训练过程中会根据每个特征是否能有效区分出样本来确定是否要在模型中包含该特征。而神经网络从理论上会根据神经元之间的权重来调整某个特征在模型中所起到的作用,不过随着投研过程所积累的有效特征逐渐增多,过多的特征全部喂入神经网络中对于硬件和训练时间的消耗会大幅增加,是否能够在几乎没有损失的情况下筛选部分特征作为模型输入呢?由于可能会损失部分非线性信息,仅仅使用IC可能并非最好的选择。此处我们对比了若干特征筛选的方法:
1.基础统计方法:包括Spearman相关系数、互信息和LightGBM模型所给出的特征重要性。
2.SHAP方法:Shapley Additive exPlanations(SHAP)是一种被广泛使用的模型解释方法,灵感来源于合作博弈论中的Shapley值。该方法对于每个样本首先考虑可能的所有特征子集。对于每个子集,分别计算包含和不包含当前特征的情况下,模型预测的期望值之差。这个差值衡量了当前特征的存在对模型预测结果的影响。最终在对所有的自己取平均,得到当前特征的SHAP值,这个值表示了当前特征对模型预测结果的平均贡献。
3.STG:Stochastic Gates(STG)于2020年ICML大会上由耶鲁大学研究人员提出,该方法为每个特征都分配了一个随机门,该门的激活概率是可学习的。在训练过程中,随机门根据其激活概率随机对该特征进行采样,从而允许模型在训练过程中选择重要的特征学习。
我们使用上述Alpha158量价特征对比不同特征筛选方法的效果,均在GRU模型上进行训练,所得因子在全A股票池上结果如下:
可以看出,基于SHAP解释GRU模型得到的模型表现最优。从多空收益来看,绝大多数特征选择方法的表现均超过了基准GRU模型,相比之下STG方法所得因子表现略显平庸。不过,可以说明的是,对特征选择合适的方式筛选后喂入GRU模型,可以在保证模型效果的同时有效降低训练成本,一定程度上增强模型的可解释性。
(三)特征中性化
为确保最终预测因子的超额收益稳定性,我们往往追求模型所学规律来自于Pure Alpha,尽量避免行业、市值或其他风格的影响。而模型根据我们所投喂的过往数据学习规律,往往会学习到过往市场环境中长期占优的风格,导致所得因子天然具有较高的风格暴露。我们尝试了因子进行行业市值的中性化,把原始因子值作为被解释变量,行业因子和市值因子作为解释变量进行回归,取回归的残差作为新的因子暴露值,模型如下:
其中,X_i 是股票 i 的原始因子值,I_ij  是股票 i 的在行业 j 上的因子暴露(I_ij 为哑变量(Dummy variable),即股票属于某个行业则该股票在该行业的因子暴露等于 1,在其他行业的因子暴露等于 0)。本文我们选用中信一级行业分类作为行业分类标准。M_i  是股票 i 的市值或取对数后的市值。分别考察LGBM和GRU模型进行中性化后所得因子效果:
可以看出,对于LGBM模型而言,不管对哪些特征进行中性化处理,都会显著降低所得因子表现。
对于GRU模型而言,特征中性化后虽并未出现因子效果明显下滑,但因子的IC、收益和回撤表现也并未提升。可见,对于获取纯粹alpha而言,我们必须寻找另外方案解决。
(四)特征预处理方法
确定好数据类型后,需要进行合适的预处理步骤再投喂模型,从而确保数据的量纲、分布符合模型学习的要求,保证有效地梯度下降。一般来说,特征数据预处理有以下方案:
1.截面标准化:包括截面Z-Score(CSZscore),对所有数据按日期分组后进行Z-Score处理,主要目的在于保证每日截面数据的可比性;截面排序(CSRank),对数据按日期分组后排序处理,将排序结果作为模型输入,主要目的在于去除异常值影响,但同样丧失了数据间相对大小关系。
2.整体标准化:整体Z-Score,不区分日期在整个训练集中求得均值标准差后进行标准化,目的在于保留日期间数据的大小关系;整体MinMax,是数据严格限制在规定的上下限范围内,且保留了相对大小关系;RobustZScore,由于标准差计算需要对均值偏差进行平方运算,会使数据对极值比较敏感。通过首先去极值在进行Zscore来规避这一问题。
我们针对以上可选方案使用Alpha158&GFStyle特征数据集(Lightgbm)和Alpha158(GRU)分别测试对比所得因子IC均值和多头年化超额收益率:
可以发现,对特征做截面处理会影响对两个模型的学习效果。我们认为,这可能是由于截面标准化时每天的特征数据都被限定在同样的量纲下,不同日期间大小关系被忽视,从而影响到了截面模型对于未来收益率的预测能力。而这一点对于神经网络模型更加重要,由于此类模型中特征数据会增加一层维度,让模型学习回看若干天的数据学习时序变化规律,若此时再进行截面标准化,会严重影响到模型的学习效果。

三、损失函数选择


(一)排序学习损失函数
近年来的部分学术论文中,除了模型结构的创新外,仍有一些损失函数设计上的创新。如Feng 2019中,作者首先分析了传统损失函数MSE可能存在的问题,提出了一个将MSE和对排序结果敏感相结合的损失函数PR Loss:
损失函数中第二项为pair-wise max-margin loss,这一部分会奖励预测排序和真实排序相同的样本。
而在Yang 2023中,作者认为上述损失函数并未能根本解决问题,仍然需要一个超参数来平衡pointwise(第一项)和pairwise ranking-aware(第二项)的部分。因此作者从该函数的一阶导出发,提出了RL Loss(Reward-Learning-based loss):
而在业界,也有不少机构在进行模型训练时会选择使用IC作为损失函数,希望将损失函数的优化方向和最终所得因子的目标保持一致,从而能够得到更高IC均值的因子。
若进一步探索,希望损失函数能对截面股票预测的排序值足够敏感,则可以借鉴推荐系统中常用的排序学习(LTR)损失函数。排序学习最早被搜索引擎用来进行搜索结果的排序,近年来随着各类短视频、社区的兴起,众多互联网公司的APP都会越来越多使用各类排序学习算法吸引用户注意力、提升用户点击率、留存率等。
而排序学习算法又可以分为三种:PointWise,即仅考虑单个document得分与预测标签相关性;PairWise,考虑两两样本对之间的排序判断,即假设有三只股票的完美排序为:“B>C>A”,使模型通过学习”B>C”,”B>A”,”C>A”来实现完整排序。常见算法包括:Ranking SVM, RankBoost, RankNet, LambdaRank和LambdaMRT等。此处以Hinge Loss为例:
该损失函数的设计思想为,对所有i>j,使得两只股票的预测结果相对大小准确,惩罚那些排序错误的样本对。
此外,由于量化投资领域我们更关注多头组股票的排序准确度。而在互联网领域中同样如此,如搜索引擎的前几条结果,信息流式APP的前几页内容。排序学习中的NDCG思想就是为了解决这一问题而设计的,首先我们定义DCG:
其中,代表排在j位置样本的得分。代表随着排序位置靠后的折扣因子,即位置越靠后,该样本对最终损失函数的影响就越小。
若假设有5支股票的实际排序和模型预测排序结果如上表,则可得此外,我们继续定义为完美排序下DCG的得分,则IDCG=45.64。由此,
即为考虑前K个样本排序准确性的衡量指标。通过该方法,我们可以使模型更加关注排序靠前样本的预测准确性。NDCG也成为众多损失函数会使用的关键指标。我们统一所使用原始量价数据,训练模型为GRU,仅修改损失函数,对比了不同排序学习损失函数与MSE之间的差异:
可以看出,使用排序学习所得因子整体表现突出。部分因子在IC指标、多头收益表现和稳定性上超过传统使用MSE作为损失函数的训练结果。
1. 不过,ListWise类损失函数相较于PairWise并未有明显提升,两类损失函数各有优劣。
2. 部分使用结合了NDCG作为评价指标的损失函数在多头端表现出较高的收益稳定性,如LambdaNDCG2, ApproxNDCG和NeuralNDCG的多头信息比率和多头超额回撤均在所有损失函数中表现最优,而多空的收益水平就没有明显优势。
同时我们观察此类损失函数所得因子与MSE所得因子的相关性水平,可以发现PairWise的部分因子相关性较高,Hinge和Logistic(包括RankNet)两种模式没有明显差异。而Lambda NDCG能带来明显增量信息,与其他损失函数普遍相关性较低。ListWise的损失函数与回归相比,同样有较低的相关性水平,基本在0.8左右。
最终,我们将表现较好且差异性较大的三个排序学习损失函数(DCG Hinge Loss, Lambda NDCG2, Neural NDCG)与MSE所得因子值等权合成,得到结合了排序与回归学习之后的模型因子:
因子在大部分指标中相较于单个损失函数所形成因子均有一定程度提升,因子IC均值14.42%,多头年化超额18.90%,多头超额回撤3.82%。多空年化收益率61.14%,多空夏普4.22,多空最大回撤12.38%。
(二)样本权重调整
对于损失函数的设计,另一个常见思路为调整根据需要调整样本权重。这种做法在CV领域相对更加常见,研究人员会对更加难以学习的样本增大其权重,从而使模型对于这类样本的错误预测更加敏感,在后续轮次中学习会更有倾向性。而在量化选股领域,鉴于调仓时一般只会用到多头组或多空两组,因此增强两侧的股票组的权重不失为一种方法。
表中EW为原始MSE损失函数,所有样本权重一致,LSW2为将多空两组样本权重调高后的损失函数。可以看出,IC相关指标并未有明显变化,不过因子的多头收益、回撤水平基本都有一定提升。在沪深300股票池中,多头年化收益率从18.91%上升至19.46%,多头超额最大回撤由-6.51%下降至-4.66%。因此,我们后续因子均使用权重调整后的损失函数进行训练。

四、预测目标处理

(一)预测目标选取与预处理
由于此处我们仅考虑Alpha选股策略,预测目标应当是股票收益率的横截面差异,股票收益率本身的预测准确性并不重要。因此,与其他领域机器学习预测不同的是,我们此处对标签选择和标签处理进行了对比和分析。对于月度调仓策略而言,我们使用T+1日至T+21日的收盘价计算收益率。并分以下情况对比:
表中所列预处理方式与上文中相同,可以发现:
1.当使用绝对收益率时,必须使用截面标准化方案,相较于整体标准化所得因子的IC均值有显著提升。我们认为主要原因在于,截面标准化能排除掉市场beta的干扰信息,使目标仅包含截面收益率差异本身,从而能使模型更易学习。
2.当使用超额收益率时,两种处理方式依然有一定差异,但差异幅度有一定缩小。这是由于超额收益率本身已经相当于做了一次截面标准化,再做标准化的影响就不再那么明显。
因此,我们最终结合投资逻辑,选择超额收益率进行CSRank处理后作为预测目标进行训练。
(二)预测目标周期长度影响
另外一个对于预测目标的常见变化思路为更改预测周期长度,使其与最终调仓周期错位,观察所得因子的可能差异。我们分别选择未来10日、20日、40日、60日和80日的收益率作为预测目标,统一设置调仓频率为月频,以每月月初收盘价作为调仓价格进行因子测试:
从上表中可以发现,对于都使用月度调仓的模式下,不同的预测目标周期会给因子带来显著影响。随着预测目标周期的提升,因子的IC、收益和回撤水平整体呈逐渐变差的趋势,不过因子的换手率也同步出现显著下降。若我们将相邻周期长度所得因子(Ret10,Ret20,Ret40)进行等权合成,则能明显看出因子表现大部分指标均出现一定提升。
但由于因子测试中,我们没有考虑手续费的影响,此处我们考虑每月等权买入多头组股票构建对应宽基指数的选股策略,考察周期长度对于策略层面的影响:
可以发现,对于两个模型,不同预测周期的因子合成后所构建策略在沪深300、中证500股票池中表现有明显的提升。以GRU为例,若与Ret20相比,在沪深300中策略的年化超额从17.30%上升至18.54%,信息比率从1.67上升至1.81,超额回撤从-10.78%下降至-9.87%。在中证500股票池中年化超额从13.28%上升至14.28%,信息比率从1.47上升至1.53,超额回撤从-19.43%下降至-17.80%。
不过这一改进在中证1000中并不明显,我们考虑这可能是由于在更小的股票池中,反转效应会更加明显,收益率排序的持续性较弱。改变预测周期长度所带来的负面影响已经大于其减少的换手率所带来的好处。

五、基于机器学习模型的指数增强策略

最终我们综合考虑上述训练过程的全部细节,对模型重新训练,得到最终选股因子。因子在各主要宽基指数股票池表现良好。使用该因子作为目标函数进行组合优化,控制行业偏离、市值偏离、个股权重偏离和成分股权重等。
为避免回测区间过长导致近两年曲线走势不够清晰,我们从2020年开始回测,截止2025年5月底,月度调仓,以每月月初收盘价交易,手续费假设双边千三。
策略整体表现优异,沪深300指增年化超额收益率为10.03%,超额最大回撤-5.42%,信息比率为2.23。
类似地,我们测试中证500指增策略表现。中证500指增策略的超额稳定性略有下降,年化超额收益为8.41%,超额最大回撤为-10.78%。
机器学习类因子在中小盘中具有天然优势,中证1000指增策略走势相对更加稳健,年化超额收益为11.44%,超额最大回撤为-7.95%,信息比率为2.09。

六、风险提示


本文所述算法与模型用量化方法通过历史数据统计、建模和测算完成,所得结论与规律在市场政策、环境变化时存在失效风险。
基于模型得到的相关结论并不能完全准确地刻画现实环境以及预测未来。
本文策略通过一定的假设与历史数据回测得到,当交易成本提高、市场结构及交易行为改变时有可能存在失效风险,可能导致策略收益下降或出现亏损。

法律声明:
本微信号推送内容仅供广发证券股份有限公司(下称“广发证券”)客户参考,其他的任何读者在订阅本微信号前,请自行评估接收相关推送内容的适当性,广发证券不会因订阅本微信号的行为或者收到、阅读本微信号推送内容而视相关人员为客户。
完整的投资观点应以广发证券研究所发布的完整报告为准。完整报告所载资料的来源及观点的出处皆被广发证券认为可靠,但广发证券不对其准确性或完整性做出任何保证,报告内容亦仅供参考。
在任何情况下,本微信号所推送信息或所表述的意见并不构成对任何人的投资建议。除非法律法规有明确规定,在任何情况下广发证券不对因使用本微信号的内容而引致的任何损失承担任何责任。读者不应以本微信号推送内容取代其独立判断或仅根据本微信号推送内容做出决策。
本微信号推送内容仅反映广发证券研究人员于发出完整报告当日的判断,可随时更改且不予通告。
本微信号及其推送内容的版权归广发证券所有,广发证券对本微信号及其推送内容保留一切法律权利。未经广发证券事先书面许可,任何机构或个人不得以任何形式翻版、复制、刊登、转载和引用,否则由此造成的一切不良后果及法律责任由私自翻版、复制、刊登、转载和引用者承担。


Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/183478
 
45 次点击