所測試的期貨品種越多,越能檢驗(yàn)出模型對不同品種的適用性 程序化交易模型的測試與評估 提要:程序化交易能否成功,很大程度上取決于交易模型。因此,把交易模型稱之為程序化交易的靈魂,一點(diǎn)都不為過。程序化交易系統(tǒng)的設(shè)計是一項(xiàng)復(fù)雜的系統(tǒng)工程,不是簡單的幾個指標(biāo)的應(yīng)用,理論上來說程序化交易系統(tǒng)就是一種盈利模式。目前市面上各種程序化交易模型如牛毛,檢驗(yàn)?zāi)P蛢?yōu)劣就需要對其進(jìn)行測試評估。 □ 韓錦
測試參數(shù)的設(shè)置 測試參數(shù)設(shè)置的不同所得到的測試結(jié)果差異很大,客觀設(shè)置測試參數(shù)關(guān)系到模型交易效果的真?zhèn)魏蛯δP偷淖罱K取舍。模型的測試結(jié)果對未來市場有多大的適用性是由以下三大要素決定的: 一是測試的品種數(shù)量。所測試的期貨品種越多,越能檢驗(yàn)出模型對不同品種的適用性。 二是測試的時間跨度。測試所采用的歷史數(shù)據(jù)越多、時間跨度越長,測試涵蓋的各種市場狀況就越全面,模型的可靠性就越大。 三是交易成本費(fèi)率的設(shè)置。除了手續(xù)費(fèi)費(fèi)率設(shè)置的高低會影響模型盈虧效果以外,另一個最重要的設(shè)置參數(shù)就是滑點(diǎn)問題。 所謂滑點(diǎn),是指下單價與實(shí)際成交價之間的差價。在期貨市場,滑點(diǎn)的產(chǎn)生大部分是因?yàn)樾星椴▌觿×遥瑢?dǎo)致網(wǎng)絡(luò)數(shù)據(jù)傳輸延遲。例如,股指期貨某合約盤中即時報價為:買價3200.2,15手;賣價3200.4,20手;某投資者想在3200.4價位買入20手,但等他敲入指令后的那一瞬間,有人搶先買了,結(jié)果該投資者在3200.4就沒有買到,而且由于行情快速上漲,賣價掛單瞬間變成了3201.0,30手。為了能保證成交,該投資者只得撤單后,比即時賣價還要上跳兩個單位進(jìn)行報價,即以3201.4,20手的買單敲入指令,結(jié)果有15手成交價為3201.2,另外5手成交價為3201.4。出現(xiàn)的滑點(diǎn)分別是1跳和2跳。顯然滑點(diǎn)增加,會導(dǎo)致交易成本增加,相應(yīng)的交易收益受損?! ?/font> 與手續(xù)費(fèi)率相比,交易過程中的滑點(diǎn)成本不是固定的,在行情波動不劇烈時交易,可能沒有滑點(diǎn)問題,而在行情劇烈波動時,交易常常會遇到滑點(diǎn)問題。 交易成本對模型效果的影響,還與模型使用的數(shù)據(jù)周期以及交易頻率有關(guān)。通常而言,加載周期越短、交易頻率越高的模型,交易成本對其使用效果的影響越大。在模型測試中,往往需要設(shè)置一定的手續(xù)費(fèi)率以及滑點(diǎn)成本去還原歷史運(yùn)行中可能出現(xiàn)的交易成本。尤其是套利及高頻模型對成本極端敏感,模型開發(fā)者往往需要根據(jù)實(shí)際運(yùn)行的滑點(diǎn)統(tǒng)計數(shù)據(jù)設(shè)定合理的成本。為保證模型測試結(jié)果的可信度,設(shè)置模型的測試參數(shù)時,應(yīng)該將滑點(diǎn)設(shè)置的高一點(diǎn),通常為1跳或2跳,以保證是在扣除了足夠交易成本的條件下得到的測試結(jié)果。如果即便是在手續(xù)費(fèi)費(fèi)率和滑點(diǎn)設(shè)置都較高的情況下模型仍能盈利,則說明該模型的盈利效果比較好。評價交易模型性能優(yōu)劣的指標(biāo)體系包含很多測試項(xiàng)目,但主要評價指標(biāo)有年化收益率、最大資產(chǎn)回撤、收益風(fēng)險比、夏普比率、勝率與盈虧比等。 年化收益率與最大資產(chǎn)回撤 交易者最關(guān)心的是所建模型到底能不能賺錢,能賺多少?而衡量交易模型賺賠的多少和快慢通常是用年化收益率表示。年化收益率僅是把不同時間周期段的收益率(如日收益率、周收益率、月收益率)換算成年收益率來計算的,是一種理論收益率,并不是真正的已取得的收益率。程序化交易中的年化收益率其計算公式為:年化收益率=有效收益率/(總交易的天數(shù)/365);有效收益率=凈利潤/最大使用資金。例如某交易模型在五個交易日內(nèi)三天賺兩天賠,一共取得的有效收益率是0.1%,則該模型的年化收益率是7.3%。該指標(biāo)主要是為建模者提供比較直觀的盈虧數(shù)據(jù),供投資者在將該模型收益與其他投資收益做比較時參考。 任何一個交易模型都不可能保證每次交易都是盈利的。出現(xiàn)虧損是正常的,但如果虧損幅度過大則會引發(fā)模型使用者的擔(dān)心。尤其是如果模型辛辛苦苦賺了許多天,一天就虧的回到使用前,那表明模型存在重大風(fēng)險隱患。于是使用“最大資產(chǎn)回撤”指標(biāo),來衡量模型在一段較長時段周期內(nèi)可能面臨的最大虧損。 最大資產(chǎn)回撤是指模型在選定的測試時間周期內(nèi),在任一歷史時點(diǎn)的資產(chǎn)最高值,與資產(chǎn)再創(chuàng)新高之前回調(diào)到的資產(chǎn)值最低點(diǎn)時的差值。最大回撤用來描述模型運(yùn)行可能出現(xiàn)的最糟糕的情況。它是衡量程序化交易模型性能的一個重要風(fēng)險指標(biāo)。 有兩種方式表示最大資產(chǎn)回撤。一種是采用最大資產(chǎn)回撤的絕對值來表示,即:最大資產(chǎn)回撤值=前期最高點(diǎn)-創(chuàng)新高前的最低點(diǎn);另一種是采用最大資產(chǎn)回撤率來表示,即:最大資產(chǎn)回撤率=(前期最高點(diǎn)-創(chuàng)新高前的最低點(diǎn))/前期最高點(diǎn)。 注意:上述兩個回撤指標(biāo)的區(qū)別在于:前者是按回撤金額的最大絕對值來計算,而后者是按回撤比例的最大值來計算的。比如說,一個原始金額為100萬元的賬戶,在剛開始交易的5次時間內(nèi)就發(fā)生了一個30萬元的回撤。而此賬戶在交易一段時間后,總金額增長到了200萬元,此時又發(fā)生了一個40萬元的回撤。如果以金額回撤來計算,是后者40萬元的回撤大。但是以比例來計算,則是前者30萬元的回撤大。 通常,衡量模型回撤風(fēng)險大小采用的都是按回撤金額的最大絕對值指標(biāo),能夠知道究竟最多會虧多少錢,對模型使用的風(fēng)險性有實(shí)實(shí)在在的認(rèn)知;如果采用回撤率指標(biāo)往往會使得模型使用風(fēng)險看上去沒那么嚴(yán)重。 最大資產(chǎn)回撤并不知道會什么時候發(fā)生。如果模型是先賺到錢然后資金才有回撤, 那大部分人還可以接受,但如果一開始模型就有30%的資金回撤,使用者能接受嗎? 收益風(fēng)險比 評價交易模型的獲利能力,并不是單純看收益率,而應(yīng)該看盈利與最大資金回撤兩者之比,即收益風(fēng)險比的大小。收益風(fēng)險比的含義是指為了獲取預(yù)期收益,投入的本金會冒多大的虧損風(fēng)險,即所獲取的潛在盈利與所承受的風(fēng)險額度之間的比值。衡量程序化交易模型的收益風(fēng)險比公式為:收益風(fēng)險比=年度收益/最大資產(chǎn)回撤。比值越高說明模型的盈利能力越強(qiáng),越值得采用。假設(shè)預(yù)期投資收益為3萬元,但投入的本金最大虧損額度可能會達(dá)到1萬元,則收益風(fēng)險比為3:1。 收益風(fēng)險比是測試程序化交易模型優(yōu)劣的最重要指標(biāo)。因?yàn)槊抗P投資最終都落實(shí)在兩個問題上:一是敢不敢投資(最多虧多少)?二是值不值得投資(至少能賺多少)?收益風(fēng)險比的意義,正是對以上兩個問題的客觀回答,也直接決定投資的結(jié)果。例如某程序化模型設(shè)計者在交易策略上面臨兩種選擇: 策略一:每次投資30萬元。平均每年交易100次,盈虧次數(shù)各50%,其中盈利交易每筆盈利1萬元,虧損交易每筆虧損0.3萬元,其間最大回撤為10萬元。 策略二:每次投資30萬元。平均每年交易100次,盈利次數(shù)40次,虧損次數(shù)60次,其中盈利交易每筆盈利1萬元,虧損交易每筆虧損0.25萬元,其間最大回撤為5萬元。 采用哪個策略建模更好呢?來看看兩種策略模型的收益風(fēng)險比。 策略一的年均收益為:50×1-50×0.3=35萬元,收益風(fēng)險比為35/10=3.5; 策略二的年均收益為:40×1-60×0.25=25萬元,收益風(fēng)險比為25/5=5。 在其他條件都不變的情況下,策略一冒著1單位的最大損失,可以收獲3.5單位的收益,而策略二冒著1單位的風(fēng)險,可以收獲5單位的收益。顯然,策略二比策略一優(yōu)越。這個例子也同時展示了勝率高的模型不一定是最好的。 但并不是說同樣的收益風(fēng)險比,模型的使用風(fēng)險是相同的。比如A模型當(dāng)年的收益率為40%,最大資金回撤5%,那么收益風(fēng)險比就是8;B模型當(dāng)年的收益為200%,最大資金回撤25%,那么收益風(fēng)險比也是8。兩種交易模型的盈利能力可以認(rèn)為是一樣優(yōu)秀的,但哪個模型的風(fēng)險性更大那?顯然是B模型。在相同收益風(fēng)險比條件下,如果要追求更高的收益,比如800%的收益率,那么可能發(fā)生的最大資金回撤也有可能100%。一旦發(fā)生,資金賠光,交易就沒有辦法繼續(xù)下去了。因此,只是追求模型的收益率而忽視模型的回撤風(fēng)險是極其冒險的激進(jìn)策略。所以說,盡管模型的收益風(fēng)險比相同,但交易結(jié)果還要取決不同的資金管理策略?! ?/font> 夏普比率 評估交易模型的優(yōu)劣應(yīng)該從收益期望和風(fēng)險兩方面綜合考慮。風(fēng)險調(diào)整后的收益率就是一個可以同時對收益與風(fēng)險加以考慮的綜合指標(biāo),以期能夠排除風(fēng)險因素對績效評估的不利影響。1966年,學(xué)者夏普在此基礎(chǔ)上提出了著名的夏普比率:S=(R-r)/σ;公式中R=投資的回報期望值(平均回報率);r=無風(fēng)險投資的回報率(可理解為同期銀行存款利率);σ=回報率的標(biāo)準(zhǔn)方差(衡量波動性的最常用統(tǒng)計指標(biāo))。 夏普公式的核心思想是:理性的投資者將選擇那些在給定的風(fēng)險水平下使期望回報最大化的投資組合,或是那些在給定期望回報率的水平上使風(fēng)險最小化的投資組合。解釋起來非常簡單,即投資時也要比較風(fēng)險,盡可能用科學(xué)的方法以冒小風(fēng)險來換大回報。投資者在建立有風(fēng)險的投資組合時,至少應(yīng)該要求投資回報達(dá)到無風(fēng)險投資回報的水平或者更高。 如果夏普比率為正值,說明在衡量期內(nèi)投資的平均凈值增長率超過了無風(fēng)險利率,在以同期銀行存款利率作為無風(fēng)險利率的情況下,說明投資收益比銀行存款利息要高。夏普比率越大,說明投資機(jī)會所獲得的超額風(fēng)險回報越高??傊钠毡嚷试礁咴胶?。 交易模型的夏普比率多高才算是比較滿意的模型呢?假設(shè)某交易模型5年的年平均回報率約為10%,波動性約為16%,無風(fēng)險利率約為3.5%,計算出的夏普比率=(10%-3.5%)/16%=0.41。意思就是:該模型的年均回報率要比無風(fēng)險利率高6.5%,但平均5年中也許有1年的回報率低于-6%(10%-16%)。對期貨公司的資管業(yè)務(wù)經(jīng)理來說,這樣的夏普比率就偏低了:假設(shè)資管業(yè)務(wù)的投資回報目標(biāo)是年回報率20%,就必需用2.5倍杠桿,也就是需要再借貸1.5倍自有資金。(回報期望=2.5×10% -1.5×3.5%≈20%),也就意味著平均5年中有1年的回報率將低于2.5×(10% - 16%)-1.5×3.5% =-20%。模型賠了超過20%,客戶大概就要跑光了。因此模型設(shè)計者常常想盡辦法改善模型策略,提高夏普比率。 采用夏普比率評價模型的不足之處在于僅僅考慮了收益的平均波動水平,而沒有考慮資金最大回撤情況。市場中真正的風(fēng)險來自于極端的損失。下面通過一個簡單例子加以說明。 假設(shè)模型A和模型B的每月收益情況如下: 設(shè)年化無風(fēng)險利率為6%,計算得到夏普比率和其他指標(biāo)如下: 如果僅僅比較夏普比率可以得知模型A要優(yōu)于模型B,但是模型B的最大的資金單月回撤僅為4%,累計回報率要高于模型A;而模型A的最大單月回撤達(dá)到10%;對于投資者而言,這是一個較大的單月回撤水平,投資風(fēng)險較大??梢?,僅僅比較夏普比率無法全面評價模型優(yōu)劣?! ?/font> 勝率與盈虧比 測評程序化交易模型優(yōu)劣的主要評估指標(biāo)還有兩個:勝率與盈虧比。 勝率是指在當(dāng)前的成本設(shè)置下,模型盈利交易次數(shù)占總交易次數(shù)的比例,即:勝率=盈利交易次數(shù)/總交易次數(shù)。 有部分投資者格外看重勝率,認(rèn)為越高越好,至少希望勝率在50%以上,即獲勝的概率超過一半,才算是好的模型,其實(shí)這是一個誤解。事實(shí)上有的優(yōu)秀交易模型勝率并不高,這就與另一個評價指標(biāo)盈虧比有關(guān)。 盈虧比=一段時間內(nèi)所有盈利交易的總盈利額/同時段所有虧損交易總的虧損額。顯然,盈虧比越高,交易模型獲得的單筆收益越能夠覆蓋其他的虧損交易,對勝率的要求就沒有那么高。反之,如果盈虧比很低,單筆虧損需要更多的盈利次數(shù)來覆蓋,則要求更高的勝率。盈虧比的另一種理解方式為承擔(dān)一元錢的風(fēng)險能夠賺取的盈利,基于這種理解方式,在不考慮交易成本的情況下,可以定義每一元錢的風(fēng)險所能獲得的期望收益為:Q=P-(1-P)/R。其中P為勝率,R為盈虧比。 假設(shè)盈虧比R為1,在上式中需要P>50%才能使得期望收益為正,也就是說對于一個盈虧比小于1的交易模型,勝率必須高于50%才有可能賺取正的期望收益,反之如果盈虧比較高,例如R≥3,則勝率只需高于25%就可以保證期望收益Q為正。 因此勝率只有和盈虧比結(jié)合來評估模型才有意義。設(shè)想一個模型,做十筆交易,盈利九筆,平均每筆盈利1萬元,而虧損的那一筆一下虧了10萬元,這個模型的勝率雖然達(dá)到了90%,卻還是虧損的模型,因?yàn)樗挠澅忍停涣硗庖粋€模型做十筆交易,盈利四筆,共盈利12萬元;虧損六筆,共虧損6萬元,這個模型的勝率雖然只有40%,但總盈虧比為2。因此這個模型的盈利能力還是不錯的。 值得注意的是,某些模型歷史測試中的勝率可能包含有一些“偽盈利”交易,也就是一些交易的盈利非常小,幾乎為0,在很低的手續(xù)費(fèi)與滑點(diǎn)設(shè)置下,它們是盈利交易,而在稍微嚴(yán)格一點(diǎn)的成本設(shè)置下就變成了虧損交易,很明顯追求這樣的勝率沒有什么意義。因此,單獨(dú)考察模型的勝率這個評估指標(biāo)意義不大。 除以上所論述的重要測評指標(biāo)外,還有一些測評交易模型性能的指標(biāo),諸如凈利潤、最大連續(xù)盈利次數(shù)和最大連續(xù)虧損次數(shù)、平均盈利周期和平均虧損周期,等等。 綜合上述測評體系,判斷一個合格交易模型的評估原則大致為:年化收益率至少應(yīng)大于0,越高越好; 最大資產(chǎn)回撤值當(dāng)然是越小越好,但回撤的最大極限定為多少取決于投資者對虧損幅度的心理承受能力,因人而異;收益風(fēng)險比也是越大越好,但提高的難度較大;夏普比率也是越大越好,但至少應(yīng)該大于0;至于勝率高當(dāng)然好,但關(guān)鍵是要和盈虧比指標(biāo)結(jié)合一起來評估,盈虧比高的模型勝率低一些也無所謂,所以勝率并不是關(guān)鍵性指標(biāo)。再權(quán)衡其他測評指標(biāo),最終就能夠獲得初步滿意的程序化交易模型。
|
|
來自: 遙遠(yuǎn)的雷音 > 《程序化》