官术网_书友最值得收藏!

1.3 量化交易需要哪些準(zhǔn)備工作

完整的量化交易生命周期,不僅僅是交易策略本身,它至少由5個環(huán)節(jié)構(gòu)成,包括策略構(gòu)思、建立模型、回測調(diào)優(yōu)、仿真交易、實(shí)盤交易,如圖1.4所示。

圖1.4 量化交易生命周期

1.3.1 安裝SDK

在進(jìn)行策略構(gòu)思前,首先安裝發(fā)明者量化提供的免費(fèi)SDK,它是一套基于Python的量化交易回測框架,由發(fā)明者量化發(fā)起并貢獻(xiàn)主要代碼,內(nèi)置近百個技術(shù)指標(biāo)及相應(yīng)的源碼,可以用少量代碼構(gòu)建各種交易策略,并且提供歷史數(shù)據(jù)回測功能。在命令行中輸入安裝SDK的命令,如圖1.5所示。

圖1.5 在命令行中輸入安裝SDK的命令

注意:在安裝SDK前,需要先在計算機(jī)上安裝Python 3。此外,在Mac操作系統(tǒng)中安裝SDK時,如果有安全限制,則需要在pip命令前添加sudo命令,在執(zhí)行安裝命令前,會要求輸入系統(tǒng)密碼。如果有需要,則可以手動安裝與金融量化交易有關(guān)的第三方庫,如talib、numpy、pandas等。

在SDK安裝完成后,在代碼的第1行輸入“from fmz import*”,即可使用SDK。在下面的代碼中,首先設(shè)置回測配置(包括數(shù)據(jù)起止時間、數(shù)據(jù)周期、回測品種等),再導(dǎo)入SDK,接著使用VCtx()函數(shù)對task對象進(jìn)行初始化,然后調(diào)用SDK中的GetAccount()函數(shù)和GetTicker()函數(shù)分別獲取賬戶信息和Tick數(shù)據(jù),最后調(diào)用初始化后的task對象獲取回測結(jié)果。

上述代碼的運(yùn)行結(jié)果如圖1.6所示。

圖1.6 運(yùn)行結(jié)果

免費(fèi)開源的SDK不僅可以輸出最終的回測結(jié)果,還可以以圖表的形式輸出各種績效曲線,包括賬戶權(quán)益、周期盈虧、資金占比。例如,雙均線策略使用SDK中的Show()函數(shù)繪制回測圖表,代碼如下:

上述代碼是一個完整的雙均線交易策略。在使用發(fā)明者量化SDK運(yùn)行上述代碼后,會顯示Python本地回測圖表,包括賬戶權(quán)益、周期盈虧、資金占比等的回測績效曲線,如圖1.7所示。

發(fā)明者量化SDK可以與發(fā)明者量化交易平臺配合使用,從而提供更加完善的量化交易功能及開放的量化交易社區(qū)。

圖1.7 Python本地回測圖表

1.3.2 策略構(gòu)思

進(jìn)行量化交易必須先回到交易市場,要在市場中多觀察價格,理解市場波動的規(guī)律,并且嘗試推斷每一個交易邏輯,從而總結(jié)出交易策略。這里沒有捷徑,閱讀經(jīng)典的投資書籍或許有幫助,或者不斷地堅持做交易,在失敗中總結(jié)經(jīng)驗(yàn)。

對初學(xué)者來說,開發(fā)交易策略最好的方式是模仿。直接利用現(xiàn)成的技術(shù)分析指標(biāo)構(gòu)建策略邏輯,寫入交易規(guī)則,可以得到一個簡單的交易策略。例如,單均線的策略邏輯為,如果價格高于最近10天的平均價格,就開倉買入;如果價格低于最近10天的平均價格,就開倉賣出。

隨著市場經(jīng)驗(yàn)的積累,在形成自己的交易方式后,策略邏輯的選擇會越來越多樣化,會進(jìn)階到更加系統(tǒng)的量化交易。無論是在股票市場上,還是在期貨市場上,做一個有量化思維的交易者都是一件值得慶幸的事。

1.3.3 建立模型

交易者需要掌握一個量化交易工具,用于編寫交易策略,實(shí)現(xiàn)其交易想法。如果你想成為一名高端的量化交易者,就需要學(xué)會一門計算機(jī)語言,這里推薦使用Python編程語言,因?yàn)樗强茖W(xué)計算的權(quán)威語言,并且可以提供各種開源的分析包、文件處理工具、網(wǎng)絡(luò)、數(shù)據(jù)庫等。Python策略默認(rèn)代碼如下:

