李 蒙
(渭南師范學(xué)院,陜西 渭南 714000)
投資組合是研究如何配置各種不同的金融資產(chǎn),實現(xiàn)資產(chǎn)組合的最佳投資配置。1952年Markowitz提出均值-方差模型,這一模型旨在尋找一個具有較高收益和較低風(fēng)險的最佳投資組合方法,之后人們根據(jù)市場信息和投資者的行為,對該模型進(jìn)行了各種改進(jìn)。
現(xiàn)在我們的目的不在于研究模型的有效性與精準(zhǔn)性,而在于將最優(yōu)化理論中所學(xué)的優(yōu)化方法運用于實際問題,通過實際編程計算來理解體會各種算法的優(yōu)缺點和算法的有效性。所以在此我們選擇最基本的均值-方差模型,即M-V模型。
M-V模型
在Markowitz的投資組合理論中,用資產(chǎn)收益率的平均值作為資產(chǎn)的期望收益率度量指標(biāo),用資產(chǎn)收益率的方差作為投資組合的風(fēng)險度量指標(biāo)。Markowitz均值-方差模型是經(jīng)典的帶約束二次優(yōu)化問題,在給定期望收益時,方差最小解唯一(可行解域為凸)。
帶不等式約束的二次規(guī)劃問題,即
其中H,A,Aeq是矩陣,且H為n階對稱矩陣,f,b,beq,lb,ub,x是列向量。當(dāng)H是半正定矩陣,(2)為凸二次規(guī)劃,否則為非凸規(guī)劃。對于凸二次規(guī)劃,目標(biāo)函數(shù)q(x)是一個凸函數(shù)。若有至少一個向量x滿足約束條件且q(x)在可行域有下界,二次規(guī)劃問題就有全局最小解。當(dāng)H是正定矩陣,(2)為嚴(yán)格凸二次規(guī)劃,此時全局最優(yōu)解若存在,則其必唯一。上述二次規(guī)劃問題通過matlab中的quadprog函數(shù)即可求解,即
遺傳算法(Genetic Algorithm,GA)是模擬生物界自然選擇和群體“適者生存”、“優(yōu)勝劣汰”的進(jìn)化機制形成的一種全局尋優(yōu)算法。將每個可能的問題解表示成“染色體”,從而得到一個由染色體組成的“群體”,這個群體被限制在問題特定的環(huán)境里,根據(jù)預(yù)定的目標(biāo)函數(shù)對每個個體進(jìn)行評價,得到個體適應(yīng)度值。對生存環(huán)境適應(yīng)度更高的個體往往具有較高的生存概率。開始時總是隨機的產(chǎn)生一些個體,即候選解,利用遺傳算法對這些個體按“適者生存”的原則進(jìn)行交叉組合產(chǎn)生后代,后代由于繼承了父代的一些優(yōu)良形狀,因而明顯優(yōu)于上一代,這樣“染色體”的群體將逐步朝著更優(yōu)解的方向進(jìn)化。再結(jié)合物種進(jìn)化過程中的基因突變等遺傳操作,就可能產(chǎn)生更適應(yīng)環(huán)境的后代。
遺傳算法主要由染色體編碼、初始種群設(shè)定、適應(yīng)度函數(shù)設(shè)定、遺傳操作(交叉、變異)設(shè)計等幾大部分所組成。編碼是指把實際問題的解結(jié)構(gòu)轉(zhuǎn)變?yōu)槿旧w結(jié)構(gòu)。常用的編碼方法有:二進(jìn)制編碼、浮點數(shù)編碼、符號編碼等。選擇是指按照選擇概率和各個染色體的適應(yīng)度值,從當(dāng)前種群中選出若干個適應(yīng)度更高的個體。適應(yīng)度決定了個體的生存能力,通常采用輪盤賭選擇或錦標(biāo)賽選擇。交叉是指按照交叉概率和交叉策略把兩個染色體的部分基因進(jìn)行交配重組,產(chǎn)生新的個體。交叉策略一般有單點交叉和多點交叉。變異是指按照變異概率和變異策略對染色體中的某些基因進(jìn)行變異,這是遺傳算法產(chǎn)生新個體的另一種方法。例如,二進(jìn)制編碼方式下,傳統(tǒng)的變異操作只是簡單地將基因的二進(jìn)制取反,即將“0”變?yōu)椤?”、“1”變?yōu)椤?”。
在選擇算子前或選擇算子后保留最優(yōu)解的遺傳算法,能以概率1收斂到全局最優(yōu)解。
圖1 遺傳算法流程圖
遺傳算法的執(zhí)行步驟:
1.選擇編碼策略(二進(jìn)制編碼),將問題搜索空間中每個可能的點用相應(yīng)的編碼策略表示出來,即形成染色體;
2.定義遺傳策略,包括種群規(guī)模N,交叉、變異方法,以及選擇概率Pr、交叉概率Pc、變異概率Pm等遺傳參數(shù);
3.令迭代次數(shù)t=0,隨機選擇染色體初始化種群P(O),定義適應(yīng)度函數(shù) f(f> 0);
4.計算每個染色體的適應(yīng)度值;
5.通過選擇運算實現(xiàn)“適者生存”過程,選出較優(yōu)個體群;
6.對所選出的較優(yōu)染色體按概率pc進(jìn)行交叉運算(單點交叉);
7.對染色體中的基因,以概率Pm參與變異運算(依變異概率Pm指定變異點,對變異點進(jìn)行取反運算),得到新一代種群P(t+1);
8.判斷群體性能是否滿足預(yù)設(shè)定的終止標(biāo)準(zhǔn),若不滿足,則返回(4)。
我們選取的是滬深300指數(shù)中的十個成分股(蘇寧電器、上港集團、寶鋼股份、中國石化、中信證券、招商銀行、中國聯(lián)通、上海汽車、貴州茅臺、中國平安)從2009年1月5日至2009年6月4日100個交易日的收盤價(單位:元),數(shù)據(jù)來源于新浪財經(jīng)數(shù)據(jù)中心(附錄中表4)。
因為我們所有的數(shù)據(jù)是各股票的歷史收盤價,而實際中我們需要用到各股票的收益率(算術(shù)收益率),協(xié)方差等,所以先進(jìn)行數(shù)據(jù)預(yù)處理,得到以下結(jié)果。
表1 股票的收益率均值
表2 股票的方差-協(xié)方差矩陣
對Markowitz均值-方差模型進(jìn)行參數(shù)設(shè)定:r為表2中的收益率均值組成的向量,V為表3中的方差-協(xié)方差矩陣。N=10,即投資組合中共考慮十個金融資產(chǎn)。μ=0.0075,即考慮期望收益為0.0075。L=ones(1,10),即一行十列的全一矩陣。U=zeros(1,10),即一行十列的全零矩陣。
通過二次規(guī)劃算法、遺傳算法matlab編程求解、遺傳算法工具箱三種方法分別對上述Markowitz均值-方差模型進(jìn)行求解,并對比分析求解結(jié)果。
表3 投資組合優(yōu)化模型3種方法計算結(jié)果
圖2 遺傳算法工具箱求解界面
圖3 遺傳算法迭代過程函數(shù)
二次規(guī)劃算法(QP)收斂速度較快,且其收斂速度與初值選取有關(guān),投資分散性不是很好。遺傳算法在全局搜索方面性能優(yōu)異,但局部搜索能力不足,使得后期收斂速度較慢,其投資分散性較QP好一些。因此,遺傳算法對于金融投資組合問題的求解更加快捷、簡便、有效,但是鑒于實際中,我們模型中的值并不大,所以該問題的復(fù)雜度也大大降低,遺傳算法和二次規(guī)劃算法對于該問題的有效性并沒有太大區(qū)別。所以,當(dāng)考慮投資的股票范圍不大時,二次規(guī)劃算法和遺傳算法均能提供有效的投資組合建議。