发明内容
本发明的目的在于提供一种证券组合投资的交易策略挖掘方法、系统、设备及存储介质,本发明的证券组合投资的交易策略挖掘方法建立基于量化关联规则的模型,以从已知的(基本的、技术的、风险等)因素生成有效的α。
为达到上述目的,本发明采用了以下技术方案:
一种证券组合投资的交易策略挖掘方法,包括以下步骤:
S1,获取证券组合历史交易数据库,其中每个交易为一组项目,将项目按照量化因素和分类因素形成项目集,将因素的值域划分为不同的区间;将项目中一对因素和区间的关系采用布尔关联规则映射为一个布尔项目单元;
S2,对所有的布尔项目单元进行两两匹配,得到一组长度为设定值的规则的数据矩阵,形成规则集,计算规则集中所有规则的支持度之和及所有规则的置信度之和;
S3,基于支持度之和及置信度之和,采用贪婪算法优化量化项目的区间;
S4,通过数据挖掘算法对优化量化项目的区间进行挖掘,得到满足最小支持度和置信度要求的规则,作为证券组合投资的交易策略。
作为本发明的进一步改进,所述S1具体包括:
所述项目中的因素包括量化因素和分类因素;
因素集为
其中
是大小为m×n的数据矩阵,其中m是天数,n是股票数量;|·|表示集的大小;
将一对因素与区间的关系映射为一个布尔项目单元;
项目单元为五个一组itemk={f(k),t(k),l(k),r(k),d(k)};其中,
·t(k):因素f(k)的类型;
·l(k):区间的左端点;
·r(k:区间的右端点;
·d(k):大小为m×n的数据矩阵,其中
其中,itemk的类型是量化项目或分类项目,由得到itemk的因素的类型来决定;l(k)和r(k)是预先确定然后在算法中调整的两个未知变量。
作为本发明的进一步改进,所述S1中,将因素的值域划分为不同的区间,具体包括:
将因素的值域划分成几个区间,将一个因素集转化为一个项目集;
对于量化因素,假设把一个量化因素映射到K个项目;首先,将值的域划分为等深度的K个区间,即每个区间中的数据点数量大致相同;有断点列表[p0,p1,…,pK_1,pK],其中p0=_inf并且pK=inf;对于从此因素生成的第d项目itemid,具有l(id)=pd_1且r(id)=pd;l(id)和r(id)是itemid的构造中的仅有的两个未知变量;
对于分类因素,将D类别表示为c
1≤c
2≤…≤c
D;从因素一个接一个地生成项目,首先,选择常数u∈(0,1);然后,对于第一项目itemi
1,指定
且
如果
停止item
i1的构造,否则,设置r
(i1)=c
3并且继续检查,假设当r
(i1)=c
3时,停止itemi
1的构造;然后,通过设置
且
开始item
i2的构造;重复整个过程,直到所有的项目都生成。
作为本发明的进一步改进,所述S2中计算规则集中所有规则的支持度之和和所有规则的置信度之和,采用以下方法:
在两个矩阵之间定义了运算符∧,假设A和B是两个大小为m×n的矩阵,B∧A的结果是大小为m×n的矩阵,其中每个条目定义为:
规则被定义为一个或多个项目的组合;
将长度为l的规则表示为:规则=[itemk1,itemk2,...,itemkl};规则的数据矩阵被定义为:
其中,
是
的数据矩阵,rule
d是大小为m×n的矩阵;
规则的支持度为:
股票收益为目标或机器学习术语中的标签;
标签是需要预测的在今天的收盘价和持有期t天后的收盘价之间股票收益;用
表示标签矩阵,其中t是持有期,
是在第i天股票j的标签;
收盘i,j是股票j在第i天的收盘价;
规则的置信度定义为:
作为本发明的进一步改进,所述S3具体包括:
在获得长度为预设值的规则后开始优化区间,对于每个量化itemk,选择包含itemk的长度为2的所有规则,并将其表示为规则集;
计算规则集中所有规则的支持度之和,计算规则集中所有规则的置信度之和;
根据区间划分中确定的原始区间来优化量化项目的区间,支持度之和及置信度之和作为贪婪算法的目标,寻找优化区间。
作为本发明的进一步改进,所述S4具体包括:
采用原始的Apriori算法扫描整个数据库,并通过模式匹配来检查每个记录,对于规则=[itemk1,itemk2,itemk3],Apriori算法通过模式匹配来检查每个记录,查看itemk1、itemk2、itemk3是否在其中,进而计算候选集中的规则的支持度;
候选集的生成基于Apriori性质:如果数据库中任何k-项目集不频繁,则它的长度为k+1的超项目集不能频繁;当规则中的项目按字母顺序排序时,按字母顺序比较两个规则,保持Lk的顺序生成加速候选集;将L1放在第一位,然后,按照下列过程仔细进行选择和组合,保持规则和Lk的顺序;首先用简单的方法从Lk生成C′k+1:从Lk选择两个规则;如果规则中的前k-1个项目相同,那么,将两个规则组合成长度为k+1的新规则;其次,使用Apriori性质来通过Lk过滤C′k+1,并获得候选集Ck+1;对于任何规则∈C′k+1,利用二分搜索法检查所有其k-项目集是否都在Lk中。
作为本发明的进一步改进,还包括对交易策略的验证和测试过程步骤;
获取量化投资因素和专有因素形成数据集,并划分为训练集和测试集;训练集用于交易策略挖掘,验证集评估交易策略挖掘生成的交易策略的有效性;
还包括根据对验证集的回测结果来选择交易策略;具体采用KNN算法回归以改善交易策略;
每个α由不同的因素区间组成;输入数据是一个向量集,其中每个向量由构成α的因素的数值组成;输出数据是相应的股票标签;还包括相似度测量计算步骤:
计算交易策略之间的相似度,并保留相似度低的交易策略;
其中,S(a)是规则(a)的股票推荐集,如果规则(a)推荐在第i天购买股票j,则Sij∈S(a);
那么规则(a)和规则(b)之间的相似度被定义为:
一种证券组合投资的交易策略挖掘系统,包括:
区间划分模块,获取证券组合历史交易数据库,其中每个交易为一组项目,将项目按照量化因素和分类因素形成项目集,将因素的值域划分为不同的区间;将项目中一对因素和区间的关系采用布尔关联规则映射为一个布尔项目单元;
区间调整模块,用于对所有的布尔项目单元进行两两匹配,得到一组长度为设定值的规则的数据矩阵,形成规则集,计算规则集中所有规则的支持度之和及所有规则的置信度之和;
区间优化模块,用于基于支持度之和及置信度之和,采用贪婪算法优化量化项目的区间;
区间挖掘模块,用于通过数据挖掘算法对优化量化项目的区间进行挖掘,得到满足最小支持度和置信度要求的规则,作为证券组合投资的交易策略。
一种电子设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现所述证券组合投资的交易策略挖掘方法的步骤。
一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现所述证券组合投资的交易策略挖掘方法的步骤。
与现有技术相比,本发明的有益效果体现在:
本发明建立基于量化关联规则的模型,以从已知的(基本的、技术的、风险等)因素生成有效的交易策略α。特别地,提出了一种在量化关联规则算法中优化区间的新方法和加速方法。通过关联不同的已知因素的不同信号,获得了既可解释又可获利的新交易策略α。对公共数据集和专有数据集进行了大量实验。从两种数据集生成的交易策略α在验证集和测试集上都显示出稳定的盈利性。然后使用KNN-回归量来进一步改善交易策略α的性能。本发明提供了一个详细的案例研究来证明为什么关联普通因素可以形成更有效的交易策略α来预测股票的未来收益。实验结果表明,基于量化关联规则的方法在产生新颖且可获利的交易策略α因素方面是非常有效的。
具体实施方式
下面将参考附图并结合实施例来详细说明本发明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
以下详细说明均是示例性的说明,旨在对本发明提供进一步的详细说明。除非另有指明,本发明所采用的所有技术术语与本申请所属领域的一般技术人员的通常理解的含义相同。本发明所使用的术语仅是为了描述具体实施方式,而并非意图限制根据本发明的示例性实施方式。
如图1所示,本发明提供一种证券组合投资的交易策略挖掘方法,包括以下步骤:
S1,获取证券组合历史交易数据库,其中每个交易为一组项目,将项目按照量化因素和分类因素形成项目集,将因素的值域划分为不同的区间;将项目中一对因素和区间的关系采用布尔关联规则映射为一个布尔项目单元;
S2,对所有的布尔项目单元进行两两匹配,得到一组长度为2的规则的数据矩阵,形成规则集,计算规则集中所有规则的支持度之和及所有规则的置信度之和;
S3,基于支持度之和及置信度之和,采用贪婪算法优化量化项目的区间;
S4,通过数据挖掘算法对优化量化项目的区间进行挖掘,得到满足最小支持度和置信度要求的规则,作为证券组合投资的交易策略。
以下结合具体实施例对本发明进行详细说明。
基于特定多因素模型的有效性在很大程度上取决于模型中使用的α因素。如何发现新颖有效的α因素(或多个α)引起了经济学家、金融数据科学家和量化投资者的热烈讨论。当前构造新α的主流方法需要金融科学家和分析师的独创性和辛勤工作。因此,从各种金融数据中自动挖掘可解释的α是一种新兴的需求。为此,本发明建立基于量化关联规则的模型,以从已知的(基本的、技术的、风险等)因素生成有效的α。特别地,提出了一种在量化关联规则算法中优化区间的新方法和加速方法。通过关联不同的已知因素的不同信号,获得了既可解释又可获利的新α。对公共数据集和专有数据集进行了大量实验。从两种数据集生成的α在验证集和测试集上都显示出稳定的盈利性。然后使用KNN-回归量来进一步改善α的性能。此外,提供了一个详细的案例研究来证明为什么关联普通因素可以形成更有效的α来预测股票的未来收益。本文的实验结果表明,基于量化关联规则的方法在产生新颖且可获利的α因素方面是非常有效的。
为此,建立了一个基于量化关联规则算法的模型,以自动生成新的可解释的α。在介绍模型的框架之前,演示一个简单的例子来传递的直觉。交易者在股票市场上将不同的信号联系起来,形成股票的“买入”信号,这是非常常见的。现在,提供一个简单的策略,它是Graham提出的价值投资策略的体现。建立了一个至少30只股票的证券组合,这些股票满足特定的市盈率标准(低于10)和特定的债务股本比标准(低于50%)。该策略可以表示为公式:
(市盈率≤10∧债务股本比≤θ),
其中θ是所有股票的债务股本比的50%分位数。市盈率用于确定公司股票的相对价值。债务股本比用于评估公司的金融杠杆率。这两个标准的关联给出了“统计上的最佳概率”。该策略经过回测,显示从1976年到2011年,平均年复合收益率为17.80%。
据所知,将量化关联规则应用于从常见技术因素中挖掘可解释α,这是首要的工作。本发明的主要贡献如下:
(1)提出了一个基于关联规则的框架来从已知因素中挖掘有效的且可解释的α。
(2)提出了一种基于不同规则之间的内在关系,优化量化关联规则[19]算法中的区间的新方法,并提出了一种加速Apriori算法的新方法。
(3)对公共数据集和专有数据集进行了实验。对生成的α进行回测,并在此基础上制定股票交易策略。的实验结果表明,的方法可以生成有效的、可解释的α。还分享了两个生成的α的详细案例研究。
Sharpe(1964)和Lintner(1965)的资本资产定价模型(CAPM)长期以来一直影响着学者和从业者对股票收益的思考方式。它提出市场β是解释股票收益的唯一充分因素。然而,有许多证据表明,股票平均收益不能完全用单因素模型来描述。除了市场β之外,之前的研究提出,股票的平均收益还与市值、账面价值与股本市值的比率(Rosenberg、Reiα以及Lanstein,1985)、过去的销售增长、长期逆转、短期动量等有关。因素列表一直保持增长,因为发现解释股票收益的新因素的积极性从未减弱。
数据挖掘和机器学习技术已经被广泛用于解决金融领域的各种问题。一些先前的工作研究了使用自动特征提取和特征选择来决定哪个特征集更适合金融预测任务。然而,这项工作中所生成的α因素的一个关键特征是它的可解释性。工作还与特征选择相关,特征选择的目的是识别不相关的特征,并选择用于对任务进行建模的特征子集。基于GA的特征提取机制与专家知识相结合,用于选择金融困境预测问题的最佳特征。文献表明,通过消除无关特征可以获得更好的预测性能。另一项相关的前期工作应用关联规则来探索在华沙证券交易所上市的股票项目之间的联动性。证券组合是指一组金融资产,如股票、债券和货币等。在本发明中,只考虑由股票组成的证券组合。由于股票市场的波动性,动态证券组合比固定持有更实用。动态证券组合管理涉及一个连续的决策制定过程,为不同的时间构造不同的证券组合。然后投资者将资金重新分配到不同的股票,目的是在降低风险的同时实现收益最大化。
本发明可以用交易策略α来构造一系列动态证券组合。对于每一天,α给不同的股票不同的值。值越高,股票在持有期t后获得正收益的可能性就越高,对于α,持有期t是固定常数。对于每一天,根据α给出的值对股票进行排序,并选择前K只股进行买入,然后在持有期t天后卖出。通过这种方式,每天使用α动态地改变我们的证券组合。因此,α也可以作为一种交易策略,帮助建立和改变证券组合选择。
为了进一步评估α(α也可以被认为是一种交易策略)的有效性,必须针对历史数据评估其性能。回测广泛地用于评估交易策略。它允许交易者在将策略应用于实际市场之前针对历史数据模拟策略,并分析策略的盈利性和风险。
通过三个主要的评估指标来评估回测的结果。它们分别是年化收益率、夏普比率和最大回撤。
假设回测过程测试证券组合在T天内的表现。t表示日期,St是第t天结束时的总财富。评估指标的定义如下:
·年化收益率:年化收益率表明了策略的盈利性。它计算缩小到12个月时段的一个给定时段的收益率。这个缩放过程允许比较不同时段的不同策略。
年化收益率=e365*每日收益率-1
其中,
·夏普比率:夏普比率是年化收益率和波动率的比率,它可以衡量策略的收益率与其风险率之比。
·最大回撤:最大回撤是金融下行风险的一个流行指标。它衡量证券组合从高峰到低谷的交易时段内的最大损失。
目标是找到年化收益率和夏普比率较高、最大回撤较低的α(策略)。
量化关联规则
给定一个客户交易的大型数据库,其中每个交易为一组项目,必须找到
形式的关联规则,其中X和Y是项目集。例如,“70%包含啤酒的交易也包含尿布”是
形式的关联规则。在这里,啤酒是一个布尔属性,如果啤酒在给定交易中,则对于该给定交易,其值为“1”,否则为“0”。把这类问题称为布尔关联规则问题。然而,属性也可以是量化的或分类的。因此,本发明定义了基于量化和分类因素的关联规则挖掘问题。这个问题叫做量化关联规则问题。为了解决这个问题,将量化关联规则问题映射为布尔关联规则问题。一个显而易见的方法是首先将因素的值域划分为不同的区间。然后,将项目<因素,区间>映射到布尔属性,其中如果记录中的因素值在区间内,则<因素,区间>是“1”,否则为“0”。现在可以使用任何解决布尔关联规则问题的算法来寻找量化的关联规则。
数据描述
总的来说,α因素有两种类型。一种是量化因素,比如一只股票的换手率,如表1所示。另一种是分类因素,例如股票所属行业的代码,如表2所示。
定义(因素集)将因素集形式上定义为
是大小为m×n的数据矩阵,其中m是天数,n是股票数量。|·|表示集的大小。
在下面的定义中,m和n总是表示天数和股票数量。
为了将量化关联规则问题映射为布尔关联规则问题,形式上定义了如何将一对<因素,区间>映射为一个布尔项目单元。
定义(项目单元)项目单元被定义为五个一组itemk={f(k),t(k),l(k),r(k),d(k)}其中
·f
(k):我们从因素f
(k)得到itemk,其中,
·t(k):因素f(k)的类型。
·l(k):区间的左端点。
·r(k:区间的右端点。
·d(k):大小为m×n的数据矩阵,其中
itemk的类型可以是量化的,也可以是分类的,由得到itemk的因素的类型来决定。l(k)和r(k)是我们必须预先确定然后在算法中调整的两个未知变量。这样,平等地对待量化和分类项目。
支持度和置信度
支持度和置信度是在量化关联规则算法中衡量规则有效性的两个主要标准。例子:“70%的包含啤酒的交易也包含尿布,所有交易的2%同时包含啤酒和尿布”。这里
规则的置信度为70%,规则的支持度为2%。然而,与找出任意两组项目之间关系的经典关联规则算法不同,只关注一组项目和股票收益之间的关系。因此,对规则的支持度和置信度甚至规则本身的定义都有点不同。
定义(运算符∧)在两个矩阵之间定义了运算符∧。假设A和B是两个大小为m×n的矩阵。B∧A的结果仍然是大小为m×n的矩阵,其中每个条目定义为:
规则被定义为一个或多个项目的组合。例如,长度为3的规则可以表示为规则=[itemk1,itemk2,item3].
定义(规则)将长度为l的规则表示为:规则=[itemk1,itemk2,...,itemkl}。规则的数据矩阵被定义为:
注意,
是
的数据矩阵,那么,rule
d是大小为m×n的矩阵。规则也可以被认为是一个二进制α,它每天给每只股票一个“0”或“1”的值。如果
则规则建议在第i天买入股票j。以下定义中规则的默认设置。
定义(支持度)规则的支持度定义为:
表1:量化因素
表2:分类因素
规则的支持度是它在m天对n只股票做推荐的次数百分比。如果某一规则满足最小支持度要求,称之为频繁规则或频繁项目集。由于问题的特殊性,即每个项目都可以用一个相同大小的矩阵来表示,以一种替代但等效的方式来定义“支持度”。与需要遍历整个数据集并进行计数的经典支持度定义不同,支持度定义只需要访问与规则相关的项目,因此大大加快了关联规则算法。
由于只关注一组项目和股票收益之间的关系,股票收益可以被视为目标或机器学习术语中的标签。因此,在以创新的方式定义新的置信度之前,必须首先定义标签。
定义(标签)标签是需要预测的在今天的收盘价和持有期t天后的收盘价之间股票收益。用
表示标签矩阵,其中t是持有期。
是在第i天股票j的标签。
收盘i,j是股票j在第i天的收盘价。
定义(置信度)规则的置信度定义为:
规则的置信度是它提出的所有建议的平均收益。而置信度的设计衡量的是规则与股票正收益之间的关系。目标是找到支持度和置信度大于指定的最小支持度(minsup)和最小置信度(minconf)的规则。
相似度测量
关联规则算法通常生成彼此相似的规则。因此,测量两个规则之间的相似性成为一个关键问题。如果两个规则彼此相似,则它们会推荐相似的股票在每天买入。
定义(股票推荐集)S(a)是规则(a)的股票推荐集。如果规则(a)推荐在第i天购买股票j,则Sij∈S(a)。
那么规则(a)和规则(b)之间的相似度被定义为:
模型
本本发明提供了一种用于挖掘新α的量化关联规则算法的关键组成部分。算法1给出了框架的概要。具体来说,首先将一个因素的值划分成几个区间,并将每个区间分配给一个特定的项目。然后,两两匹配所有的项目,得到一组长度为2的规则。保留支持度大于minsup的规则,然后利用项目和长度为2的规则之间的内部关系来优化每个量化itemk的l(k)和r(k)。接下来,使用加速方法继续Apriori算法的过程,并获得一组满足最小支持度和置信度要求的规则。最后,对新数据集验证和测试这些合格的规则,这些规则也被认为是新的α。计算α之间的相似度,并保留那些彼此不太相似的。试图解释这些达到最高性能的α。
算法1模型
1:输入:minsup,minconf,itemsets
2:输出:规则集
3:对于每个因素,区间划分。
4:根据itemsets和minsup生成L1和L2规则集。
5:基于L2调整区间,然后根据优化的区间更新L2。
6:k=3
8:从Lk-1生成Ck。
9:Lk={c in Ck|sup(c)≥Minsup}
10:k=k+1
11:end while
12:L=L1UL2U....
13:删减L中置信度小于minconf的规则。
14:对验证集和测试集回测L中的规则。
区间划分
算法的第一步是将因素的值域划分成几个区间。目标是将一个因素集转化为一个项目集,从而将量化关联规则问题映射为布尔关联规则问题。量化因素和分类因素的区间划分方式是不同的。
假设把一个量化因素映射到K个项目。首先,将值的域划分为等深度的K个区间,即每个区间中的数据点数量大致相同。现在有断点列表[p0,p1,…,pK_1,pK],其中p0=_inf并且pK=inf。对于从此因素生成的第d项目itemid,我们具有l(id)=pd_1且r(id)=pd。注意,l(id)和r(id)是itemid的构造中的仅有的两个未知变量。如此,已经确定itemid的所有元素。
分类因素的映射有点不同。如果分类因素的值彼此不相关,例如表2中的行业因素,可以将因素的每个值映射到不同的项目。然而,如果分类因素的相邻值具有相似的属性,例如,显示股价已经下跌多少天的因素,将需要另一种方法。假设我们有一个D类别的分类因素。将D类别表示为c
1≤c
2≤…≤c
D。从这个因素一个接一个地生成项目,这个过程在算法2中演示。首先,选择常数u∈(0,1)。然后,对于第一项目itemi
l,指定
且
如果
停止item
i1的构造,否则,设置r
(i1)=c
3并且继续检查′if′子句。假设当r
(i1)=c
3时,停止itemi
1的构造。然后,通过设置
且
开始item
i2的构造。重复整个过程,直到所有的项目都解决了。由于相邻类别通常具有相似的属性,因此上述方法是合理的。
区间调整
区间的划分方式直接决定了量化关联规则算法的结果。因此,如何找到“好”的区间成为一个至关重要的问题。注意,问题设置不同于经典关联规则,即只关注项目组合和股票收益之间的关系。因此,设计了一种基于支持度和置信度的项目区间优化算法。
算法2将分类因素映射到一组项目
在获得长度为2的规则后开始优化区间,如算法1所示。对于每个量化itemk,首先选择包含itemk的长度为2的所有规则,并将其表示为规则集。然后,计算规则集中所有规则的支持度之和,使其为supr。还计算规则集中所有规则的置信度之和,并称之为itconfr。因此,希望为itemk找到用于实现更大的supr和confr的“好”的区间。
根据区间划分中确定的原始区间来优化量化项目的区间。注意,较大的supr通常意味着较低confr。使用supr和confr的组合,作为贪婪算法的目标,以寻找更好的区间。首先考虑l(k)向左移动,而r(k)向右移动。这两个移动会增大supr而向相反方向移动会减小supr。这两个移动是如何影响confr的。如果两个移动中的任何一个增大confr,选择获得更大增大的那个作为下一个移动。否则,如果两个移动都减小confr,检查两个移动方向相反的移动,看是否增大confr。如果四个移动都减小confr,就达到了局部最优。注意,一个项目的优化会影响其他项目的优化。因此,逐一优化所有项目。
Apriori和加速方法
经过区间调整后,需要关联规则算法来生成新的规则。Apriori和FP增长是解决这个问题的两种流行算法。这里选择Apriori而不是FP增长,原因如下:
1.在处理大型数据库时,FP增长算法快速满足巨大存储器需求的瓶颈。
2.通过实验观察,我们只需要长度小于或等于5的规则,而长规则缺乏可互操作性。可以在长度为5的规则生成后停止Apriori,而不清楚如何提前停止FP增长。
Apriori因其巨大成本在两个方面受到批评:
1.它必须重复扫描数据库,以检查候选集是否满足最低支持度要求。2.生成候选集的成本很高。这里我们提出两种方法来解决这两个问题。
为了计算候选集中的规则的支持度,原始的Apriori算法必须扫描整个数据库,并通过模式匹配来检查每个记录。例如,对于规则=[item
k1,item
k2,item
k3],算法必须通过模式匹配来检查每个记录,看item
k1、item
k2、item
k3是否在其中。然而,根据对支持度的定义,只需要访问涉及规则的item
k1、item
k2、item
k3,而不是整个数据库,并计算
假设k是项目数,l是规则长度,m是天数,n是股票数。对支持度的定义的计算是O(Imn),而原始的计算是O(kmn)。由于k>>l(在我们实验中,使用专有数据集,k>2000而l≤5),我们可以在这方面大大加速Apriori算法。
候选集的生成基于Apriori性质:如果数据库中任何k-项目集不频繁,则它的长度为k+1的超项目集不能频繁。注意,当规则中的项目按字母顺序排序时,可以按字母顺序比较两个规则,保持Lk的顺序是加速候选集生成的关键。因此,必须将L1放在第一位,然后,按照下列过程仔细进行选择和组合,以保持规则和Lk的顺序。首先用简单的方法从Lk生成C′k+1:1.从Lk选择两个规则。如果规则中的前k-1个项目相同,那么,将两个规则组合成长度为k+1的新规则(对规则中的项目进行排序)。其次,使用Apriori性质来通过Lk过滤C′k+1,并获得候选集Ck+1。第一步在实践中运行得很快。至于第二步,对于任何规则∈C′k+1,必须检查所有其k-项目集都在Lk中。由于Lk是排序的,可以利用二分搜索法来加速这一过程。因此,第二步的运行时间从O(n)减少到O(logn)(这里n是Lk的大小)。
注意,上面的方法都可以并行实现,只需要长度小于等于5的规则。算法可以在大数据集上以理想的效率运行。在获得所有的频繁规则之后,保留那些满足minconf阈值的规则。最后,对数据集回测这些规则,得到想要的α。回测的结果后面介绍。
KNN-回归以改善α
本发明使用K最近邻回归来达到预期的效果。注意,每个α由不同的因素区间组成。输入数据是一个向量集,其中每个向量由构成α的因素的数值组成。输出数据是相应的股票标签。以
作为示例,如果
那么以向量
作为输入数据之一,且相应的标签是
这里使用的K最近邻回归是一种小规模的关联规则算法,但可以给出一个数值来表示推荐的程度。图2更清楚地展示了这一观点。
实验
对一组众所周知的(基本的、技术的)因素和来自X-tech有限公司的专有数据集进行了广泛的实验。介绍了实验设置。然后,后面给出了α的回测结果以及使用KNN回归改进α之后的结果,并给出了一个坚实的分析来说明本发明模型的有效性。本发明提供了一个详细的案例研究来说明为什么上述模型可以从常见的α因素中挖掘出可解释的α。
实验设置
数据集。在实验中,使用了两个数据集。一个是量化投资中的一组16个众所周知的因素,另一个是X-tech有限公司的一组专有因素。这些因素包括价值因素、成长因素、金融质量因素、动量因素等。这些因素被用作生成新α的基本因素。这些数据是在github页面找到更多关于公共因素的详细信息。X-tech的另一个因素池有288个因素。将对专有数据集和公共数据集进行的实验表示为任务1和任务2。
任务有两个阶段:阶段1是新α的挖掘过程。阶段2是对这些α的验证和测试过程。训练集涵盖29个月(从2015年9月至2017年12月),用于阶段1。验证集涵盖8个月(从2018年1月至2018年8月),用于评估阶段1生成的α。然后,根据对验证集的回测结果来选择α,并使用来自随后4个月的测试集来检查这些α在真实股票市场中的有效性。使用在中国上海和深圳证券交易所交易的800只股票(称为中证800)作为股票池。在回测过程中,当购买股票组合时,通过卖空相同数量(以货币计)的股指期货来对冲风险(在美国,这种策略被称为美元中性)。
表3:持有期为5天的公共数据集的回测结果。括号外/括号内的值是验证/测试集中回测的结果。
形成规则的因素和项目的说明见附录。AR:年化收益率,Vo:波动率,SR:夏普比率,MD:最大回撤
表4:KNN后表3规则的回测结果。括号外/括号内的值是KNN/对照组的回测结果。
表5:持有期为1天的公共数据集的回测结果
表6:KNN后表5规则的回测结果
参数。每个量化因素被均匀地分成10个区间(K=10),对于分类因素,u被相应地设置为0.1。任务1中的minsup和minconf分别定义为0.02和0.1,在任务2中其被定义为0.02和0.00。任务1的相似度阈值为0.5,任务2的相似度阈值为0.8。对于区间调整中的每个移动,确保优化项目的支持度改变0.002。如果在10次移动之内没有遇到一个局部最优,停止这个项目的优化,开始下一个。
对α进行回测
支持度和置信度是评估通过关联规则算法发现的α的两个基本标准。使用回测来进一步评估α的有效性。在回测中,将α作为预测未来股票收益的模型,并针对历史数据进行模拟,以检验模型的性能。首先,针对验证集回测α,并根据年化收益率和夏普比率挑选α。然后,针对测试集对这些选择的α进行回测,看看它们是否能在未来的股市中推广。
回测结果如表3、5和7所示。对于每一天,按照α推荐的收盘价最多买入30只股票(如果α推荐超过30只股票,均匀随机挑选其中的30只。否则会买α推荐的那么多股票)。每次在每只股票上投资1万CNY(人民币)。经过5天的持有期,以收盘价卖出5天前买入的股票。因此,需要5*30*10000=150万作为初始资金。将要求增加50万元,这是150万元的三分之一,作为对冲的现金存款。至于1天的持有期,需要的总初始资金按比例缩小至40万。根据之前的研究,还假设交易费用为零。
对于公共数据集,根据规则在验证集上的年化收益率对规则(α)进行排序。由于从公共数据集生成的规则的夏普比率通常较低,因此很难通过对夏普比率进行排序来区分它们。对于专有数据集,我们根据规则(α)在验证集上的夏普比率的性能对其进行排序。然后,通过要求α列表中的任何α与排序靠前的任何其他α的相似度应当小于阈值来缩小这个列表。最后我们选择列表中的前5个α。如表3、5和7所示,大多数选择的α在测试集上推广良好。在图3、4和5中显示了一些选择的α的累积财富。初始财富被缩小到100万,以更清楚地展示利润。用CSI 300指数(hs300)来表示中国股市的整体走势。
其中,图3为表3中的规则[EP009,n_capital009]的累积财富;图4为表5中的规则[RSI_24007,Ret1M007]的累积财富;图5为表7中的规则1的累积财富。
仍然使用回测来评估KNN回归的有效性。因为已经获得了每个推荐的排序,所以可以投资于排序较高的数量较少的股票。对于每一天,投资于排序前6的股票,而不是像前面的设置中那样随机选择所有推荐中的30个推荐。并且只在当天推荐的数量大于10的时候买入股票,以确保挑选的6只股票能够经受充分的竞争。
表4、6和8显示了在KNN之后对α进行回测的结果。数据集涵盖2018年的12个月。由于实验设置与前一个不同,在括号中给出了对照组的结果。注意,KNN方法在几乎所有性能指标方面都优于对照组。在图3、4和5中,还比较了前一个设置和KNN之后的设置的累积利润。
实施例
给出了表3中排序前2的α的详细案例研究。一个是rule1=[EP009,n_capital009],另一个是rule2=[VOL20_000,VOL240_000,n_capital009]。注意,EP、n_capical、VOL20、VOL240是4个不同的因素,EP009、n_capital009、VOL20000、VOL240000是包含两个规则的项目。这里,项目的最后三个数字表示它在因素中对应的区间。例如,000表示因素值域的第一个或最左边的区间,而009表示因素值域的最后一个或最右边的区间。区间中包含的值从左到右递增。首先,我们给出每个因素的解释。
本质上,EP表明投资者愿意根据股票过去的收益为其支付多少。通常,EP用于确定公司的相对价值。除了显示一家公司的股价是被高估还是被低估,EP还揭示了一只股票的估值与基准或行业的比较。高EP意味着股票价格相对于其收益较低,股票被低估。
n_capital=log(市值)
更高的市值通常意味着更大的公司。大公司通常被认为风险更小,业绩更稳定,尤其是在2018年这样的熊市中。
VOL20和VOL240是过去20\240天的平均股票换手率。股票换手率是衡量股票流动性的一个指标,计算方法是将一段时期内交易的股票总数除以该时期的平均流通股数量。股票换手率越高,股票的流动性就越强。如果一只股票没有吸引力,很少有投资者愿意购买,那么股票换手率就会很低。
现在可以给出这两个规则的解释。对于第一rule1=[EP009,n_capital009],这意味着可以投资于一只被低估的股票,它有能力在熊市中抵御风险。至于第二rule2=[VOL20000,VOL240000,n_capital009],这意味着,对于一只属于大公司的股票,如果其股票换手率远低于其他股票,往往暗示该股票被低估了,反而会在熊市中表现良好。
综上所述,本发明提供了一种模型,从常见因素中生成有效且可解释的α。沿着这一思路,首先将值域划分为区间,并将量化关联规则问题映射为布尔关联规则问题。然后,根据支持度、置信度和长度为2的不同规则之间的关系来优化区间。提出了一种加速Apriori算法的方法,并继续挖掘满足最小支持度和置信度要求的关联规则。接下来,根据规则在验证集上的回测结果进一步评估和选择规则。通过对专有数据集和公共常用数据集的实验证明了模型的有效性,并且选择的大多数规则在测试集上推广良好。还提供了一个详细的案例研究来说明为什么模型能够生成可解释的α。最后,提出了一种KNN回归方法来进一步提高新α的性能,结果表明这种简单的技术可以获得很好的性能。
作为未来的方向,人们可以考虑如何更好地利用生成的α来制定盈利策略。这里的一个挑战是考虑大量生成的α的相互作用。此外,由于关联规则算法的局限性,这种方法如果应用在大规模数据集上,计算量可能会很大。因此,需要一个合理的特征选择过程来缩小因素列表。
如图6所示,本发明还提供一种证券组合投资的交易策略挖掘系统,包括:
区间划分模块,用于获取证券组合历史交易数据库,其中每个交易为一组项目,将项目按照量化因素和分类因素形成项目集,将因素的值域划分为不同的区间;将项目中一对因素和区间的关系采用布尔关联规则映射为一个布尔项目单元;
区间调整模块,用于对所有的布尔项目单元进行两两匹配,得到一组长度为2的规则的数据矩阵,形成规则集,计算规则集中所有规则的支持度之和及所有规则的置信度之和;
区间优化模块,用于基于支持度之和及置信度之和,采用贪婪算法优化量化项目的区间;
区间挖掘模块,用于通过数据挖掘算法对优化量化项目的区间进行挖掘,得到满足最小支持度和置信度要求的规则,作为证券组合投资的交易策略。
如图7所示,本发明第三个目的是提供一种电子设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现所述证券组合投资的交易策略挖掘方法的步骤。
所述证券组合投资的交易策略挖掘方法包括以下步骤:
S1,获取证券组合历史交易数据库,其中每个交易为一组项目,将项目按照量化因素和分类因素形成项目集,将因素的值域划分为不同的区间;将项目中一对因素和区间的关系采用布尔关联规则映射为一个布尔项目单元;
S2,对所有的布尔项目单元进行两两匹配,得到一组长度为2的规则的数据矩阵,形成规则集,计算规则集中所有规则的支持度之和及所有规则的置信度之和;
S3,基于支持度之和及置信度之和,采用贪婪算法优化量化项目的区间;
S4,通过数据挖掘算法对优化量化项目的区间进行挖掘,得到满足最小支持度和置信度要求的规则,作为证券组合投资的交易策略。
本发明第四个目的是提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现所述证券组合投资的交易策略挖掘方法的步骤。
所述证券组合投资的交易策略挖掘方法包括以下步骤:
S1,获取证券组合历史交易数据库,其中每个交易为一组项目,将项目按照量化因素和分类因素形成项目集,将因素的值域划分为不同的区间;将项目中一对因素和区间的关系采用布尔关联规则映射为一个布尔项目单元;
S2,对所有的布尔项目单元进行两两匹配,得到一组长度为2的规则的数据矩阵,形成规则集,计算规则集中所有规则的支持度之和及所有规则的置信度之和;
S3,基于支持度之和及置信度之和,采用贪婪算法优化量化项目的区间;
S4,通过数据挖掘算法对优化量化项目的区间进行挖掘,得到满足最小支持度和置信度要求的规则,作为证券组合投资的交易策略。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
最后应当说明的是:以上实施例仅用以说明本发明的技术方案而非对其限制,尽管参照上述实施例对本发明进行了详细的说明,所属领域的普通技术人员应当理解:依然可以对本发明的具体实施方式进行修改或者等同替换,而未脱离本发明精神和范围的任何修改或者等同替换,其均应涵盖在本发明的权利要求保护范围之内。