張松松 萬宇晴 袁華強(qiáng)
(東莞理工學(xué)院 計算機(jī)科學(xué)與技術(shù)學(xué)院,廣東東莞 523808)
在金融交易中,股票市場占據(jù)著非常重要的地位[1]。趨勢追蹤是一種基于技術(shù)面分析的交易投資策略,并不預(yù)測股票精確的市場價格。相反,趨勢追蹤只是通過股票歷史數(shù)據(jù)判斷股票的上漲或下跌的幅度,決定買入這只股票的時間點(diǎn)以及賣出的時間點(diǎn)。如何在股票上漲時買入,以及如何在股票下跌時及時賣出,成為趨勢追蹤研究的關(guān)鍵問題。近年來,已經(jīng)出現(xiàn)了幾種趨勢追蹤算法。Fong Simon等人在文獻(xiàn)[2]里提出了一對基于指數(shù)平均數(shù)指標(biāo)(EMA)的靜態(tài)閾值用來決定買入和賣出時間點(diǎn),只是該方法閾值是靜態(tài)的,不能根據(jù)實際情況進(jìn)行自動調(diào)整。為緩解該問題,F(xiàn)ong Simon等人還在文獻(xiàn)[3]中提出了一種自動調(diào)整閾值的算法來確定買賣時機(jī),可該方法難以適應(yīng)股市的暴增、暴跌等特殊情況。Liu Jingyuan等人在文獻(xiàn)[4]提出了一種基于移動平均收斂發(fā)散線(MACD)的多對閾值交易策略算法來確定買入和賣出信號,用于應(yīng)對股市暴增、暴跌等特殊情況,不過MACD反映的只是短期的股市情況,難以綜合考慮股市的長期與短期情況。
基于以上分析,結(jié)合文獻(xiàn)[4]受到的啟發(fā),本文改進(jìn)了趨勢追蹤基于的模型以及判定多對閾值的方法,對長期和短期股市情況進(jìn)行綜合考慮,并利用不同的多目標(biāo)優(yōu)化算法進(jìn)行優(yōu)化效果比較,對完善后的多對閾值進(jìn)行優(yōu)化選出最佳的買入點(diǎn)和賣出點(diǎn)從而最大化獲利。
本節(jié)介紹了本文涉及的一些金融時間序列指標(biāo)以及這些指標(biāo)如何應(yīng)用于前人的工作。
EMA(Exponential Moving Average)對收盤價進(jìn)行算術(shù)平均,用于判斷未來的價格走勢。EMA的計算在式(1)給出[5],其中t表示交易日期,n表示的是EMA選取的周期,函數(shù)price代表收盤價。
(1)
文獻(xiàn)[2]中提出的靜態(tài)常量閾值算法是基于EMA判斷買賣時機(jī)。文獻(xiàn)[3]中自適應(yīng)趨勢追蹤算法在文獻(xiàn)[2]的基礎(chǔ)上結(jié)合了RSI(相對強(qiáng)度指標(biāo))進(jìn)行判斷買入時機(jī)。RSI指標(biāo)由J.W Wilder等人在文獻(xiàn)[5]中提出,基本思想是通過一定周期內(nèi)的平均增益和平均損失的比率判斷股票市場的景氣程度。RSI的計算在式(2)~(3)中給出[5]。
(2)
(3)
RSI的搜索空間為[0,100],默認(rèn)RSI的計算周期是14 d。
MACD(the Moving Average Convergence Divergence Line)是股票市場分析的一個指標(biāo),也叫快線,計算如式(4)。默認(rèn)情況下,S=12,L=26[6]。
在文獻(xiàn)[4]中,基于MACD生成最終的買入賣出信號。
MACD=EMAS(t)-EMAL(t).
(4)
SL(Signal Line)也稱之為慢線,是由MACD的n日指數(shù)平滑移動得到的(n默認(rèn)為9),其計算如式(5)[6]。
(5)
MACDHL(the Moving Average Convergence Divergence Histogram Line)是股票市場分析的另一個重要指標(biāo)。該指標(biāo)綜合考慮股市的短期與長期的情況從而對買入、賣出時機(jī)做出判斷,計算如式(6)[6]。
MACDHL(t)=2(MACD(t)-SL(t)).
(6)
TP(Typical Price)是指股票交易中當(dāng)天的最高價、最低價以及收盤價的算術(shù)平均值,計算方法如式(7),其中t為交易日。典型價格的作用是為了平滑日常價格的波動[7]。
(7)
SR(Success rate)是一段時間內(nèi)盈利交易的比例[8],是評價交易質(zhì)量指標(biāo)之一,SR通常作用于智能優(yōu)化算法的適應(yīng)度函數(shù),計算如式(8)。通過TP計算獲利的交易數(shù)量,SR越大,代表著該段時間內(nèi)獲利交易的比例越大,反之越小。
(8)
AROI(Accumulated Return on Investment)是一段時間內(nèi)每日收盤價相對于前一日收盤價的百分比變化的累計之和[9],也是評價交易質(zhì)量指標(biāo)之一。AROI的計算如式(9)所示。其中buy(I,t)代表第I次買入該股對應(yīng)日期t的價格,sell(I,t’)代表第I次賣出該股對應(yīng)日期t’的價格,n代表交易總數(shù)。AROI越大,代表著該段時間內(nèi)累計投資回報率越大,反之越小。
(9)
本節(jié)詳細(xì)介紹了本文基于的趨勢追蹤交易模型,基于這模型改進(jìn)的方法以及使用的多目標(biāo)優(yōu)化算法。一步步闡述了各對閾值使用的原因以及每對閾值使用后所帶來的影響,說明了如何改進(jìn)判定股票暴漲與暴跌的方法以及如何改進(jìn)閾值搜索空間,介紹了幾種常見的多目標(biāo)優(yōu)化算法的原理以及區(qū)別。最后提出了基于多目標(biāo)優(yōu)化算法的多閾值股市趨勢追蹤方法。
MACDHL最早是由G. Appel等人在文獻(xiàn)[10]中提出的,相對于文獻(xiàn)[4]基于的MACD模型,MACDHL模型是最有效綜合考慮股市短期與長期情況的指標(biāo)之一。值得注意的是,MACDHL并不是反應(yīng)股票具體價格的變化,而是反應(yīng)股票價格變化的速度。如圖1所示,MACDHL主要可分為4個不同的時段[10]。
圖1 MACDHL的四個階段
1)從日期A到B,此時MACDHL為負(fù)值,代表該時間周期的股票價格相對于本周期初始價格是下跌的;MACDHL為負(fù)值且越來越小,代表著股票價格下跌程度越來越大。
2)從日期B到C,此時MACDHL為負(fù)值,代表該時間周期的股票價格相對于本周期初始價格是下跌的;MACDHL為負(fù)值且越來越大,代表著股票價格下跌程度越來越小,有回漲跡象。
3)從日期C到D,此時MACDHL為正值,代表該時間周期的股票價格相對于本周期初始價格是上漲的;MACDHL為正值且越來越大,代表著股票價格上漲程度越來越大。
4)從日期D到E,此時MACDHL為正值,代表這個時間周期的股票價格相對于該周期初始價格是上漲的;MACDHL為正值且越來越小,代表著股票價格上漲程度越來越小,有下跌跡象。
通過MACDHL判斷買入賣出的基本方法是中心線交叉法,中心線即MACDHL為0的水平線。此時的交易策略為[10]:
1)買入:當(dāng)MACDHL當(dāng)天的數(shù)值剛越過中心線為正數(shù),且前一天數(shù)值還為負(fù)數(shù),即稱之為“看漲型中心線交叉”,進(jìn)行買入。如圖1的C點(diǎn)附近。
2)賣出:當(dāng)MACDHL當(dāng)天的數(shù)值剛低于中心線為負(fù)數(shù),且前一天數(shù)值還為正數(shù),即稱之為“看跌型中心線交叉”,進(jìn)行賣出。如圖1的E點(diǎn)附近。
不過,MACDHL模型是通過一定時間周期計算得到的,所以存在一定的滯后性。如圖2所示,該圖是股價隨日期變化折線圖和MACDHL隨日期變化折線圖。原本股價在A點(diǎn)處開始上漲,由于延遲性MACDHL在E點(diǎn)附近大于0,對應(yīng)股價B點(diǎn)處才進(jìn)行買入;原本股價在C點(diǎn)出開始下跌,同理,由于延遲MACDHL在F點(diǎn)附近小于0,對應(yīng)股價D點(diǎn)處才進(jìn)行賣出,顯然這次交易是虧損的,因為股價的上升趨勢在B點(diǎn)后不久便回落了,所以如果趨勢追蹤算法能夠忽略此類微弱上漲趨勢,便能增加交易總額中獲利的交易數(shù)量,從而提高獲利成功率。同理,若能忽略微弱的下跌趨勢,也能提高利潤[4]。為了緩解此類問題,在下一小節(jié)將介紹一種忽略微弱上漲和微弱下跌的交易策略。
圖2 MACDHL預(yù)測的延遲情況
通過上述分析,提出第一對閾值P1、Q1用來判斷是否要買入或賣出,P1值恒為正數(shù),Q1值恒為負(fù)數(shù)。此時的交易策略為[4]:
1)買入:如圖3的A點(diǎn)所示,當(dāng)MACDHL值越過P1值水平線,則此時不再是微弱上漲趨勢,進(jìn)行買入。
2) 賣出:如圖3的B點(diǎn)所示,當(dāng)MACDHL值低于Q1值水平線,則此時不再是微弱下跌趨勢,進(jìn)行賣出。
圖3 基于MACDHL的第一對閾值P1,Q1
使用差分進(jìn)化算法結(jié)合模擬退火算法的多目標(biāo)優(yōu)化算法對閾值進(jìn)行優(yōu)化,其中差分進(jìn)化算法對目標(biāo)函數(shù)“獲利率”(SR)進(jìn)行優(yōu)化,模擬退火算法對目標(biāo)函數(shù)“累計投資回報率”(AROI)進(jìn)行優(yōu)化。通過差分進(jìn)化算法訓(xùn)練得到SR最高時的幾組閾值,再用模擬退火算法訓(xùn)練得到這幾組閾值對應(yīng)AROI最高時的一組閾值,下面分別詳細(xì)介紹這兩種算法。
2.3.1 差分進(jìn)化算法
差分進(jìn)化算法(Differential Evolution Algorithm,DEA)是基于遺傳算法的優(yōu)化算法[11]。本文使用差分進(jìn)化算法優(yōu)化SR,該算法的主要步驟如下所示。
1)初始化:
xi=(di,1,di,2,di,k…di,D) ,
(10)
式(10)說明了每個個體的表示方式,其中I=1, 2, 3,…,NP,D代表維度,NP代表種群大小。
2)變異:
vi=xr1+F(xr2-xr3),
(11)
式(11)說明了每個個體xi對應(yīng)的變異向量vi的產(chǎn)生方式,其中r1、r2、r3是隨機(jī)選擇的,且r1≠r2≠r3≠I,F(xiàn)是變異因子控制偏差的大小(實驗使用0.8)。
3)交叉:
(12)
式(12)說明了每個xi與vi進(jìn)行各個維度的比較生成臨時子代ui,其中CR代表0~1的交叉概率(本文實驗使用0.75),randi (1,D)=j確保了變異向量vi至少有一個分量傳給臨時子代。
4)邊界處理:
經(jīng)過變異和交叉過后產(chǎn)生了所有臨時子代,如果某一臨時子代的某一維度超出了該維度對應(yīng)的邊界值,則重新在對應(yīng)范圍內(nèi)隨機(jī)生成該維度。
5)選擇:
(13)
式(13)說明了比較臨時子代與父代,選擇適應(yīng)度更好的作為真正的子代,其中適應(yīng)度函數(shù)為SR(獲利成功率),算法的初始種群數(shù)設(shè)置為30,迭代次數(shù)設(shè)置為50。
2.3.2 模擬退火算法
模擬退火算法(Simulated Annealing Algorithm,SA)來源于物理滅火過程,在每個溫度下慢慢冷卻,最終達(dá)到物理基態(tài)(相當(dāng)于算法找到最優(yōu)解)[12]。上一小節(jié)中通過差分進(jìn)化算法找到了SR最高時對應(yīng)的幾組閾值,現(xiàn)在將這幾組閾值在模擬退火算法中計算AROI,如果新一組閾值對應(yīng)的AROI大于上一組閾值對應(yīng)的AROI則進(jìn)行全局最優(yōu)解的代替,否則以一定的指數(shù)概率進(jìn)行代替,隨著溫度的降低,指數(shù)概率也會逐漸降低,退火過程趨于穩(wěn)定,算法的參數(shù)設(shè)置如下[4]:
1)初始溫度:1;
2)終止溫度:0.1;
3)降溫因子:0.7。
這樣就通過差分進(jìn)化算法結(jié)合模擬退火算法的多目標(biāo)優(yōu)化算法對閾值進(jìn)行優(yōu)化,訓(xùn)練出SR、AROI最高時對應(yīng)的閾值大小,流程圖如圖4所示。
圖4 多目標(biāo)優(yōu)化算法流程圖
要使用多目標(biāo)優(yōu)化算法找出最佳的閾值對P1、Q1,即把(P1, Q1)作為個體的表示方式。還需明確各個閾值的搜索空間范圍:當(dāng)MACDHL大于0時,每出現(xiàn)一次峰值記為MUi,上升趨勢平均線(UAL:the Uptrend Average Lines)計算如式(14)。相應(yīng)的,當(dāng)MACDHL小于0,每出現(xiàn)一次低谷記為MDi,下降趨勢平均線(DAL:The Downtrend Average Lines)計算如式(15)。
(14)
(15)
把[0, UAL]記為P1值的取值范圍,[DAL, 0]記為Q1值的取值范圍[4],就得到了個體各個閾值的搜索空間范圍。有了閾值范圍和各個參數(shù)的設(shè)定,就可根據(jù)多目標(biāo)優(yōu)化算法流程圖,不斷迭代選出SR和AROI最大時對應(yīng)的閾值,再通過該訓(xùn)練的閾值對測試集直接進(jìn)行預(yù)測,評估交易策略質(zhì)量的高低。
然而,由于MACDHL模型具有延遲性,當(dāng)股票出現(xiàn)暴漲或者暴跌情況時就會因延遲而造成損失。如圖5所示,圖5(a)、圖5(b)圖上方分別代表股市價格暴增和暴跌的情況,圖5 (a)、圖5(b)圖下方表示對應(yīng)MACDHL的變化情況。當(dāng)股市價格暴增時,由于MACDHL的延遲性,直到在C點(diǎn)(對應(yīng)MACDHL大于P1時)才進(jìn)行買入,在D點(diǎn)(對應(yīng)MACDHL小于Q1時)進(jìn)行賣出,可見此次買賣是虧損的,因為交易員買入時機(jī)太晚了。所以如果能在B點(diǎn)前(對應(yīng)MACDHL越過交叉線前)進(jìn)行股票是否暴增的判定,是則進(jìn)行買入,那么此次交易則是獲利的;同理當(dāng)股票價格暴跌時,由于延遲性直到H點(diǎn)(對應(yīng)MACDHL小于Q1時)才進(jìn)行賣出,在E點(diǎn)(對應(yīng)MACDHL大于P1時)進(jìn)行買入,同樣因賣出時機(jī)過晚,而造成買賣時虧損的,若能在G點(diǎn)前(對應(yīng)MACDHL低于交叉線前)進(jìn)行股票是否暴跌的判定,是則進(jìn)行賣出,那么此次交易則是獲利的[4]。
為了緩解此類問題,在下一小節(jié)將介紹一種判定股票暴漲和暴跌的交易策略。
圖5 股票暴漲或暴跌時的損失情況
經(jīng)過上述分析,提出第二對閾值P2、Q2來衡量股市是否暴漲或暴跌,P2和Q2恒為正數(shù),此時的交易策略為[4]:
1) 買入:如圖6(a)所示,當(dāng)MACDHL值在越過中心線之前的一段時間周期內(nèi)的上漲垂直距離大于P2,則記為股票暴漲,在時間點(diǎn)T2進(jìn)行買入。
2) 賣出:如圖6(b)所示,當(dāng)MACDHL值在低于中心線之前的一段時間周期內(nèi)的下跌垂直距離大于Q2,則記為股票暴跌,在時間點(diǎn)T4進(jìn)行賣出。
文獻(xiàn)[4]中當(dāng)RSI>50,且MACD垂直上漲距離大于P2則視為暴漲;當(dāng)RSI<50,且MACD垂直下跌距離大于Q2曾視為暴跌。經(jīng)過多次實驗,發(fā)現(xiàn)此方法會導(dǎo)致把多數(shù)情形都視為暴增或暴跌從而造成損失。因此通過改進(jìn),提出的交易策略是:
1)買入:當(dāng)MACDHL在越過中心線之前連續(xù)上漲了3 d(3 d、是從連續(xù)上漲3、4、…、10 d中經(jīng)過多次訓(xùn)練測試選定的參數(shù)),且這3 d上漲的垂直距離大于P2則視為暴增。
2)賣出:當(dāng)MACDHL在低于中心線之前連續(xù)下跌了3 d(3 d參數(shù)來源同上),且這3 d下跌的垂直距離大于Q2則視為暴跌。
P2、Q2的搜索空間分別為[0, -min(MDi)]、[0, max(MUi)][4],該交易策略同樣使用多目標(biāo)優(yōu)化算法進(jìn)行優(yōu)化求全局最優(yōu)解,這樣算法的維度就提升到4維,即個體由(P1,Q1)變成了(P1,Q1,P2,Q2),算法的其余參數(shù),如迭代數(shù)、初始種群數(shù)、(P1,Q1)范圍等和2.3小節(jié)中一樣。
圖6 基于MACDHL的第二對閾值P2、Q2
值得注意的是,P2、Q2是一起和P1、Q1作用于MACDHL模型的,兩對閾值同時發(fā)揮著作用。這樣在MACDHL越過中心線前后分別都有兩個閾值進(jìn)行判斷,可是在中心線交叉處不會產(chǎn)生買入賣出信號,為了緩解該問題,在下一小節(jié)將介紹中心線交叉結(jié)合相對強(qiáng)度指標(biāo)的交易策略。
經(jīng)過上述分析,在MACDHL中心線交叉處引入第三對閾值P3、Q3用來判定中心線交叉的上漲或下跌趨勢[4]。P3、Q3代表的是RSI(相對強(qiáng)度指數(shù))水平(如式(2)~式(3)所示),此時的交易策略是:
1) 買入:當(dāng)MACDHL中心線交叉為“看漲型”(前一天小于0,當(dāng)天大于0),且當(dāng)天的RSI值大于P3,則進(jìn)行買入。
2) 賣出:當(dāng)MACDHL中心線交叉為“看跌型”(前一天大于0,當(dāng)天小于0),且當(dāng)天的RSI值小于Q3,則進(jìn)行賣出。
文獻(xiàn)[4]中P3、Q3的搜索空間分別為[50,70]和[30,50],經(jīng)過多次的實驗發(fā)現(xiàn)該搜索空間較小,導(dǎo)致容易忽略可盈利的超買情況和將虧損的超賣情況從而造成損失。1.1小節(jié)中可知RSI指標(biāo)搜索空間范圍為[0,100],因此為了減少損失,改進(jìn)P3搜索空間為[50,100],Q3搜索空間為[0,50],此時P3、Q3的范圍已經(jīng)是所能設(shè)置的最大范圍。
同樣。閾值P3、Q3是與P1、Q1,P2、Q2一同作用于MACDHL模型的。該交易策略同樣使用多目標(biāo)優(yōu)化算法進(jìn)行優(yōu)化求全局最優(yōu)解,這樣算法的維度就提升到6維即個體為(P1,Q1,P2,Q2,P3,Q3),算法的其余參數(shù), 如迭代數(shù)、初始種群數(shù)、(P1,Q1,P2,Q2)范圍等和2.4小節(jié)一樣。
基于上述分析,總結(jié)本文所有的股市交易策略算法如下:
1) 買入:當(dāng)MACDHL值大于P1時進(jìn)行買入;當(dāng)MACDHL為負(fù),連續(xù)上漲3 且上漲垂直距離大于P2時進(jìn)行買入;當(dāng)MACDHL當(dāng)天大于0,前一天小于0,且當(dāng)天對應(yīng)的RSI值大于P3,進(jìn)行買入。
2) 賣出:當(dāng)MACDHL值小于Q1時進(jìn)行賣出;當(dāng)MACDHL為正,連續(xù)下跌3 d且下跌垂直距離大于Q2時進(jìn)行賣出;當(dāng)MACDHL當(dāng)天小于0,前一天大于0,且當(dāng)天對應(yīng)的RSI值小于Q3,進(jìn)行賣出。
通過MACDHL模型的使用、改進(jìn)判定股票暴增或暴跌的方法、改進(jìn)中心線交叉處閾值的搜索空間范圍,結(jié)合多目標(biāo)優(yōu)化算法對三對閾值進(jìn)行優(yōu)化。我們迭代出訓(xùn)練集SR和AROI最大時對應(yīng)三對閾值的大小,再用三對閾值對測試集進(jìn)行交易時機(jī)預(yù)測,通過預(yù)測的交易時機(jī)計算SR和AROI來評價交易策略算法的質(zhì)量。以上是本文最終的方法以及訓(xùn)練和測試的流程,前人工作的訓(xùn)練和測試的流程同上。
為了探索不同多目標(biāo)優(yōu)化算法針對交易策略中三對閾值的優(yōu)化效果,本文還選用了二進(jìn)制編碼遺傳算法結(jié)合模擬退火算法和粒子群算法結(jié)合模擬退火算法的多目標(biāo)優(yōu)化算法進(jìn)行比較,即把2.3小節(jié)中多目標(biāo)優(yōu)化算法的差分進(jìn)化算法部分分別用二進(jìn)制編碼遺傳算法和粒子群算法進(jìn)行代替。
2.7.1 二進(jìn)制編碼遺傳算法
遺傳算法(Genetic Algorithm,GA)是一種基于自然選擇和適者生存的優(yōu)化算法[13],它模擬了自然選擇和遺傳過程中的選擇、交叉和變異現(xiàn)象。本文選用基于二進(jìn)制的編碼方式進(jìn)行比較,算法的參數(shù)設(shè)置如下[13]:
1)染色體長度:10;
2)交叉率:0.8;
3)變異率:0.01;
其余閾值范圍、初始個體數(shù)和迭代次數(shù)等參數(shù)與2.5小節(jié)相同。
2.7.2粒子群優(yōu)化算法
粒子群優(yōu)化算法是一種進(jìn)化計算技術(shù),源于對鳥類群體覓食的研究。粒子群中的各個粒子根據(jù)本身當(dāng)前個體最優(yōu)解和整個粒子群進(jìn)行共享的當(dāng)前全局最優(yōu)解來更新自己的速度和位置。在每一次迭代過程中,粒子通過式(16)~式(17)來更新自己速度與位置,若更新后速度或位置超過了各自的范圍,則用各自范圍的邊界值代替。
xi(t+1)=xi(t)+vi(t+1),
(16)
vi(t+1)=ωvi(t)+φ1R1(pi-xi(t))+
φ2R2(gi-xi(t)),
(17)
其中個體6個維度的速度范圍為位置的0.2倍大小[14],xi代表位置,vi代表速度,t代表第幾代,ω代表慣性因子(本文實驗取0.9),φ1、φ2代表學(xué)習(xí)因子(本文實驗均取2)[14],R1、R2代表[0, 1]的隨機(jī)數(shù),其余閾值范圍、初始個體數(shù)和迭代次數(shù)等參數(shù)與2.5小節(jié)相同。
實驗選取了6個股票指數(shù)的歷史數(shù)據(jù)作為實驗數(shù)據(jù)(數(shù)據(jù)來源雅虎財經(jīng)[15]),其中三年的歷史數(shù)據(jù)(2011.08.01-2014.07.31)為訓(xùn)練數(shù)據(jù),后一年的數(shù)據(jù)(2014.08.01-2015.07.31)為測試數(shù)據(jù)[4]。此次實驗中,SR(成功率)和AROI(累計回報率)用來評估交易的質(zhì)量。每支股票分別都進(jìn)行了10次訓(xùn)練與測試,對10次實驗得到的SR和AROI取平均值作為這支股票對應(yīng)的SR和AROI。最后再取6支股票的SR和AROI的平均值來最終評價這種方法的效果,數(shù)值越高說明交易質(zhì)量越高,也就是說明這種方法的效果越好,同時給出了不同優(yōu)化方法的平均訓(xùn)練時間(“T/s”行)。原型系統(tǒng)采用Python 3.8.5編程語言開發(fā),實驗是在i7-5500U (2.40GHz)處理器、8GB RAM和Windows10家庭版操作系統(tǒng)的計算機(jī)上進(jìn)行的。
實驗分為六個部分,第一部分(3.1小節(jié))為本文改進(jìn)的MACDHL模型與文獻(xiàn)[4]中MACD模型的效果比較;第二部分(3.2小節(jié))為本文改進(jìn)判定股票暴增或暴跌的方法與文獻(xiàn)[4]方法的效果比較;第三部分(3.3小節(jié))為改進(jìn)第三對閾值搜索空間與文獻(xiàn)[4]閾值搜索空間的效果比較;第四部分(3.4小節(jié))為驗證三對閾值的效果和作用;第五部分(3.5小節(jié))為比較不同多目標(biāo)優(yōu)化算法對三對閾值的優(yōu)化效果;第六部分(3.6小節(jié))為本文最終的方法與前人的工作進(jìn)行比較。
文獻(xiàn)[4]中使用基于MACD模型的多閾值算法進(jìn)行股市買賣時機(jī)預(yù)測,在控制其交易策略、優(yōu)化算法不變的情況下,將MACD模型改進(jìn)為MACDHL模型,比較基于這兩種模型的買賣時機(jī)效果。如表1所示,相對于基于MACD模型,基于MACDHL模型的SR、AROI分別提升了6個、0.71個百分點(diǎn),因此基于MACDHL模型效果是優(yōu)于基于MACD模型的。
表1 MACD與MACDHL模型比較
如2.4小節(jié)所述,用MACDHL連續(xù)上漲3 d或下降3 d作為判定股票是否有暴增或暴跌的趨勢,與文獻(xiàn)[4]中用RSI判定股票暴增或暴跌的方法對比,保持其他變量與優(yōu)化方法不變。如表2所示,相對于RSI方法,本文方法的SR、AROI分別提升了3個、1.5個百分點(diǎn)。
表2 改進(jìn)判定暴增或暴跌方法
如2.5小節(jié)所述,將第三對閾值P3、Q3的搜索空間改進(jìn)為[50,100]與[0,50],和文獻(xiàn)[4]中[50,70]與[30,50]的搜索空間進(jìn)行比較實驗,保持其他變量、模型以及優(yōu)化方法不變。如表3所示,相對于原始的搜索空間,改進(jìn)后的搜索空間的SR、AROI分別提升了4個、1.1個百分點(diǎn)。
表3 改進(jìn)第三對閾值搜索空間
在訓(xùn)練過程中,本文使用多目標(biāo)優(yōu)化算法找到了改進(jìn)后的基于MACDHL模型的閾值P1、Q1、P2、Q2、P3、Q3的近似最優(yōu)解。每提出一對閾值都進(jìn)行訓(xùn)練與測試,判斷該對閾值的提出是否有效果。如表4所示,“MACDHL-0”列為2.1小節(jié)所述的“MACDHL中心線交叉法”;“一對閾值+DE+SA”列為2.2小節(jié)所述的“忽略股市微弱上漲或下跌法”;“兩對閾值+DE+SA”列為2.4小節(jié)所述的“改進(jìn)判定股票暴漲或暴跌法”;“三對閾值+DE+SA”列為2.5小節(jié)所述的“改進(jìn)中心線交叉結(jié)合RSI指標(biāo)法”,該方法也是本文最終的方法??梢?,每提出新一對閾值,對應(yīng)平均的SR和AROI就都會有所提升,表明每提出一對新閾值都是有利于利潤的提高的。
將3.4小節(jié)中的差分進(jìn)化算法分別用粒子群算法和二進(jìn)制編碼遺傳算法進(jìn)行替換,比較粒子群算法結(jié)合模擬退火算法(“三對閾值+PSO+SA“列)、二進(jìn)制編碼遺傳算法結(jié)合模擬退火算法(“三對閾值+GA+SA”列)和差分進(jìn)化算法結(jié)合模擬退火算法(“三對閾值+DE+SA”列)對多對閾值的優(yōu)化效果,即在訓(xùn)練過程中使用不同多目標(biāo)優(yōu)化算法找出三對閾值的近似最優(yōu)解,再在測試集中預(yù)測買賣時機(jī)。如表4所示,實驗結(jié)果表明相對于結(jié)合粒子群優(yōu)化算法和結(jié)合二進(jìn)制編碼的遺傳算法,在解決多閾值股市趨勢追蹤交易策略這一問題上,模擬退火算法結(jié)合差分進(jìn)化算法的SR、AROI以及耗時方面都取得了更好的效果。
表4 比較不同閾值與不同多目標(biāo)優(yōu)化算法
在這一部分,如表5所示,將本文最終方法(“三對閾值+DE+SA”列)的實驗效果和平均訓(xùn)練時間同靜態(tài)算法[2](“Static TF”列)、自適應(yīng)算法[3](“Adaptive TF”列)以及基于MACD的多閾值算法的方法[4](“MACD+Multi-thresholds”列)進(jìn)行了比較, 靜態(tài)算法和自適應(yīng)算法的介紹參考1.1小節(jié)。其中靜態(tài)算法和自適應(yīng)算法也是直接測試無需訓(xùn)練的,所以沒有訓(xùn)練時間。靜態(tài)算法中P、Q值是交易員手動輸入的,對于每一個測試集,我們都從[10,10]到[100,100]每隔[10,10]選取一組數(shù)值[4],選取了十組數(shù)值分別進(jìn)行測試,再取這十次測試得到的SR和AROI的平均值得到對應(yīng)測試集的實驗結(jié)果。
可見,相對于靜態(tài)算法,本文最終方法的SR、AROI分別提升了10個、7.09個百分點(diǎn);相對于自適應(yīng)算法,本文最終方法在SR、AROI分別提升了7個、10.49個百分點(diǎn);相對于基于MACD的多閾值算法,本文最終方法在SR、AROI分別提升了12個、3.98個百分點(diǎn)。此外,本文最終提出的方法在訓(xùn)練時間上也比基于MACD的多閾值算法減少了6 121.70 s。
表5 本文最終方法與前人工作比較
本文提出了一種基于MACDHL模型的多對閾值交易策略,改進(jìn)了判定股市暴漲或暴跌的方法以及中心線交叉處閾值的搜索空間,一步步提出三對閾值作用于不同的股市行情,并且通過比較不同的多目標(biāo)優(yōu)化算法對多閾值的優(yōu)化效果,發(fā)現(xiàn)差分進(jìn)化算法結(jié)合模擬退火算法的多目標(biāo)優(yōu)化算法比其他多目標(biāo)優(yōu)化算法效果更好。此外,相對于前人的趨勢追蹤方法,即靜態(tài)算法、自適應(yīng)算法以及基于MACD的多閾值算法,本文最終的方法在獲利成功率,累計投資回報率以及訓(xùn)練時間上都得到了更好的效果。
與靜態(tài)算法、自適應(yīng)算法、基于MACD的多閾值算法效果進(jìn)行對比,實驗結(jié)果顯示本文的方法取得了更好的效果。本文的主要貢獻(xiàn)有:
1)提出使用基于移動平均收斂發(fā)散柱狀圖線(MACDHL)的閾值去判斷買賣時機(jī),而不是使用傳統(tǒng)的基于指數(shù)平均數(shù)指標(biāo)(EMA)和移動平均收斂發(fā)散線(MACD)的閾值,從而綜合考慮股市的長期和短期情況,改進(jìn)了趨勢追蹤基于的模型。
2)改進(jìn)了判定股票暴漲或暴跌的方法,改進(jìn)了中心線交叉處方法對應(yīng)閾值的搜索空間,實驗結(jié)果表明取得了更好的獲利效果。
3)使用三對閾值分別解決不同的股市問題,用差分進(jìn)化算法結(jié)合模擬退火算法的多目標(biāo)優(yōu)化算法優(yōu)化完善后的三對閾值,從效果和耗時兩方面,與其他的多目標(biāo)優(yōu)化算法以及前人的工作進(jìn)行對比,實驗表明本文最終的方法效果更好,耗時更少。
本文不足之處在于無法完全解決復(fù)雜的股市行情,只是從歷史數(shù)據(jù)的技術(shù)面分析,沒有考慮公司新聞、股民情緒等基本面問題,因此如何結(jié)合情感分析[16]、關(guān)聯(lián)維數(shù)[17]等技術(shù)將是未來的研究方向之一。