張 懿
(臺州職業技術學院經貿學院 臺州 318000)
近年來,中國風險投資業發展迅猛,風險投資企業(基金)和風險投資管理資金總量都在不斷增長。證券投資的數量越來越多、品種不斷趨于多樣化,這不僅大大豐富了金融市場的產品,還成為了金融市場中一支骨干力量,并且在市場的平穩發展中發揮了不可忽視的作用。證券投資是證券市場運行環節中的重要組成部分,而證券組合理論又是最重要的證券投資理論之一。因此,建立合適的模型以及選擇有效的算法來求解投資組合問題具有重要的研究意義。Markowitz為投資組合的選擇建立了定量框架,首次提出均值-方差模型,為了避免用復雜的數學規劃來求解,許多學者用智能算法來求解投資組合問題。
市場投資既有盈利的可能,也有虧損的風險,投資組合是一種目前常用的風險規避的方式。構建投資組合的合理目標應是在一定的風險水平下可以盡可能達到最高回報的投資組合,即有效的投資組合。為了構建能達到最有效目標的投資組合,馬考維茨模型提供了一種明確的修煉過程——最優化。最優化過程被廣泛地應用于資產配置過程中。由于在實際過程中,可供選擇的主要資產類型有限,所以該過程是可操作的。
1952 年,時年 25 歲的 Markowitz[1]提出了一個在不確定條件下嚴格陳述可操作的選擇資產組合理論:均值方差方法(Mean-Variancemethodology),并進行了系統、深入和卓有成效的研究,這一理論引起了股票投資理論的革命。自Markowitz提出均值-方差模型以來,大多數的投資組合模型是建立在均值和方差這兩個參數之上的。隨著投資組合理論的發展,新的風險度量方法不斷涌現。王璐,吳婧[2]基于Markowitz投資組合均值方差模型,為不同的風險偏好投資者設計了投資組合的復合模型。2001年,何宜慶和王洗塵等研究了半方差模型[3];尹敬東從E-Sh風險的角度建立并研究了證券組合投資模型[4];趙貞玉和歐陽令南提出了半絕對離差(SemiA.D)概念[5],并在此基礎上對均值-方差模型進行改進。通過分析上海的有代表性的50支股票復權價,得到結論:在每個期望收益率水平上,基于M-SemiA.D模型的投資組合都優于M-V模型中的投資組合,并且有效投資組合滿足兩基金分離定理。求投資組合問題的最優解實際上屬于一類組合優化問題,通常歸結為二次規劃模型。求解過程十分繁瑣,對數學基礎要求很高,于是許多學者用智能算法來求解。張偉[6]等應用二進制編碼遺傳算法(geneticalgorithm,GA)求解該問題,具有簡潔、直觀的優勢,但效率不夠高;何洋林等[7]應用整數編碼自適應遺傳算法(adaptiveGA,AGA)求解該問題,提高了求解效率等。
人工蜂群算法由土耳其埃爾吉耶斯大學D.Karaboga等[8]于2005年提出,它是一種模仿蜜蜂行為而提出的啟發式優化方法,是集群智能思想的一個具體應用。不需要了解問題的特殊信息是它的主要特點,因為只需對問題進行優劣的比較,通過各個人工蜂個體的局部尋優行為,最終在整個群體中使全局最優值突現出來,收斂速度較快。D.Karaboga在2005年成功地將蜂群算法應用于函數的數值優化[9],并提出較為系統的人工蜂群算法(Artificial Bee Colony Algorithm,ABC算法),算法簡單,魯棒性強,對于求解無約束優化問題它比其他啟發式算法更具有優越性。
由于ABC算法的控制參數少、計算簡單、易于實現,被越來越多的學者所關注。但傳統的ABC算法容易陷入早熟收斂和后期收斂較慢。為克服這些問題,提升算法性能,許多學者對ABC算法進行改進。劉三陽等[10]提出一種利用隨機動態局部搜索算子對當前的最優蜜源進行局部搜索,以加快算法的收斂速度的改進算法。周新宇等(2015)[11]改進了搜索方程,同時提出采用一般反向學習策略生成被放棄食物源的反向解,提高算法的搜索效率。
本文基于ABC算法的基本思想,對投資組合問題中的帶基數約束的均值-方差模型(Cardinality-Constrained Mean-Variance Model,CCMV模型)進行求解。在求解過程中,針對CCMV模型設計了能夠始終得到可行解的FABC算法。然后對FABC的更新方程進行改進,得到了收斂速度更快IFABC算法。最后,基于二次規劃對IFABC算法進行進一步改進,提出了求解效果更優的QFABC算法。
設當前有N個可投資的資產,準備對其中K個資產進行投資。設對第i個資產的投資比例為xi(i=1,…,n)。當不投資第i個資產時,xi=0;否則,需要滿足li≤xi≤ui。設投資第i個資產的平均收益為 μi,則總的投資收益為。而整個投資方案收益的方差為,其中 σij是資產xi和xj收益的協方差。投資收益的方差可以視為是投資的風險。
實際的投資回報可以表示為R=M-λV。其中λ是一個權衡系數,表示投資者對風險的樂觀程度。例如取λ=0,則R=M ,表示投資者認為風險較小,期望在所有資產都能夠達到平均收益情況下最大化回報。而取λ=1,則R=M-V,表示投資者認為風險較大,期望在所有資產的收益低于平均收益1個方差的情況下最大化回報。
在上述條件下最大化投資回報可以描述為帶基數約束的均值-方差模型:

