周新,趙明君
(南京審計(jì)大學(xué)金融學(xué)院,江蘇南京211815)
近年來,我國經(jīng)濟(jì)不斷發(fā)展,大量資金涌入中國市場(chǎng)。中國的投資市場(chǎng)紛繁復(fù)雜,投資方式多樣,以股票投資市場(chǎng)為例,股票市場(chǎng)投資組合眾多,市場(chǎng)時(shí)刻發(fā)生變化,風(fēng)險(xiǎn)與收益并存,如何在控制風(fēng)險(xiǎn)情況下實(shí)現(xiàn)收益十分重要。
Markowitz[1]闡述了現(xiàn)代投資組合理論的主要思想, 即投資者的效用是關(guān)于投資組合的期望收益率和標(biāo)準(zhǔn)差的函數(shù)。陳靜陽、許若寧[2]指出在投資決策中風(fēng)險(xiǎn)和收益相互影響, 因此應(yīng)該分散化投資。朱業(yè)春、曹崇延[3]在傳統(tǒng)的投資組合模型中加入了投資者的主觀判斷,得出了資產(chǎn)的最優(yōu)組合權(quán)重。朱南、朱傳進(jìn)[4]建立了基于數(shù)據(jù)挖掘、Kernel回歸和現(xiàn)代投資組合優(yōu)化理論的輔助決策模型,得出了風(fēng)險(xiǎn)最小化的投資組合。
遺傳算法來源于進(jìn)化論、物種選擇學(xué)說以及群體遺傳學(xué)說,是模擬自然界生物進(jìn)化過程與機(jī)制求解極值問題的自組織自適應(yīng)人工智能技術(shù)。自Holland[5]提出后,由于其對(duì)于難以解決的多目標(biāo)規(guī)劃問題有一定的效果,因此遺傳算法廣泛地應(yīng)用在各個(gè)領(lǐng)域。胡冰等[6]將遺傳算法應(yīng)用于股票短期投資,對(duì)投資組合進(jìn)行了優(yōu)化。孫雪蓮[7]通過使用遺傳算法,得出在一定的收益和風(fēng)險(xiǎn)水平下,資產(chǎn)組合的數(shù)目是可以降低的結(jié)論。齊岳等[8]論證了在大數(shù)據(jù)背景下,使用遺傳算法能夠?qū)ν顿Y組合進(jìn)行優(yōu)化,從而提高收益。
綜上所述,結(jié)合我國股票市場(chǎng)的特點(diǎn),在股票數(shù)量如此多的今天,窮舉計(jì)算最優(yōu)解的方式已經(jīng)不能有效地給投資者提供投資建議,而突破了表達(dá)式限制的遺傳算法卻能在一定時(shí)間內(nèi)求解出滿意解,因此,在此基礎(chǔ)上建立的投資組合模型具有投資指導(dǎo)意義。
本文采用輪盤賭法選擇算子,這是一種比例選擇方法,即按照適應(yīng)度來決定個(gè)體是否能作為父代將基因遺傳到下一代。在使用輪盤賭法選擇算子的情況下,高度適應(yīng)的個(gè)體會(huì)有更大機(jī)會(huì)作為父代將基因遺傳到下一代,因此在求解最優(yōu)化問題時(shí)計(jì)算適應(yīng)度即可。
本文選用多點(diǎn)交叉算子,共7個(gè)交叉點(diǎn):第1個(gè)交叉點(diǎn)為每只股票的位置,第2個(gè)交叉點(diǎn)設(shè)置為Beta值小于等于1的股票,第3個(gè)交叉點(diǎn)設(shè)置為Beta值大于1的股票,第4個(gè)到第7個(gè)交叉點(diǎn)分別設(shè)置為日收益率小于等于-0.005的、日收益率大于-0.005到小于等于0的、日收益率大于0到小于等于0.01的、日收益率大于0.01到小于等于0.016的股票。
算子的設(shè)置可以使種群的進(jìn)化方向趨向于最高適應(yīng)值方向,但同時(shí)易使群體單一,失去多樣性,算法求解結(jié)果陷入局部最優(yōu)。本文為了防止最優(yōu)解被變異操作破壞,將變異概率設(shè)置為0.01。
1.2.1 定義染色體
本文所使用染色體的定義和上海A股主板市場(chǎng)的股票數(shù)目有關(guān),本文定義基因的方式為股票代碼加指標(biāo)的方式,一個(gè)基因代表一只股票,這些基因的組合形成染色體,因而一個(gè)染色體就是一種股票組合。本文基因的編碼采用二進(jìn)制編碼,即0和1的編碼方式。
1.2.2 定義種族規(guī)模和最大迭代數(shù)目
本文從樣本個(gè)體空間中隨機(jī)抽取100條染色體,形成初始種群。定義最終種群的個(gè)體數(shù)量為20,以21天(7月份的第21個(gè)交易日)作為一個(gè)預(yù)測(cè)期,依據(jù)7月份的數(shù)據(jù)來預(yù)測(cè)8月份的投資組合,最大迭代數(shù)目根據(jù)算法停滯決定,即適應(yīng)度不發(fā)生明顯變化。
本文所設(shè)計(jì)的適應(yīng)值函數(shù)是針對(duì)基因從而擴(kuò)展到染色體的,即適應(yīng)值與組成染色體的基因存在函數(shù)關(guān)系,本文將從基因和染色體兩個(gè)層面描述適應(yīng)值函數(shù)。其中適應(yīng)度函數(shù)為:
f(Genei)=w1Dret+w2DTrdTurnR+
w3Beta_tmv+w4KDJ
(1)
其中:f(Genei)表示基因適應(yīng)度函數(shù);w1,w2,w3,w4為權(quán)值;Dret表示日收益率;DTrdTurnR表示流通股日換手率,Beta_tmv表示風(fēng)險(xiǎn)因子_流通市值加權(quán),KDJ表示隨機(jī)指標(biāo)。
染色體適應(yīng)值函數(shù)為:
(2)
其中:f(Chmi)為染色體函數(shù);n為種群染色體的個(gè)數(shù)。
由于遺傳算法具有收斂性,算法執(zhí)行后期的適應(yīng)值變小,種群中的個(gè)體之間的差異性降低,此后的計(jì)算對(duì)滿意解向最優(yōu)解逼近的貢獻(xiàn)不大,因此,要定義合適的停止準(zhǔn)則,從而高效地求解問題的滿意解。本文的停止準(zhǔn)則是根據(jù)種群的適應(yīng)度變化程度決定的,當(dāng)每一代群體的適應(yīng)度滿足一定要求或者適應(yīng)度變化停滯時(shí),算法停止。
按照設(shè)計(jì)方案,當(dāng)算法終止迭代后,將選取適應(yīng)值最高的一條染色體。該染色體對(duì)應(yīng)的投資組合是所求的全局滿意解。
2.1.1 初始數(shù)據(jù)
本文所用數(shù)據(jù)來源于RESSET股票數(shù)據(jù)庫,選取上海證券交易所的所有A股主板股票,得到包含以下指標(biāo)的數(shù)據(jù):股票代碼、流通股日換手率、日收益率、21日K值、21日D值、21日J(rèn)值和風(fēng)險(xiǎn)因子,共1 095只股票,19 612條數(shù)據(jù)。
2.1.2 確定備選股票集合
利用第一步處理所得數(shù)據(jù),剔除公司名稱變更、證券代碼變更、凈資產(chǎn)為負(fù)、凈利潤為負(fù)、投資凈收益為負(fù)的股票,選取剩下正常上市且上市時(shí)間大于3個(gè)月的股票,確定為初始樣本。
經(jīng)過以上處理后,得到465只股票,再將難以獲取到完整數(shù)據(jù)的股票剔除,最終篩選出413只股票,作為備選股票。所選數(shù)據(jù)日期為2016年7月份的21個(gè)交易日。利用7月份的數(shù)據(jù)預(yù)測(cè)優(yōu)化8月份的投資方案。
2.1.3 數(shù)據(jù)二進(jìn)制編碼化
本文的數(shù)據(jù)編碼使用二進(jìn)制編碼,在數(shù)據(jù)二進(jìn)制化之前,需預(yù)先處理現(xiàn)有數(shù)據(jù),處理過程如下:
1)由于股票代碼數(shù)值較大,故將股票代碼按從1到413重新編號(hào);
2)由于6個(gè)變量的量級(jí)不統(tǒng)一,為了便于編碼和計(jì)算,將其同量級(jí)化,同量級(jí)化規(guī)則:DTrdTurnR×10,Dret×5 000,K21×1,D21×1,J21×1,Beta×100,同量級(jí)化后的數(shù)據(jù)如表1所示(共413條數(shù)據(jù),此處僅列示前20條)。
表1 預(yù)處理后的備選股票數(shù)據(jù)表
接下來進(jìn)行二進(jìn)制化處理,處理規(guī)則為:取數(shù)據(jù)整數(shù)部分進(jìn)行第一次二進(jìn)制化,然后測(cè)量二進(jìn)制化后的數(shù)字字段長度,取最長字段的位數(shù)重新進(jìn)行二進(jìn)制計(jì)算。經(jīng)計(jì)算測(cè)量,最長的二進(jìn)制字段長度為10位,因此將所有數(shù)據(jù)轉(zhuǎn)化為長度為10個(gè)字符的二進(jìn)制數(shù)據(jù),然后將二進(jìn)制化后的數(shù)據(jù)的每個(gè)單元作為一個(gè)基因片段,按每一行的7個(gè)基因片段的順序生成基因,每一個(gè)基因的頭部10位為這個(gè)基因的順序編號(hào),共生成413個(gè)基因。
2.2.1 遺傳算法工具箱
遺傳算法的實(shí)現(xiàn)方式有很多,Matlab軟件提供了對(duì)應(yīng)的遺傳算法工具箱GADS,遺傳算法工具箱中綜合了一系列的函數(shù),同時(shí)對(duì)優(yōu)化和數(shù)值計(jì)算工具進(jìn)行了擴(kuò)展并提升了性能。工具箱中還提供了一些遺傳算法的經(jīng)典優(yōu)化問題的范例,以方便快速學(xué)習(xí)掌握。這個(gè)工具箱的函數(shù)是用Matlab的M文件格式存儲(chǔ)的,可以根據(jù)需要修改以實(shí)現(xiàn)需要的功能。所有優(yōu)化算法的函數(shù)由Matlab語言編寫。
Matlab的遺傳算法工具箱的進(jìn)化規(guī)則是逼近適應(yīng)函數(shù)的最小值,因此要對(duì)適應(yīng)函數(shù)取負(fù)數(shù)處理,其他參數(shù)按照上文所述設(shè)置。
2.2.2 計(jì)算結(jié)果
算法迭代到第51代終止,計(jì)算所得最佳適應(yīng)度0.283 784,計(jì)算結(jié)果對(duì)應(yīng)的20只股票及其數(shù)據(jù)如表2所示。
表2 選出股票數(shù)據(jù)表
8月份同期計(jì)算出的組合收益與市場(chǎng)日收益對(duì)比如表3所示。
表3 組合收益與市場(chǎng)日收益對(duì)比表
表3數(shù)據(jù)顯示:計(jì)算出的投資組合的日收益率指標(biāo)能很好地跟蹤市場(chǎng)日收益率指標(biāo),2016年8月份A股主板市場(chǎng)的日市場(chǎng)收益率均值為0.001 8,計(jì)算出的股票組合的日收益率均值為0.003 018,2016年8月份A股主板市場(chǎng)的日市場(chǎng)收益率加和為0.041 4,計(jì)算出的股票組合的日收益率加和為0.069 391,計(jì)算出的投資組合的收益率指標(biāo)要比A股主板市場(chǎng)高出67.61%。
伴隨著中國經(jīng)濟(jì)的高速發(fā)展,國民人均收入顯著提高,恩格爾系數(shù)下降明顯,人們的理財(cái)習(xí)慣從儲(chǔ)蓄轉(zhuǎn)變?yōu)橥顿Y。隨著投資市場(chǎng)和各種投資理論的發(fā)展,可選擇的投資方式和投資領(lǐng)域?qū)映霾桓F,如何投資才能效益最大化利用資金成為各行各業(yè)投資者需要考慮的問題。投資組合理論是一種大眾比較接受和認(rèn)可的理論,通過將資金分散,分散投資風(fēng)險(xiǎn),從而在可接受風(fēng)險(xiǎn)下獲得可觀的投資收益。本文選取了股票投資市場(chǎng)作為研究對(duì)象,重點(diǎn)研究上海證券交易所的A股主板市場(chǎng),以投資組合理論作為理論依據(jù)、遺傳算法作為工具對(duì)求解投資組合的優(yōu)化問題進(jìn)行了實(shí)證研究。本文對(duì)遺傳算法的各算子、適應(yīng)值函數(shù)進(jìn)行了詳細(xì)的設(shè)計(jì),并對(duì)研究數(shù)據(jù)作了大量預(yù)處理,最終用Matlab工具實(shí)現(xiàn)遺傳算法并對(duì)所研究問題進(jìn)行了實(shí)證。
本文的實(shí)證部分得出的結(jié)果顯示,利用遺傳算法求解出的投資組合的日收益率指數(shù)能很好地跟蹤對(duì)應(yīng)市場(chǎng)日收益率指數(shù),求解出的投資組合的總體收益率要比市場(chǎng)的收益率高出七成,因此,利用遺傳算法求解投資組合來對(duì)投資組合進(jìn)行優(yōu)化是有效的。相較于窮舉法搜索全部解的方式,利用遺傳算法能在較短的時(shí)間內(nèi),動(dòng)用較少的資源,得出足夠滿意的結(jié)果。