24.6 考夫曼的投资组合模型所相关的基因演算方法(GASP)
投资组合资产配置的基本要求是:交易多个市场工具,而不是交易一种工具。Excel的Solver可以用来获取适当的分配比例的估计值,但是它不包括价格的相互关联的运行模式、市场流动性以及处理大型投资组合的职业经理人所需的许多微妙的测量方式。
投资组合的优化模式(具体来说就是均值-方差优化法)是许多金融分析师公认的方法,他们均以之来寻找最佳的资产配置方案。在大学研究生院的金融课程中,此类模式已经作为一种解决方案被推荐。许多华尔街公司也采用这种方法并在季度当中重新平衡相关的投资组合,不过很少有人使用一年期的历史价格,这就给出了最大化之收益率的配置模式且将预期收益置于有效边际的最佳点上。
是否需要找到一个良好的股票组合方式、是否需要平衡期货市场多样化的组合情境或者是否需要对任何资产组合加以平衡调整,这些问题都需要一个特殊的计算机程序。一种经典的投资组合的最优化方式是:我们选择一组最适合混在一起交易的股票且均为多方头寸,将其称为被动型投资组合,因为其中没有交易策略,只是一种配置方法;一旦建仓,关联订单会被长期持有,直到下一个优化模式被运行或组合模式被重新平衡之时,那么这笔投资就是被充分利用的。
本节所讨论的是不同股票和期货市场的交易结果,而不是股票价格或其他现货数据序列中主要考虑的因素及其解决方案。在交易结果中,如果有一段时期没有实施交易策略,那就不会产生收益,而正如我们所见到的那样:此种类型的输入方式给传统的均值-方差理论带来了一个问题,比如应用马科维茨定理,其假设前提是每一天都有价格,因此每一天都会有收益;然而,从考夫曼研究的投资组合的基因演算方法(GASP)来看,此类问题很容易解决。
24.6.1 现代投资组合理论
第20章给出了如何使用基因演算方法找到交易系统的参数值的基本解析方法。在这里,基因演算方法被用来为股票、股指或期货市场工具相关的每一种金融资产服务,凭以发现最佳的配置模式,进而以实现最佳的目标函数。
对于主动型交易者来说,投资组合的配置问题不同于被动型投资者。在现代投资组合理论 [1] 中,马科维茨应用均值-方差法所展示的最优化投资组合情境可以通过确定每只股票所占投资的百分比值的方式来实现之,因为这是马科维茨和那些追随者普遍接受的一个适当配置的、经过风险调整的资产组合模式,而该组合被用来实现在既定的风险等级中获取最高的收益。然而,马科维茨没有解决的问题是:如何利用交易收益且将其作为连续价格的替代品。同时,交易收益本身也呈现出独特的问题。
24.6.2 主动型交易的特殊情境
对于那些使用系统买卖方式的交易者而言,他们的收益反映了相关的决策,对他们来说,基于市场交易价格的最佳投资组合模式是毫无意义的。投资组合的结构可能会对两只同时上涨的、高度相关的股票进行交易,而交易系统则显示,其中一只股票是多头、另一只股票则是空头;那么,在这段时间内,它们之间没有很强的正相关性且应该有强烈的负相关性。因此,每一个市场工具的日间交易收益所反映的是头寸,而不是价格。另外,经典的投资组合优化模式所使用的收益值总是被计算为在观察期间(例如日间或月际)内的价格变化值。
相对于传统组合分析中均值-方差的求解模式而言,日间收益率的标准差是用来表示风险的。每个市场相对于另一个市场工具的协方差代表了相互之间的相关性以及相对的波动率,这种方法对于连续价格序列而言是准确的:在这种情况下,日间价格变化则代表收益。然而,当使用交易收益而不是连续价格时,该方法则不再适用。
例如,当交易标准普尔和债券时,一种使用两条移动平均线的系统方法就会应用以下规则来构建多头、空头和中性的情景:
(1)当快线均值和慢线均值都在上升的时候,则持有多单;
(2)当快线均值和慢线均值都在下降的时候,则持有空单;
(3)当快线均值和慢线均值向不同方向运行时,则平仓且不要植入订单。
1.标准差计算所相关的问题
以前的交易规则导致了一个系统在市场上只占有50%的时间序列,而且在没有头寸的时期,日间收益率为0,而这又如何影响标准差呢?让我们假设一个债券(以及一个被动持有的债券)的价格序列的日间标准差为0.5%。如果刚刚描述的交易系统所占市场的时间序列为50%,那么标准差只有0.25%,因为有一半的日子是零收益。
由于我们用标准差来表示风险,而某种市场工具的交易方法越少,其风险也就越小,因此我们就会把更大的头寸配置给它,例如,如果股票A和股票B的交易收益均值是相同的,但股票A所占的时间序列是50%,而股票B只有25%,同时股票B的收益率的标准差是股票A的50%,因此,它的头寸规模将是股票A的两倍;但是,当它们都在市场上交易时,其风险是一样的。如果将股票B的头寸规模增加1倍,那就扭曲了投资组合的情境且没有起到平衡的作用,而且相关风险也比我们预期的要高。如果使用经典的方法进行资产配置,那我们会在最不活跃的市场上交易较大的头寸,也就是说,我们会着眼于收益率最低的市场。公平地说,一些分析师会用这个结论来进行反驳,他们会说零收益是有意义的,任何两个具有相同标准差的序列都会面临相同的风险。也许,他们应该使用此类配置方式去交易其自身构建的投资组合。
2.协方差计算所相关的问题
相同的间歇收益是协方差计算所面临的一个问题。每对资产之间的协方差是一种内嵌模式,如果数据是价格,那它们会一起上下移动,如此,两者之间的协方差就会很小;如果其运行方式不同,那协方差值就会很大。我们这里假设标准普尔和债券的交易策略于市场总的时间序列当中的占比是50%且于同一时间内的占比只有25%;在75%的时间当中,这两个市场工具中有一个是没有收益的,那么你要如何衡量其收益率的相似性呢?
我们这里考虑一个更极端的范例情境,即当前有两种交易策略:一种是顺势系统,另一种是均值回归。我们将其应用于同一市场工具,从中可以发现:当使用顺势系统进行趋势分析以及应用均值回归系统应对横盘整理行情之时,这两种策略所持有的头寸只占总天数的3%,而相关系数或协方差是用日间收益率计算的。当应用这两种策略进行交易时,合并后的收益将被各自独立交易的更大的回报所压倒,这将导致实际交易中风险出现的概率上升,而此种情境可能没有被计入,但这在统计学上却是正确的。
标准差和协方差似乎忽略了度量的目的,即当它们同时处于活动状态时,其表示的是两种资产的风险。现代投资组合理论对于任何资产组合都有一个明确的、最优的配置方式。如果通过应用不同的技术使用基因演算方法,那么相应的解决方案会比均值-方差法获取更高的收益率。另外,我们可以根据实证结果来显示,当应用间歇式交易收益时,其在计算过程中一定会出现问题。
3.其他不频繁交易活动所相关的问题
一些交易方法可能是非常有选择性的,其会等待合适的组合模式来构建仓位。当交易活动不活跃时,例如相关头寸只占10%~20%的时间序列,那么累积资产序列则似乎已经步入急速增长的区间(当生成交易利润之时)且拉成一条水平线(场外时)。而测试结果的净值会显示:相对于整体投资组合而言,其年化收益率相当低;同时,相应收益值相较于收益率而言则生成一个较高的标准差。然而,这些策略在市场上具有很高的回报并为投资组合提供了重要的多元化的投资模式。在应用传统的均值-方差法构建投资组合时,前述这些策略和收益均被消除了,因为它们的贝塔值(相对于大盘指数的收益)较低,即使它们在行情高度动荡时期可以获取最高回报(每天都有收益),也不能改善其自身处境。
24.6.3 目标函数和目标风险
在问题解决之前,我们有必要确定衡量成功的方式,而被接受的方法是回归比率或信息比率,即以年化收益率除以年化风险。衡量风险的方法有很多种,其中包括:
·以年化波动率来衡量风险 。证券分析师一直以年化波动率、日间收益率的标准差、月际或年化收益率的标准差来测量相应的风险(如果有足够的数据),然后将相关数值乘以时间标量的平方根,以252对应日间或以12对应月际,即使用最为常见的日间收益需要我们用252的平方根来进行年化处理,尽管这是一种长期存在的、被接受的方法,但是应该有人担心,以日间收益率所推算的年化收益率的估计值可能是不准确的。
·由线性回归的残差值来测度相关风险 。另一种常用的风险测量方法是使用线性回归的残差值。此种方法是基于近似投资组合年化收益率的直线斜率而导出的,如果你有5年期的历史收益值,那么残差会于直线上方和下方生成不同收益率项下的标准差,如此则导致相对于5年历史数据而生成损失相关的概率值,这是一个方便而有用的价值,不需要像年化标准差那样估算。
应用残差作为风险度量方法的缺点是:优化过程将会产生最佳的分配比例,从而使收益尽可能地维持在直线附近,当它可以防止行情下跌的时候,其看起来很好,但是它会对长期的收益不利,而这些长期收益的回报将远远超过直线所代表的正态收益率。
·以日间跌幅的半方差法来衡量风险 。标准差法或残差法没有严格的质量标准,而另一种测量方法是:应用跌幅相关的半方差测量方法,以之前的高额累计收益率减去当前累计收益率,其间差额通常是一个正数。因此,每一天都有一个非零的数值,而其不是一个新的、较高的资产价值。这里,利润相关的模式是不存在的,只有亏损,因为其代表了一个特定规模于整个收益区间内下降的可能性,所以我们没有必要对计算结果进行年化处理。同时,相关的投资组合优化过程将试图限制跌幅的规模,但是关于利润的模式则没有纳入议程,其不需要接近一条直线,也不需要变小。
在基因演算方法中,我们使用目标函数OF来进行求解,即
其中σD 是日间跌幅的标准差或半方差,且
式中 EH ——第i天的资产;
Ei ——当前的资产;
EH ≠Ei ;
n——投资的总天数。
上述应用于标准差的所有项均小于n日的数值,而当EH =Ei 时,那么当天会有一个资产新高值。
目标风险是指在某一特定时间内,由标准差或投资百分比值而导出的一种特殊损失相关的概率。你可以指定组合必须有一个小的损失概率,例如10年内资产下跌10%的可能性是0.1%(1%的1/10)。而10%的损失则是基于测量的风险、收益率的标准差、可能性跌幅的标准差(半方差)或溃疡指数(可参看第23章关于不同风险测度方式的相应内容)而计算的,其都需要指定最大和最小目标风险的级别。实际上,最小化的方式是必要的,因为相关项目总是可以配置很小一部分投资,从而降低相应的风险,这通常会导致收益率低得令人无法接受。在寻找最佳投资组合时,我们可以通过创建一系列风险承受范围的方式来规避那些不可接受的解决方案。
24.6.4 最优化的投资组合模式
最优化的投资组合的构建过程与在经典的均值-方差法和基因演算方法之间做出选择的模式是一样的,同时,它也是目标函数项下一种最好的资产配置方法。在我们的范例情境当中,其是最低风险所对应的最高收益率,也称为信息比率。我们不考虑投资者的风险偏好,因为一些投资者会接受较高的风险来换取较小的边际收益,而任何理性的投资者都会选择:
·在同样的风险下具有较高的收益;
·在同样的收益下具有较低的风险。
有效边际的概念是在第22章中引入的,它显示了代表投资组合最佳选择模式的曲线,满足了理性投资者的目标。图24-6显示了最优投资组合的有效边际,标记为A点:如果无风险收益率(RF)是5.0%,那么最优投资组合点位于一条直线之上,即从无风险利率点开始与有效边界点相切的那条直线,这也是损益比率的最大点。于更高的有效边际之上的投资组合情境显现在A点的右侧,其风险的增长速率比收益要快;在A点的左端,收益率下降的速度要快于风险。而随着无风险收益率的增高,A点将向右移。
图24-6 基于有效边际的最佳投资组合情境
24.6.5 投资组合的约束条件
投资组合约束条件是强加于投资组合项目上的,其代表了实际的考虑和限制因素,其中最明显地受到限制的是流动性。其实,一些股票或期货市场比其他市场更为活跃,而投资组合优化模式不能允许为交易清淡的股票过多地配置资金,这将导致点差过大和执行不力且远远超出了在相关策略测试当中所考虑的交易成本。一个安全的规则是:不超过一天的平均交易量应该是总资本的1%,一些经理人会说是3%——少量交易总是更好的。
把流动性约束条件指定为绝对数字是切合实际的,如微软的500000股或标准普尔迷你电子盘合约5000份等。然而,将资产配置比例限制在相关投资一定百分比范围内的做法不一定会转化成正确的股票或合约数量。
这里也可能有必要限制负值的配置比例或权重值,这意味着你将在相关资产中持有反向头寸,例如从某种既有欧元又有黄金的投资组合模式中我们可能会发现:欧元的收益率比黄金要高且升值速度更快,那么理想的资产配置方法可能是投资5%于欧元、-3%于黄金,而此种交易欧元和黄金的有效套利模式将得到更好的损益比率。一些投资者可能对前述这一类的解决方案很满意,然而大多数投资者更喜欢的是呈正值的配置比例。
24.6.6 约束条件的多样化模式
在理想的情况下,投资组合配置计划应该允许混合和匹配任何市场工具,进而构建最好的投资组合情境。然而,在现实世界中,我们要有选择性地进行操作且于下列模式之间进行实际的选择,即
(1)一次性优化所有股票的投资组合情境;
(2)优化一个板块或行业集团的股票收益率,然后,应用步骤(1)的资产配置方法来优化处理集团股票的整体收益率。
虽然基因演算方法的解决方案很快速,但时间总是一个因素。我们将资产划分为普通组,优化这些较小的集合并创建一个子组合的收益序列,然后,优化小组合的测试结果证明其是一个比单一大型优化交易更快的程序,因为时间的计算是以指数的形式而扩展的,如果有10种单独的优化模式,每个优化模式项下有10种资产,那么整体的优化模式将惠及100种资产。此外,我们也有机会在纯机械的过程中向其输入一定程度的常识性概念。
我们可能会更多地了解相关价格变动的可能性,而不是去测试投资组合程序是否能够通过之前几年的震荡行情来获取收益的现金流。在极度紧张的时候,所有资产都具有高度相关性;如果历史价格没有出现足够多的导致共同价格变动的事件类型,那么投资组合程序对类似资产所配置的资金比率可能过大;当使用最近期时间间隔来寻找投资组合时,相关性又可能不会显得特别强烈。然而,相关股票同方向移动的罕见事件对于风险来说是非常重要的,我们应该有足够的数据,并且其中应该包含高风险事件。
24.6.7 基因演算方法(GASP)相关的解决方案
GASP程序应用一个基因演算方法进行求解,因为它是快速的且可提供非线性的方法,所以它能够应用常见的交易系统来处理收益互斥的问题。基因演算方法的解决方案有六个步骤:
(1)初始化;
(2)投资组合目标函数的计算;
(3)测试完成;
(4)传播;
(5)配置;
(6)变异。
在步骤(6)之后,程序将返回步骤(2)和步骤(3),直至生成满意的测试结果。
准备交易
为了启动组合资产配置的相关程序,我们首先需要输入每种资产的收益序列,在传统的股票投资组合当中,其可能来源于价格序列的日间收益率且使用pt /pt-1 -1或ln(pt /pt-1 )的模式计算。相对于交易者,尤其是期货交易者而言,收益序列是应用到每个市场工具之上的交易策略所相关的利润或损失,其被转换为百分比的变化值且基于指定的投资反映出累计利润和损失的数据;我们也可以将资产净值(NAV)序列输入程序,而这些数据可以很容易地转换为日间收益率。表24-4显示了5种资产所代表的一种交易策略的NAV值,而且该策略被应用于5个不同的市场工具,例如苹果公司、通用电气公司、欧元期货、10年期美国国债期货、原油期货,相关历史数据任意开始于2000年8月23日。
表24-4 收益表示为资产净值的情境
接下来,我们要创建常用的交易单元。最终的投资组合将根据收益序列为每种资产分配一定比例的资金,相应百分比值应该以原始收益率相同的方式应用于相关资产,而这对于只有股票的投资组合来说是很简单的。但是,当股票和期货混合交易时,你需要知道配置于期货的初始投资比例,如此才能正确地进行重新配置。
如果相关资产的收益是由不同的投资所生成的,那么测试结果将试图使风险趋于平衡。例如,如果资产A的收益序列是基于200万美元的投资且其他四种资产B~E的投资分别是100万美元,那么最终的投资组合将配置11.1%的资本于A、22.2%于其他资产,从而构建等值的投资风险,因为它认识到200万美元资产收益率的波动性是其他资产的两倍。资产A交易的金额是其他资产的一半,这将使所有资产金额的净值相等。
为避免混淆,在为每个系统或市场工具创建收益之时,相关策略是最容易配置等值且公平的投资金额的。
24.6.8 资产链接池的初始化模式
在寻找最佳投资组合方式的起始阶段,我们首先要创建一个随机性投资组合模式,通常称为“基因演算方法术语中的字符串”。相应链接池也可以被认为是一个基因库,因为未来的投资组合将由它创造。为了增加搜索的速度,这个链接池应该尽可能地扩展。少于25种资产的投资组合在该池中有5000个字符串就足够了。为了获得组合的数量,进而保证一个完整的顺序搜索方式,我们可以查看前述5种资产的范例情境,它们可以有1005 或100亿种组合模式,而我们需要判断相关数据是不是整体百分比值当中的百分比配置比率,而不是百分比的分数值。
随机创建投资组合的相关模式
我们使用5种资产的范例情境构建一个组合或者一串字符,其由以下内容组成:
(1)为每5种资产于0和1之间找到一个均匀随机数。在表24-5中,Excel函数RAND()用于A~E当中的每种资产以及每种投资组合,相应数据列于链接池中的第1~18行。
表24-5 生成随机数,凭以创建权重因子
(2)为每个投资组合添加5个随机数字以获得总数“T”,在右侧的列中显示。
(3)将每个随机的数字除以T,得到一个标准化的百分比值,所有随机数字的总数等于1。这些数字是表24-6中所示的加权因子或每种资产的初始分配比率。
表24-6 链接池中每种投资组合模式的加权因子的正态分布情境
(4)应用约束条件。并不是所有的投资组合都有资格成为选项。如果投资很大,达到1亿美元,那么如果资产A是股票,那它的买入规模必须受到限制,即不可超过1000万美元,同时,相关资产的权重因子不能大于10%,这个问题可以通过拒绝任何A资产权重因子为0.10的投资组合模式的方法来解决。在表24-6中,其将拒绝除第7行和第6行两个组合情境之外的所有投资组合模式。幸运的是,生成初始投资组合的过程非常快,拒绝90%组合模式的做法不会显著地延缓相关程序。另外,为资产A生成一个随机数的方式似乎更加有效,该方法可以通过使用Excel的Rand-between(0,0.10)函数来生成一个0~0.1的数值,但是,其他随机数生成之后的随机调节程序可能会导致某一个值(A值)大于10%。
另外,投资组合流动性的约束条件也必须予以纠正。在每个资产被配置之后,另一个随机数会被设置于零与整体组合的最大流动性之间;然后,该组合中的资产被扩展到该数值,我们现在考虑一组设置于1000份期货合约的流动性因子,其所包含的三个资产已经被配置了550份最大流动性的合约,100份和300份基于各自系统流动性约束条件的合约。然而,在这个组合的总体配置当中,其所包含的流动性可能小于该组合所应有的最大值。接下来,我们选择一个随机数,从而获取相关组合的流动性因子,例如,如果选择0.40的随机权重值和该组合的最大流动性,即1000份合约,那么此类组合所有的资产配置将被重新调节为400份合约。于再次进行资产重组之时,我们有必要防止个别资产的流动性超过其最大限制值。
最大和最小的绝对风险值是另一个约束条件。尽管目标函数是收益除以风险,但是绝对风险的数值在测试结果中也是很重要的。一些投资者不会接受风险超过某个预先确定值的投资组合模式,而在其他情况下,其不可能获得比20%年化收益率更大的回报,也不可能规避区间范围居于8%~20%的年化风险。任何生成低于8%或超过20%风险的随机性投资组合模式都将被拒绝,而相应数值的计算将在下一节中进行。
24.6.9 评估资产链接池中的每个字符串
相应的评估程序需要计算每个字符串的组合收益值并分析测试结果,进而发现相关的目标函数,这是在创建初始资产池后瞬时完成的,并且其是在每个周期的初始时刻于整个基因演算方法相关的程序之中完成的。此种测试选择的目标函数是信息比率,因此我们只需要发现池中每个投资组合的年化收益率和年化标准差即可。
同时,任意一天的投资组合收益率R的计算公式如下:
其中w1 +w2 +w3 +w4 +w5 =∑w=1,0≤wi ≤1,Ri 为第i天的投资组合收益率,Rni 为资产n在第i天的收益率。
上述这个过程很容易在电子表格中完成,表24-7则使用了收益率的测试结果,或者在本例当中应用的是资产净值;表中第一行是2000/8/23,同时,每个资产净值乘以相对应的权重因子(相应列的顶端)(使用sumproduct函数计算乘积之和),而相关数值则被推送至右端相应的列;最后一列显示了当天的收益,这是为了获取投资组合资产净值序列而计算的。一旦为第一个投资组合创建了日间收益值(或在池中的任意5000个字符串),那就可以计算年化收益率和年化标准差,其显示为1.85%、1.23%。在表中底端18日投资组合资产净值之中,年化收益率是29.33%;底部的收益率相关列所显示的年化波动率是19.15%,如此,投资组合1的目标函数1(OF1 )所相关的信息比率是1.53。为了完成前述的评估步骤,我们必须对相应组合的目标函数OFp 进行计算,从而随机生成资产池中所有投资组合的情景模式。
表24-7 投资组合回报和收益的评估方式
重新定位目标函数的波动率
当不使用加权因子百分比值,而是应用诸如期货合约数量之类的交易单位进行资产配置之时,我们有必要将每个投资组合的配置模式重新调整为目标波动率或风险水平所相关的情境。交易太少会生成低风险和低回报的状态,因此我们有必要将风险指定为损失的概率等于投资的百分比值。如果目标波动率是15%,随机配置之后的风险评估显示只有5%的损失概率,那么所有配置的相关损失概率都应该乘以3。组合的规范模式允许个体投资组合的风险可以围绕目标风险上下浮动±5%(由用户指定)。在重新考虑后,我们有必要查看相应资产份额是否超过其流动性的限制值,如果是,那此种投资组合模式就会被丢弃。这里需要注意的是:为了找到最好的组合方式,程序不需要进行重新设置,只需满足约束条件即可,因为重新调试不会改变相应的信息比率。
24.6.10 完成性的测试方法
现在我们已经为资产池中的每个投资组合计算了目标函数,同时将池中当前最佳的目标函数与前一个循环周期内的最佳目标函数进行了比较,从而确定相应程序是否已经完成。在第一个迭代中,我们可以跳过这些步骤,而于资产链接池初始化之后,我们则可以通过两种方式进行测试:
(1)收敛性。查看当前池中最好的目标函数与前n次迭代中最好的目标函数效应相比是否相同或是否几乎相同;在程序结束之前,我们最好允许该方法在两个或3个循环周期内的情境没有任何明显的改善迹象,如果5个最好的收益率值保持不变,那就更好了。
(2)迭代次数。相关程序业已完成的一个固定数值的迭代过程。
尽管收敛模式是搜索方法中常规性的补充标准,但是在此种方法中,固定数值的迭代程序可能是最好的。基因演算方法技术能够快速地求出一个最优解,但之后其改进过程可能会非常的缓慢,因为这一水平所相关的精确度是不必要的,所以从一个新的随机字符串池开始,重复整个程序3~5次的方式是更加重要的。相应测试的相似结果无论是来自加权因子,还是源自目标函数都将证实,相关方法已经找到了一个全局性的最大值,而不是局部最大值,而这一概念将被进一步讨论。
24.6.11 程序的传播路径
达尔文观察到相应物种的繁殖是通过最适者生存的原理而得以改善的。基因演算方法的相关程序进一步复制了适者生存的理念。相应的传播步骤是:允许具有最高目标函数的字符串在选择程序中存活,而那些具有最低目标函数的字符串会被丢弃。
投资组合的排序方法
我们应用目标函数将资产池中的投资组合进行排序,进而使具有最高目标函数的组合模式位于顶端。相对于实施程序而言,运行索引排序的方式要快得多。首先我们在各自目标函数中创建附带投资组合编号的列,然后对其进行排序,然后只对相关的两列进行排序,如此则可避免大量资产被洗盘的情境,因为洗盘的情况可能会耗费时间,甚至对于快捷计算机而言也不例外。
另一个随机过程被用来传播最好的投资组合情境,即如果在池中只有8个字符串,那就会生成以下排序相关的目标函数:
3.65,2.50,2.00,1.65,1.40,1.20,1.05,1.00
那么,相应数值之间的差异将被用来鼓励那些具有最佳目标函数的投资组合模式再次显现,而相应差值是:
1.15,0.50,0.35,0.25,0.20,0.15,0.05
另外,总跨度的代表值=3.65-1.00=2.65,这些差值可以转化为相关跨度的百分比值,即
43.4,18.9,13.2,7.5,5.6,1.9
由此可以看出,相较于较低的目标函数而言,较高的目标函数之间存在着更大的缺口,这是由于传播路径推广的一种属性。对于不同的目标函数来说,在不同测试结果的范围之内,其将需要唯一的传播规则。
24.6.12 最佳测试结果的传播模式
传播方式使最好的投资组合不仅能够存活,而且还能在测试结果中增加相关的信息。传播方式以及基因演算方法相关的解决方案当中的其他大多数步骤都使用随机数。而在这种情况下,则需要在3.65和1.00之间确定一个通用的随机数,这是最高和最低的目标值。这里重要的是生成一个均匀的随机数,即一个均匀分布在定义域内的随机数。要做到这一点,Excel最低值、最高值相关的随机函数randbetween(lowest,highest)将被使用,其中,最低值lowest=100,最高值highest=365(这里只使用整数的函数,因此,相应数值要乘以100)。
如果样本池中有8个投资组合模式,那么我们就要在相关的8个目标函数当中的每一对函数之间确定中值点,如下所示。
接下来,程序生成8个随机数,每个组合对应一个数字。选择那些被传播的组合模式,将其设置到与原始规模相同的新池之中。虽然随机数介于100~365,但是将它们除以100即可适应目标函数的条件。当随机数落在两个目标函数的中值点左端之时,那么左侧的相应投资组合的复制模式将被置于新池当中,如下所示。
当程序运行完成之时,此种方法则创建了一个包含以下8个组合模式的新型资产链接池(最高目标函数所示),如下所示。
因为最初的投资组合1是最合适的,它的目标函数是3.65,所以它最有可能存活下来;投资组合6~8会被淘汰,而投资组合5相比于拥有更好测试结果的组合2~4而言,其复制情境较多,所以投资组合5最终会被淘汰,除非它能生成一个更好的投资组合情境。当执行相关程序的时候,伴随着大量的字符串(5000或100000),许多旧的投资组合将生存下来。我们的目标是:在每一次循环中去除大约10%的表现最差的组合模式,同时传播最好的组合情境。
下面的步骤定义了一个大型投资组合P所相关的资产链接池的传播程序,而传播个体投资组合(p)的方式是将其从初始的池1移至新池2:
(1)计算池中所有投资组合P的目标函数;
(2)对投资组合进行排序,将最高的目标函数放在第一的位置;
(3)注意目标函数的范围是从最高的位置OFH 至最低的位置OFL ;
(4)选取一个均匀的随机数R,其居于OFL 和OFH 之间;
(5)确定哪个组合(p)情境最接近于随机数R的目标函数;
(6)制作投资组合p的副本1,并将其放入新的池2当中;
(7)如果组合P已经被传播,那么就进入第(8)步,否则进入第(4)步;
(8)删除池1的内容并将池2的内容复制到池1之中。
池1现在包含了传播模式的组合情境,池2只在传播过程中以一种临时存储的形式存在。
如果传播过程太缓慢,则可以通过副本的数量乘以一个因子的方式进行加速(比如2),或者通过应用目标函数的整数值作为副本的数量。而其中的危险在于:相关程序将会复制相同的字符串,从而减少基因库的多样性并增加了最终选择结果来自原始资产池的可能性,这相当于发现一个局部最大值,而不是全局性的最大值。
24.6.13 应用原始的配对模式构建新生代的组合情境
配对模式是将两个母(原)字符串结合在一起的过程,其会形成两个独特的新生代情境,就像在生活中一样,如果两个具有优良基因的染色体组合在一起,那么后代的基因可能比父母双方都优越。
这个步骤也将使用随机数来实现。配对程序将从组合P的资产池中随机选择两个组合并将某类字符串的一部分与另一类字符串的某一部分结合在一起。字符串将首先在一个随机的点上进行划分,然后两个左侧部分将被交换,其结果是生成两个独特的投资组合区间。配对的过程遵循以下步骤。
(1)应用1和P之间的随机数选择投资组合pi ,其中P是投资组合的总数量。将投资组合i标记为已处理,这样它就不会被再次选中了。
(2)选择投资组合pj ,在1和P之间使用另一个随机数。如果选择的投资组合被标记为已处理,那么将随机数加上1,直到发现下一个未经使用的投资组合模式为止。如果随机值到达P,则在1处重新开始。
(3)在1与投资组合资产数量之间,选取一个随机数a,在我们范例当中的资产数量是5,因此,a必须是1~5中的随机整数。
(4)通过交换权重因子pi 和权重因子pj 的方式对两个投资组合进行配对测试(资产数量都是1~a),例如,如果a=2,那么投资组合i和投资组合j最左侧的两项资产将被交换,即
在配对之前(原始状态):
投资组合i:wi1 wi2 wi3 wi4 wi5
投资组合j:wj1 wj2 wj3 wj4 wj5
在配对之后(新生代):
投资组合i:wj1 wj2 wj3 wj4 wj5
投资组合j:wi1 wi2 wi3 wi4 wi5
(5)使两个新生代资产组合模式正常化。因为在每一个新生代的投资组合当中的权重因子之和将不再是1,所以在新型投资组合之中,它们必须通过将每一项权重因子除以权重因子之和的方式使其规范化。
(6)流动性约束条件的调整模式。配对模式并不会影响个体市场流动性的约束条件,因为那些被交换的投资组合资产的头寸是保持不变的。所谓投资组合的流动性是指一组市场工具中可以交易的最大数量,如果其中一个组合内部发生分裂,那么就会受到影响相关的流动性。如果石油板块的原油、燃料油和无铅汽油被认为是期货市场的交易主体,那么每个市场工具可能被限制到2000份合约以内,但是交易总量也可能被限制在4000份合约以内,因为存在多元化因素。在资产池的初始配置当中,三个能源市场交易工具的份额如果超过限定的数量,那么相关组合规模就会减少至4000份合约。例如,如果原油、取暖油和天然气的初始配置模式分别是2100、1500和1500,那么它们可能会被改至1400、1000和1000,主要是为了确保交易总量处于组合最大限值4000份合约以下。然而,另一个投资组合的配置模式可能是800、1500和1500,如果紧随一级市场将这两个组合进行搭配和拆分,那么新生代投资组合则会生成1400、1500和1500的配置情境。因此在配对模式运行之后,我们需要对投资组合当中的各类金融工具进行重新调整,从而满足流动性约束条件的要求。
(7)继续配对,直到所有的投资组合都被结合成新生代模式。这里看起来,将所有原始字符串进行彼此配对的行为可能会失去最好的组合模式,因此应该配对的只有10%~20%。重复字符串的传播和大量的组合情境可能产生优秀的结果,而测试结果又有利于资产池中所有的投资组合彼此相互匹配,配对次数不够则会导致相关情境早期收敛到一个次优解。另外,确定需要进行匹配的字符串百分比的程序指令是很方便运行的。
配对过程创造了新型投资组合的配置情境。由于前面的传播步骤,有更多的投资组合的复制品可以生成更高的目标函数,通过随机匹配相关投资组合的方式,我们发现更好组合情境的概率会非常高。
24.6.14 突变:将新基因引入到资产池中
在达尔文的进化理论当中,其最后一步就是突变,这是一种随机的改变,可以改善物种,也可以创造一个劣等的成员,而突变的行为阻止了基因池的停滞。在本节的应用当中,我们引入新的基因,阻止选择程序过早地趋同。与其他步骤一致,突变模式替换了一个随机选择的基因(一个权重因子):在一个随机选择的投资组合中,其占当前组合的10%左右,同时生成一个新的随机值,即
(1)在1和P之间选取一个随机数,表示组合情境要发生突变。将该投资组合标记为已处理,这样它就不会收到另一个突变指令。
(2)选取1和a之间的随机数字,即资产的数量,这将改变资产的配置。
(3)在0和1.0之间选取一个随机数来表示新的权重因子。
(4)调整新权重以满足任何市场流动性的约束条件和群体约束条件(正如在前一节中所讨论的“配对”程序的步骤(6))。
(5)通过将每个加权因子除以权重因子总和的方式确定约束条件是否满足,从而使突变组合的权重因子得以标准化。
(6)继续改变组合情境,直到目标百分比值在5%和15%之间。
和其他步骤一样,太多的突变程序会导致失去最好的测试结果,而太少的突变模式则会导致基因演算方法快速收敛至一个已经存在于资产池内的组合之中。
24.6.15 评估程序的持续模式
基因演算方法的过程是完整的,生成相关资产池需要创建、传播、配对和突变几个步骤。现在,我们可以通过计算每个投资组合的目标函数来重新评估测试结果,查看其是否有所改善,而这是在第24.6.9节中被提及且完成的,这个流程将持续运行,直到整体标准被满足之时。
24.6.16 最佳子集
当应用大量资产解决投资组合问题之时(例如50~100种工具),其可能实际只找到最好的15个资产的子集。虽然基因演算方法程序会拒绝对解决方案没有贡献的系统,但是,最好的配置模式可能会将90%的金额集中在10%的资产之上,而剩下的资产只提供边际性的改进措施。
投资组合解决方案通常也会将一部分资金分配给所有资产,除非这些资产与投资组合中的另一资产几乎相同,因此任何子集都是次优的。应用子集的方式与马科维茨解析模式的目标是相反的,因为它限制了多元化的取舍范围。均值-方差的解决方案总是寻求最低的方差,它有更大的多样化。然而,对于投资者来说,最重要的资产组合是切实可行的。同时,识别最佳子集的一个解决方案是在所有资产之上运行完整的程序,然后简单地抛弃那些小的配置模式,再将投资按比例分配给剩余的资产。
上述这种方法没有必要去耗费时间,当相关资产重新配置给所选子集之时,其可能会生成超过流动性约束条件的配置情境。而应用基因演算方法的模式则可以在资产池初始化的过程中建立子集,并在整个程序运行的剩余区间之内进行维护。相对于从总资产S中选出部分资产s的一个子集模式而言,其步骤是:
(1)当资产池被初始化之时,随机选择s份资产且剩余资产的权重值为0,按照相同步骤选择权重因子,然后进行标准化处理。
(2)传播仍然是一样的,其中只有目标函数被计算;资产的数量是不相关的。
(3)配对需要额外的步骤,即选择第一个父文件夹,并决定要在哪里分割,同时计算分割点每一侧的资产数量;然后,选择另一个母文件夹,计算同一拆分点两侧的资产数量。如果它们是相同的,那么这两种投资组合可以在分割点处通过彼此交换资产的方式来实现配对的目标。如果配对没有成功,则转到下一顺序的组合情境之中并测试相关资产的数量是否匹配——直到找到配对的资产为止。如果双亲各自的组合模式当中之分割点两侧的数量不同,那么,它们不能配对,因为由此生成的子集数量会多于或少于所需资产的s值。除了少数组合模式以外,因应随机选择模式而生成的资产配置相关的正态分布情境可以使大部分的投资组合模式和其他以同样情境呈现资产分布形态的组合模式于拆分点处彼此匹配,而不匹配的投资组合可以被删除。
(4)变异程序有一个类似于配对程序的问题,但它更容易解决。在随机选择一个投资组合之后,我们可以随机选择一个活跃的资产并将其移除;然后选择另一种资产(以前是零,但不是刚刚删除的资产),再使用随机数生成新的权重值;之后,再进行规范化处理,如此则可维持总的资产数量。
子集解决方案比完整的解决方案快得多,其包含一些妥协情境,因为它是一个次优解。在不控制配对和变异过程的情况下,该程序将尝试引入更多的资产,以改善测试的结果。尽管资产池从所有只拥有s份资产的投资组合开始,但是,其在配对和变异的过程中将继续组合、添加和传播新型的资产组合模式。尽管使用大量资产的最佳解决方案只比最优子集稍好一点,但是它会使你非常纠结。
24.6.17 最优化投资组合模式的判定方法
对于一小部分资产来说,GASP(基因演算方法)的测试结果将显示最优化的投资组合情境。随着资产数量的变大,可能的解决方案项下的资产数量很快就会变得太大且不能涵盖池中所有的组合模式,但是20种甚至50种资产所对应的解决方案则很有可能是最优化组合形式。对于更大数量的资产而言,在有限的计算时间内由基因演算方法创建的组合可能只占资产总数的一小部分,然而,其答案可能接近于最优,至少,它会很好。
在配置多重金融资产之时,评估答案相关的一种方法是对配置于每个资产的百分比增量模式加以限制。我们以100种资产为例:一个随机生成的权重因子的数值可能会返回小数点后第四位,如0.0523代表5.23%的配置比例。然后,每100种资产将有10000个可供选择的方式,那么组合模式的总数则是10000!(1×2×3×…×10000),这是一个非常巨大的数字。但是,如果问题仅限于百分比式的总值范围,那么组合的数量就只有100!——仍然非常大,但更容易管理,而当达到最佳解决方案时,基于1%增量的配置形式必须类似于0.001%的增量情境。除了一笔非常大的投资外,投资0.001个百分点并没有意义。虽然许多答案都接近于最优解,但是,它们当中的许多结果都在小数点后的第二位和第三位之间有所不同,这使其对交易者而言并不重要。实际上,GASP的编辑程序应该始终如一地返回一个近乎最优化的解。
全局最大值的验证模式
一种验证解决方案的指标是全局最大值,而不是局部最大值,其需要多次运行相关的解决方案。每一个新的测试程序(pass)都要创建一个全新的随机配置资产池并重新开启基因演算的过程。如果在投资组合问题上有50种资产,那么配置模式应该非常的相似,具有最高目标函数值的系统是最好的,并且其可能代表全局最大值。同时,很多区间内的最大值和峰值也可能几乎是相同的,此种情境可以通过查看目标函数是否相同、配置方式是否不同的方式来甄别。
运行组合解决方案五次(50~100日周期的基因演算方法)比运行一次(500日周期)的效率更高。同时,解决方案在50日周期完结之后即开始收敛,其后不太可能出现显著改善的情况,这是由于相关程序当中所规定的配对和突变的比例要在10%~15%。如果使用更大的百分比值,那么收敛速度就不会那么快,但是测试结果可能会变得不稳定。
24.6.18 GASP解决方案的范例情境
解析基因演算方法的完整过程的最好方法是:一步一步地观察测试结果。以下示例应用19种独特的系统策略交易纳斯达克100指数期货合约,每个系统有三种策略结构,即基于顺势型(T)、均值回归型(M)或两者的结合模式(B),这些策略只适用于多方头寸(L)或只适用于空方头寸(S)。因此,多方头寸与顺势交易策略、均值回归策略、两者的结合模式相联结的情境将会被标记为LTMM,在图24-7输出的结果当中,其显现为第8个策略。另外,这个测试的其他特点是:
(1)总共有19种资产(在此种情况下,相关资产是纳斯达克系统交易策略的收益的现金流)。
(2)每个策略的历史收益的时间间隔为1995年5月4日~2002年6月30日,横跨7.16年。
(3)19种资产中有12个最优子集目标。
(4)一笔1000万美元的投资。
(5)初始资产池的规模是5000份合约。
(6)突变率为10%。
(7)基于跌幅(D)相关的半方差法来计算相关风险。
(8)16.7%的目标在险值代表了99.74%的置信水平。
(9)程序的每一次测试所相关的周期是100。
(10)测试次数是3。
图24-7中所出现的配置标的是期货合约的数量,相关程序知道交易一份合约所需的保证金以及投资者所要求的资产比例。另外,GASP程序所配置的合约总量是总投资和保证金/资产比率的一个函数。
测试过程概述
通过测试结果的演化过程,我们可以在图24-7中的前两列看到范例数量(Case)和目标函数(ObjF);同时,在相应交易策略项下,各有19列数据代表相关的资产合约,它们占据了屏幕最大的可视区间;通过测试1、范例1以及顶端的a值,我们所计算的目标函数值是12.955;另外,在初始资产池(5000份合约)中发现的最好配置模式项下的目标函数可以将在险值控制在5%的目标水平之内,即2.85的半方差值。这里应注意的是:所有配置资产相关的标准差(StdD)所在列的数值均应控制在2.85所对应的5%以内,如果有可能的话,配置方式总是会被重新调整,以达到标准的风险水平,进而规避低风险、低收益的解决方案。同时,相应各列所遵循的目标函数则是风险度量的替代方法。
图24-7 16种纳斯达克100指数期货交易策略所相关的GASP基因解析方法
图24-7 (续)
图24-7 (续)
图24-7 (续)
图24-7 (续)
图24-7 (续)
注意:Std是日间收益率的标准差值;StdR是残差的标准差值,其所基于的是收益序列的线性回归模式;StdD是应用日常跌幅的半方差法计算的标准差值;Mdd%是相关投资最大跌幅的百分比值。
图24-7第一列显示了通过程序发现的59个循环周期当中最好的解析解,而当周期或周期序列没有得到改善时,其丢失的数值就会出现。在前15个范例情境之中,配置模式发生了显著的变化,然后,其逐渐地稳定且改善。在前15个范例之中,80%的目标函数得以改善;接下来,在之后的45个范例当中,有20%的目标函数得以改善;余下的则没有改善。最终的解决方案在(a)值所在列的底部被重新调节(出现在第59个范例情境之中),主要是为了达到99.75的置信度(即于7.16年的测试期间内,目标损失的数量是投资的16.97%,而生成此种情境的概率是2.25%);同时,这一解决方案的年化收益率为49.46%。
三次测试的结果表明:每次最好的目标函数增量是17.315~17.801,最后是17.894;而收益率(视为AROR,位于在第二列,即每次测试的最后3行)仅从49.46%提高至50.95%,如此则表明它们的收益率非常相似。现在,我们比较测试1和测试3,它们的资产配置模式可能看起来非常不同,但是相同的策略得到近似的资产配置方案,其相关的情境则是相似的。在测试1中,策略LMMB收到107份合约(99.74的置信水平),测试3收获121份合约。与此同时,策略SBBB从69份合约降至57份,很明显,一系列的配置方式将会生成类似的结果。同时,在每个测试当中,资产分配的数量从10~12不等,它们都没有高于12的限制水平。
上述三个测试之中的每一次均附带100种范例情境(或循环周期),其运行时间是85分钟,等同于1.7马赫 [2] 奔腾Ⅳ型处理器的速率,其在2004年是最佳的,但是,和今天的标准相比,它显得有些慢了。然而,如果考虑到可能的组合数量,那时间则不是问题。
24.6.19 投资组合配置模式相关的区间步长
短期测试区间对当前的市场状况会有所反应,但是其不会对牛市和熊市行情进行全面的平衡以及全面的分析。统计学家总是喜欢更多的数据,而不是更少的数据。一个月际循环滚算的6个月投资组合会将每个绩效或行情理念限制在一个非常狭窄的窗口之内。目前还没有人证明,基于较短时间间隔的配置方式比基于较长时间方式的要好。
为了包含公平的牛市和熊市区间的样本数据,我们所需要的数据都是从1995年开始的,如此则可捕捉3年牛市行情的表现,以及于年底前出现的科技泡沫,然后编辑一个非常动荡和不寻常时期的行情版本。同时,我们所指定的投资组合期限也必须包括相关资产全部的季节性模式,否则,于同一时间所包含的季节性和非季节性资产之间可能存在不平等的风险,我们可以取材于取暖油和无铅汽油期货的范例情境,或者以一家从冬季业务中受益的度假公司和另一家专营夏季业务的公司为模板,因为不受季节性影响的市场将显示出更低的风险。如果两个对立的市场工具正在改变其各自的风险模式,那么,基于过去6个月数据的投资组合的配置方式可能与此种情境相脱节。
[1] Harry M.Markowitz,“Portfolio Selection,”Journal of Finance(1979),即Harry M.Markowitz,Portfolio Selection(New Haven:Yale University Press,1959)。马科维茨的模式允许由负加权因子表示卖空交易,其中所有权重因子的总和为1。在此处的基因演算方法之中,我们只设置了呈正值的资产配置模式,而相应权重可以通过取负值和正值的方式在-1和+1之间的随机数当中进行选择,而不是在0和1之间选择权重值。
[2] 1马赫≈340米/秒。——译者注