其中,[xi≠0]在滿足 xi≠0時取1,否則取0。
人工蜂群算法模擬蜂群采蜜過程,通過不同角色蜜蜂間的交流、轉換和協作來實現群體智能。已有一些將ABC算法用于求解CCMV模型的相關工作[9~16],但是這些工作中的算法具有以下幾個問題:
1)令 zi=[xi≠0],加入到決策變量中,增加了問題的規模。
2)不能始終保證獲得的解是可行解。
為了解決上述問題,我們提出了一個能夠始終獲得可行解的ABC算法(FABC算法)。設種群中偵查蜂的數量為SN,則整個種群的解集可以用矩陣 XSN×N表示。 X的第i行表示第i個蜜蜂的解,用 Xi表示。而 Xij則表示第i個解的第 j個分量。采用ABC算法求解CCMV模型的基本步驟可以描述如下:
Step1:偵查蜂隨機尋找食物源。

因為這樣產生的解不是滿足約束條件的可行解,需要將其調整為可行解。首先將解調整為只有K個非零元素,且滿足范圍約束。設Q是Xij(j=1,…,N)中最大的前K個元素的下標所構成的集合,則

然后,在滿足范圍約束的情況下使得投資比例之和為1。設 P={j|lj<Xij<uj},則

Step2:偵查蜂回巢之后交流各自偵查到的食物信息,重新制定偵查計劃。每一只蜜蜂對當前第k個解的選擇概率為

其中

是當前第k個解的適應度。而

是一個單調遞增函數,從而一個解的適應度越高則被選擇的概率越大。同時,將適應度最大的解和當前最優解X*進行比較,如果適應度更大則更新最優解。
Step3:偵查蜂在上次偵查結果的附近搜索新的食物源。然后用式(3)和式(4)將解修正為可行解。

Step4:當連續迭代Lim次之后,最優解仍未被改進,則轉Step1重新生成初始解繼續迭代,否則轉Step2繼續進行鄰域搜索。當總的迭代次數次數到達MaxIter時算法終止,返回當前最優解X*。
在FABC算法中,偵查蜂在尋找新解時隨機性較大,沒有充分利用已有解的信息。在文獻[17]的啟發下,我們將當前最優解作為算法啟發式過程的影響因子之一來搜索下一個最優解,提出了改進的IFABC算法(Improved Feasible Artificial Bee Colony Algorithm,IFABC算法)。
相比于FABC算法,IFABC算法唯一的不同在于將式(8)改為

FABC算法和IFABC算法的差異可以用圖1的形象表達。

圖1 FABC算法與IFABC算法差異示意圖
在圖1(a)中,Xi為當前解,Xk為其它任意一個解,新的解出現在與連線的反向延長線上。這表示ABC算法的啟發式策略是在遠離已有解的情況下尋找一個新的解。
在圖1(b)中,Xi為當前解,Xi為其他任意一個解,X*表示當前最優解,則新的解出現在與連線的反向延長線與與連線的合成方向上。這表示IABC的啟發式策略是在遠離已有解的情況下,盡可能地靠近當前最優解。
因此,FABC的策略可以形象的表述為,在蜜蜂采蜜的過程中,各個蜜蜂應該盡可能地分散開來,才更有可能找到收益度更好的花源。即FABC算法代表了無指導的分散查找策略。與之相對的,IFABC的策略代表了有指導的分散查找策略。如果各個蜜蜂在分散搜索食物源的時候,有意識地向當前最好的食物源靠近,那么將更有可能發現更好的食物源。
回顧CCMV模型,當基數約束K確定時,該模型退化為一個二次規劃模型。而上文中的ABC算法和IABC算法對于這個退化的二次規劃模型都沒有取得最優解。因此,可以基于二次規劃進一步改進ABC算法,稱為QFABC算法(Quadratic Feasible Programming Based Artificial Bee Colony Algorithm)。
為了基于二次規劃進行優化,本文將CCMV模型轉化為一個雙層規劃模型。外層規劃問題為

其中,x*i是在取定Q的情況下,內層規劃問題的最優解。內層規劃為

