這篇文章主要介紹“Python量化回測常見陷阱有哪些”,在日常操作中,相信很多人在Python量化回測常見陷阱有哪些問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”Python量化回測常見陷阱有哪些”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!
網(wǎng)站設計制作過程拒絕使用模板建站;使用PHP+MYSQL原生開發(fā)可交付網(wǎng)站源代碼;符合網(wǎng)站優(yōu)化排名的后臺管理系統(tǒng);成都網(wǎng)站建設、成都做網(wǎng)站收費合理;免費進行網(wǎng)站備案等企業(yè)網(wǎng)站建設一條龍服務.我們是一家持續(xù)穩(wěn)定運營了十多年的創(chuàng)新互聯(lián)公司網(wǎng)站建設公司。很多量化交易的朋友在指定策略時往往容易犯下這幾種類型的錯誤:前視偏差、不設置滑點、無手續(xù)費、過度優(yōu)化等。這些錯誤可以使你在回測階段把不盈利策略變得盈利,但是在真正的交易中卻會造成災難性的后果。
首先介紹下前視偏差。前視偏差是指在策略回測階段采取了未來的信息來決定之前的交易,而這些信息在實盤操作中是無法獲知的。這里我們提供幾個典型的案例來介紹下:
買入策略1:“當天的收盤價突破前一天的最高價,則利用當天開盤價買入股票”,很明顯,在開盤價成交幾乎是不可能的事情了。
前視偏差是我們要極力避免的錯誤。如何避免前視偏差?可以使用“滯后”的歷史數(shù)據(jù)來計算策略信號。滯后的數(shù)據(jù)意味著,在涉及到移動平均值、最高價、最低價、成交量等指標時,只使用“上一”交易日的收盤數(shù)據(jù)。比如:
shift(1)是在index不變的情況下對序列的值向后移動一個單位。目的是獲取昨天為止的最高/最低價格。這樣就能使用“滯后”的歷史數(shù)據(jù)來計算策略信號。
如果一個交易策略要求你利用信號觸發(fā)時的價格進行交易,那么這個交易策略就存在偷價的情況。
很多人會低估偷價的危害性,事實上,固定點數(shù)的偷價相當于在原本的資金曲線上疊加了一條斜率為正的直線(在每次交易都是固定手數(shù)的情況下)。假設一年250個交易日,每個交易日均對一只長期保持10元的股票執(zhí)行一次100股的買賣,每次買賣都偷價1個tick(tick設置為1個點,即0.1元),那么全年下來可以多獲利5000.1100 = 5000元,這甚至超越了你的本金(10*100=1000)。
然而,現(xiàn)實的情況是不但無法低于一個tick的價格成交,更多的反而是高于一個甚至多個tick的價格成交。原因很簡單,大多數(shù)趨勢交易者都會在某個關鍵點位建倉,競爭導致價格在這些關鍵位置形成劇烈波動,并且這種波動通常是對程序化交易不利的波動。所以在構(gòu)建一個頻率較高的交易系統(tǒng)的時候,更多是要考慮和解決滑點問題。
手續(xù)費相當于在原本的資金曲線上疊加了一條斜率為負的直線(在每次交易都是固定手數(shù)的情況下)。策略進行測試時,如果不計入手續(xù)費,資金曲線可能會產(chǎn)生巨大差異,甚至不計手續(xù)費時盈利的策略,在計入手續(xù)費后可能產(chǎn)生虧損。
當前股票交易費用由三部分組成:傭金、印花稅、過戶費(僅上海股票收?。?/p>
印花稅:成交金額的1‰ 。
過戶費:這是指股票成交后,更換戶名所需支付的費用。此費用按成交金額的0.02‰收取。
交易傭金:最高收費為3‰,最低收費5元。
假設你買入10000股,每股票價格為10元,以此為例,對其買入成本計算:
買入股票所用金額:10元/股×10000股=100000元;
過戶費:0.02‰×100000=2元;
交易傭金:100000×3‰=300元(按最高標準計算,正常情況下都小于這個值);
買入總成本:100000元+300元+2元=100302元(買入10000股,每股10元,所需總資金)
若以10.08每股賣出價格計算:
股票金額:10.08元/股×10000股=100800元;
印花稅:100800元×1‰=100.8元;
過戶費:0.002%×100800元≈2元;
交易傭金:100800元×3‰=302.4元;
賣出后收入:100800元-100.8元-2元-302.4元=100394.8元;
滑點是指觸發(fā)指令的價格和最終成交價格之間的差異,它是難免會發(fā)生的情況,通常滑點產(chǎn)生的原因有以下兩類:
1.行情波動劇烈、市場容量不夠等情況導致的
2.網(wǎng)絡延遲、交易平臺不穩(wěn)定等情況導致的
滑點是一個合格的交易策略必須充分考慮的因素。如果在一個交易策略中,將滑點數(shù)設置為0,即采用現(xiàn)價指令買賣證券其資金曲線就會優(yōu)于同一個滑點數(shù)不為0的策略。通常我們要在最極端的條件下去構(gòu)建和測試系統(tǒng),一般系統(tǒng)都是高于2個tick的滑點來構(gòu)建的。
接下來談談過度優(yōu)化。過度優(yōu)化是指為了遷就歷史數(shù)據(jù)的噪音而將一個策略的參數(shù)或者規(guī)則反復優(yōu)化到最佳的情況。
假如要把某個策略的資金曲線做的非常出色,我們可以這么優(yōu)化:針對某段特定的行情進行參數(shù)優(yōu)化,之后將分段行情對應的資金曲線拼接起來,得到一個表現(xiàn)更優(yōu)秀的資金曲線。也可以指定過去某幾個表現(xiàn)較差的交易日不進行交易。上述經(jīng)過加工的回測一定表現(xiàn)優(yōu)異,單純?yōu)榱俗非筚Y金曲線,這類策略模型僅僅適用于過去發(fā)生但未來不會再重現(xiàn)的歷史偶然事件,并不考慮是否適用于未來的行情。
避免過度優(yōu)化的有效辦法有以下幾個:
一般而言,策略的規(guī)則越多,模型的參數(shù)越多,就越可能出現(xiàn)過度擬合問題。因此采用的參數(shù)越少,可以優(yōu)化的規(guī)則越少,自然過度優(yōu)化的情況就能夠得到很好的避免,并且,越少參數(shù)構(gòu)建的策略,往往越穩(wěn)健,無論其時效性或魯棒性均能超越眾多復雜的策略。
合理選擇樣本。有些策略覆蓋的股票品種太少,時間周期太短,不能充分展現(xiàn)策略效果。這些策略只能用于個別品種上,或者在更長時間周期上的資金曲線可能表現(xiàn)的并沒有那么好。有些策略雖然覆蓋了較長的時間段,或較多的品種或市場,但僅僅覆蓋了一種類型的行情(例如一輪較長時間的大牛市)。這些策略在遇到截然不同的市場情況時,表現(xiàn)可能會大相徑庭。
進行樣本外測試。構(gòu)建策略模型時,將歷史數(shù)據(jù)根據(jù)時間先后分為兩段。參數(shù)優(yōu)化和定性選擇使用前一段數(shù)據(jù)(訓練集),策略模型的測試使用后一段數(shù)據(jù)(測試集)。兩段數(shù)據(jù)的大小要大致相等,若數(shù)據(jù)量不夠,則至少用三分之一的數(shù)據(jù)做測試。訓練集的最小含量由樣本含量經(jīng)驗規(guī)則確定。
到此,關于“Python量化回測常見陷阱有哪些”的學習就結(jié)束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續(xù)學習更多相關知識,請繼續(xù)關注創(chuàng)新互聯(lián)-成都網(wǎng)站建設公司網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬嵱玫奈恼拢?/p>
當前文章:Python量化回測常見陷阱有哪些-創(chuàng)新互聯(lián)
地址分享:http://jinyejixie.com/article30/isjso.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站建設、面包屑導航、商城網(wǎng)站、App設計、定制開發(fā)、建站公司
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容