黃萬銘
(綿陽中學(xué)實(shí)驗(yàn)學(xué)校,綿陽621900)
量化交易是指投資者利用計(jì)算機(jī)技術(shù)、金融工程建模等手段,將金融操作的策略加以定義和描述,并且嚴(yán)格按照所設(shè)定的規(guī)則去執(zhí)行交易策略(買賣、價(jià)格、數(shù)量等)的自動(dòng)交易方式,以協(xié)助投資決策。量化平臺(tái)基本采用“初始化函數(shù)→從平臺(tái)數(shù)據(jù)庫取出數(shù)據(jù)→每個(gè)周期執(zhí)行調(diào)倉函數(shù)→回測(cè)完成→計(jì)算統(tǒng)計(jì)量→繪制曲線”的邏輯過程。
目前市面上比較流行的量化平臺(tái)有優(yōu)礦、聚寬和米筐等;米筐支持Python3 和Java,而優(yōu)礦和聚寬使用Python2;米筐和聚寬支持股票和金融期貨數(shù)據(jù),優(yōu)礦平臺(tái)提供股票、基金、衍生品等數(shù)據(jù)。
本策略設(shè)計(jì)采用百度公司投資的量化平臺(tái)——聚寬(JoinQuant),語言編程Python,設(shè)定一億元交易規(guī)模,最大持倉數(shù)100 只股票,模擬周期為2005~2018 年的中國股票市場(chǎng)。
擬以多頭趨勢(shì)回踩策略為主決策依據(jù),實(shí)現(xiàn)一個(gè)全自動(dòng)化量化交易系統(tǒng),并進(jìn)行關(guān)鍵參數(shù)優(yōu)化;其思路是根據(jù)若干條均線呈現(xiàn)出的形態(tài),判斷一支股票是否處于多頭強(qiáng)勢(shì)狀態(tài),并抓住回調(diào)的時(shí)機(jī)低位買入;再進(jìn)一步分析市場(chǎng)狀態(tài)、均線周期、買入均線和止損觸發(fā)條件等關(guān)鍵參數(shù)對(duì)量化策略的貢獻(xiàn)效果。
系統(tǒng)主要功能框架如圖1 所示,主要包含策略模型、牛熊判斷、參數(shù)設(shè)置、買入判斷、賣出判斷、計(jì)算統(tǒng)計(jì)、繪制曲線和平臺(tái)數(shù)據(jù)庫等8 個(gè)部分組成。
系統(tǒng)主要功能框架、流程圖和參數(shù)結(jié)構(gòu)如圖1所示。
圖1 功能框架設(shè)計(jì)
圖2 系統(tǒng)主要流程圖
圖3 主要參數(shù)結(jié)構(gòu)設(shè)計(jì)
(1)選定股票池,并選定一系列參數(shù);
(2)一組均線天數(shù)[N1,N2,N3,…,Nk]:總數(shù)量k 限制,按照從小到大排列。當(dāng)相應(yīng)天數(shù)的移動(dòng)均線是從大到小排列時(shí),為多頭排列格局;
(3)趨勢(shì)天數(shù)T:當(dāng)上面指定的移動(dòng)均線在T 天內(nèi)都處于多頭排列時(shí),判斷價(jià)格處于多頭趨勢(shì);
(4)回撤均線M:當(dāng)前一天的最收盤價(jià)低于M 日均線時(shí)時(shí)判斷為回撤;
(5)持有股票上限num_stocks:同時(shí)最多持倉num_stocks 支股票。
(6)止損比例D 和止盈比例U:當(dāng)股票價(jià)格高出買入價(jià)的U 倍,或低于買入價(jià)的D 倍時(shí),賣出股票。
部分程序核心代碼如下:for security in in_trend_stocks:
#獲取歷史收盤價(jià)
past_prices=attribute_history(security,g.test_ma_length,'1d','close',skip_paused=True)
#計(jì)算均線
test_ma=sum(past_prices).iloc[0]/g.test_ma_length
#獲取站住均線數(shù)據(jù)
past_prices_2=attribute_history(security,g.stand_ma_length,'1d','close',skip_paused=True)
#計(jì)算均線
stand_ma=sum(past_prices_2).iloc[0]/g.stand_ma_length
#計(jì)算bias 基準(zhǔn)線
past_prices_3=attribute_history(security,g.bias_ma_length,'1d','close',skip_paused=True)
bias_ma=sum(past_prices_3).iloc[0]/g.bias_ma_length
#獲取昨日信息
previous_history=attribute_history(security,1,'1d',['close','low'])
#昨日收盤價(jià)
current_price=previous_history['close'].iloc[0]
#昨日最低價(jià)
previous_low=previous_history['low'].iloc[0]
經(jīng)過不同單項(xiàng)的海量測(cè)試,以及分析前10 大持倉、前5 大回撤區(qū)間、行業(yè)配比、Sharpe、持倉比例分析和風(fēng)險(xiǎn)控制等,發(fā)現(xiàn)買入均線、止損條件和均線周期影響作用較大;最佳參數(shù)設(shè)定:回撤線20 日線;止損點(diǎn)設(shè)定0.5%;止盈點(diǎn)按回撤盈利的5%;另外,因牛熊市不同市場(chǎng)狀態(tài)差異較大,在熊市以采用BIAS 乖離率策略輔助為佳。部分策略指標(biāo)分析如圖4 所示。
圖4 策略表現(xiàn)指標(biāo)-持倉結(jié)構(gòu)分析
圖5 策略表現(xiàn)指標(biāo)-風(fēng)險(xiǎn)分析
經(jīng)過2005 年~2018 年多輪牛熊轉(zhuǎn)換交替的回撤模擬,總體收益率達(dá)到1652%,平均年化收益率25%,最大回撤僅為29%,相較指數(shù)有穩(wěn)定盈利。如圖6 所示。
圖6 優(yōu)化后的策略效果-總體概覽
圖7 優(yōu)化后的策略效果-收益分解
本自動(dòng)交易系統(tǒng)基于Python 語言在聚寬量化平臺(tái)上開發(fā),經(jīng)過對(duì)市場(chǎng)狀態(tài)、均線周期、止損條件和選股買入均線等關(guān)鍵參數(shù)的優(yōu)化,并進(jìn)一步通過在牛熊市采用差異化交易策略,較單獨(dú)采用多頭策略模式,獲得了更佳的市場(chǎng)收益。