將CCMV模型轉化為上述雙層規劃模型之后,對外層模型采用FABC算法的框架進行求解,內層模型采用Matlab的quadprog函數進行求解。外層模型求解的FABC算法框架為
Step1:初始化。隨機選擇K個下標構成集合Q,若 j∈Q則Zij=1,否則Zij=0。
Step2::重新制定偵查計劃。和FABC算法相同。
Step3:更新解。取

其 中 sig mod(x)=1/(1+e-x)。 之 后 再 將Zij(j=1,cd ots,N)中最大的 K 個設為1,剩下的設為0,使其滿足約束條件。
Step4:判定算法結束。與FABC算法相同。
本文使用OR-library中的數據,OR-library是一個包含各種運籌學問題的測試數據集的庫。其中包含5個國家或地區的從1992年3月至1997年9月的真實市場數據,本文選擇OR-library中US市場的S&P100指數中的98只股票作為研究對象,對本文提出的三個算法進行對比測試。
本文用Maltab編程,取種群大小SN=10,最大迭代次數MaxIter=100,迭代更新閾值Lim=10,對US市場的98只股票,分別采用文中的三種算法進行測試。測試時取基數約束K=10,所有資產的投資下界li=0.01,投資上界ui=1。當權衡系數λ=1時,三種算法的迭代曲線如圖2所示。因為本文的算法具有隨機性,所以圖中的結果是由5次獨立實驗的均值繪制而成的。

圖2 三種算法迭代對比圖
從圖2中可以看出,IFABC因為利用了當前最優解的信息,迭代收斂速度明顯優于FABC算法。并且,由于QFABC在二次規劃子問題中達到了最優,因此QFABC算法再迭代初期就得到了較好的解。QFABC算法在迭代后期也在緩慢的改進最優解。最終,QFABC算法的結果要由于IFABC算法,IFABC算法優于FABC算法。
而表1展示了本文測試中三個算法的最優解和平均運行時間。從表1中可以看出,FABC和IFABC的運行時間相近,都比較短。而QFABC因為進行了二次規劃,運行時間較長。因為QFABC在迭代初期就得到了足夠好的解,在應用QFABC算法求解問題時可以減小最大迭代次數來減少運行時間。

表1 最優解和運行時間對比(λ=1.0)
對比三者的最優解可以發現,QFABC和IFABC都選擇了34,42和82這三只股票作為主要投資對象,只是比例略有差別。而QFABC因為二次規劃的作用,在確定投資的股票之后,其投資比例是最優的,因此QFABC算法的結果要由于IFABC算法。而FABC的結果中只要有82號股票的比例較大,因此其最優解和其它兩個算法的差距較大。
最后,本文對比了三個算法在λ的不同取值下的表現,實驗結果如表2所示。從表2中可以看出,λ越大,QFABC相對于IFABC的優勢越明顯。這是因為λ越大,模型的二次規劃占比越重,二次規劃的優化作用將更加明顯。

表2 不同λ最優解平均值對比(單位:‰)
本文采用了三種策略解決了最優投資組合問題。并利用由OR-Library提供的真實股票市場的數據對三種求解策略進行測試,比較各個算法的性能,得出了以下結論:
1)FABC、IFABC、QFABC算法都能有效地求解投資組合問題的CCMV模型,且隨著迭代次數的增加,各種算法的解都變得越來越好。在相同迭代步數下,QFABC算法的優化效果最好,IFABC次之。隨著λ的增大,QFABC算法相對于IFABC算法的改進效果越來越大。
2)在相同迭代次數的情況下,FABC算法和IFABC算法的運行時間較短,QFABC算法的運行時間較長。QFABC算法能夠用較少的迭代次數得到足夠好的解,因此可以減少QFABC算法的迭代次數來提高QFABC算法的運行效率。
鑒于本文的寫作時間以及作者水平有限,文章對某些問題難免有欠妥之處,包括已發現和未發現的,有待于在今后的工作中逐步修正和完善。本文在以下方面還需努力:
1)本文的均值-方差模型中所用的收益率以及風險的數據直接來源于OR-library,其收益率直接用往期的收益率均值來估計,其估計值較為粗略,對收益率的變動靈敏度幾乎接近零,而沒有用更加科學穩定的方法來估計未來收益和風險。
2)本文的著重點在于改進算法,而對于投資組合問題意義上的介紹較少。例如,目標函數為均值減標準差,但它并沒有具體的實際意義,無法簡單用金額來衡量,只能通過比較數值大小判斷哪個算法更優。它最接近的意義是收益的最小值,但并不完全如此。
3)由于數據的局限性,未能找到我國A股的相關數據,而只能用OR-library庫中的1992年至1997年的數據。在數學的角度上對算法性能的判斷沒有影響,可能對于投資組合問題有時效性的影響。