1.3.4 回測調(diào)優(yōu)

在編寫完策略后,對策略進(jìn)行回測,對參數(shù)進(jìn)行篩選和優(yōu)化??梢岳貌煌膮?shù)對策略進(jìn)行回測,觀察該策略的夏普比率、最大回撤率、年化收益率等。通過對策略的不斷調(diào)試和修改,最終得到一個完善的量化交易策略。例如,可以將2010—2015年的歷史數(shù)據(jù)作為樣本內(nèi)數(shù)據(jù),將2016—2020年的歷史數(shù)據(jù)作為樣本外數(shù)據(jù)。先用樣本內(nèi)數(shù)據(jù)優(yōu)化出幾組表現(xiàn)好的參數(shù),再用這些參數(shù)對樣本外數(shù)據(jù)進(jìn)行回測。

在一般情況下,樣本外數(shù)據(jù)的回測結(jié)果沒有樣本內(nèi)數(shù)據(jù)的回測結(jié)果好,但如果樣本外數(shù)據(jù)與樣本內(nèi)數(shù)據(jù)的結(jié)果大相徑庭,那么這個策略可能是無效的,需要觀察分析,判斷策略失效的原因。

如果發(fā)現(xiàn)策略失效是因?yàn)樵跇颖就鈹?shù)據(jù)中出現(xiàn)極端行情導(dǎo)致的大幅虧損,那么可以增加一個固定止損條件,用于規(guī)避這種風(fēng)險;如果發(fā)現(xiàn)策略失效是因?yàn)榻灰状螖?shù)過多,那么可以將交易邏輯收緊,降低交易頻率。

如果一開始交易邏輯就是錯誤的,那么再怎么修改也很難得到一個賺錢的策略,這時需要重新審視自己的策略思路。此外,在參數(shù)優(yōu)化中,可用的參數(shù)組越多越好,說明策略的適用性廣泛。

策略的核心參數(shù)越少越好,如果參數(shù)過多,則容易造成數(shù)據(jù)過擬合。在回測時,對于交易次數(shù)過少的策略,其回測結(jié)果可能存在幸存者偏差。如果回測結(jié)果是一個超級賺錢的資金曲線,那么通常是策略邏輯寫錯了。

注意:本地SDK回測不支持回測調(diào)優(yōu),如果需要回測調(diào)優(yōu)功能,則可以在發(fā)明者量化終端進(jìn)行線上回測。

1.3.5 仿真交易

當(dāng)交易邏輯正確,樣本內(nèi)、外數(shù)據(jù)回測都賺錢時,先不要急著在真實(shí)賬戶上交易,尤其對初學(xué)者來說,一定要先用仿真賬戶運(yùn)行至少3個月,如果是中低頻隔夜策略,則需要更長的仿真交易時間。在未來一段完全未知的仿真行情中,觀察策略在仿真交易中的表現(xiàn),仔細(xì)核對回測信號與仿真交易信號是否吻合,下單時的價格與成交時的價格是否有偏差,如果表現(xiàn)與預(yù)期相符,那么說明策略有效。

1.3.6 實(shí)盤交易

在經(jīng)過一段時間的仿真交易檢驗(yàn)后,就可以將策略放入實(shí)戰(zhàn)中進(jìn)行交易了。不過在量化交易過程中也要保持警惕,防范極端行情。在實(shí)盤交易中,策略的期望一般要打折扣,很難達(dá)到回測時的水平。

主站蜘蛛池模板: 九龙坡区| 上犹县| 和林格尔县| 嘉义市| 陇川县| 逊克县| 鹤壁市| 兴隆县| 邯郸市| 梅河口市| 丰城市| 扶绥县| 烟台市| 曲周县| 清镇市| 诸暨市| 新乐市| 阿勒泰市| 泽普县| 蒙阴县| 宾阳县| 兴宁市| 金乡县| 丰顺县| 石家庄市| 萨嘎县| 抚顺县| 镇雄县| 宿松县| 黑水县| 大连市| 闽清县| 阳西县| 曲周县| 察哈| 太和县| 江永县| 涞源县| 株洲县| 达州市| 台南县|