Nobyembre 1, 2026 · pananaliksik

Paano mo i-warmup ang backtest nang hindi binibilang ang lookback bilang performance?

Paano mo i-warmup ang backtest nang hindi binibilang ang lookback bilang performance?

Mukhang walang masama ang 20-araw na Donchian sa isang spec. Sinusulat ng agent ang 20-bar rolling max, nagsisimula ang backtest sa row 1 ng parquet file, at sa unang 2 linggo ang "20-araw na high" ay running max lang ng mga bars na meron. Sa ika-4 na araw, 4-araw na high na ito. Ang strategy na akala mong tine-test mo ay hindi iyong gumawa ng unang 12 fills.

May notebook ako sa daily bars ng ETHUSDT kung saan 1.4 ang full-sample Sharpe. Putulin ang unang 20 session at bumababa ito sa 0.6. Panatilihin ang 20 iyon at alisin ang natitira ng unang taon, at 3.1 ang ilalabas. Walang nagtulo ng bukas. Ginamit ng strategy ang nakaraan, hindi lang sapat, at itinuring ng report ang mga hindi pa tapos na trade na ebidensya.

1.4full-sample Sharpe, kasama ang hindi pa tapos na window
0.6parehong code pagkatapos ng 20 tapos na session
3.1Sharpe kung ang burn-in na trade lang ang pananatilihin

Hayaan mong mag-trade ang window habang pinupuno pa ito

Ang karaniwang pinsala ay min_periods=1. Magko-compute ang Pandas ng rolling mean sa iisang bar kung papayagan mo. Palagi itong ginagawa ng mga agent, dahil parang bug ang NaN sa tuktok ng frame, at ang pagpuno nito ay nagpapaberde sa unit test.

Ang 20-araw na realized-vol target na may 2 obserbasyon ng return ay pagsabog ng size. Ang variance ng 2 numero ay paghagis ng barya, i-invert mo, at ang unang posisyon ay ilang beses ng inilaan na risk. Ang z-score laban sa near-zero na standard deviation ay gumagawa ng parehong trik na may sign: mukhang may matalas na entry ang strategy na hindi na muling lumilitaw kapag tapat na ang window.

Mas malala ang breakout, dahil mukha silang totoong panuntunan. Ang 20-bar channel sa bar 6 ay 6-bar channel. Makakakuha ka ng kumpol ng trade mismo sa simula, madalas sa tahimik na panahon na hindi sana na-trigger ng tapos na indicator. Bahagyang dumidrift ang tahimik na merkado. Nagfa-fire ang masikip na channel. Nakakakuha ng head start ang equity curve na hindi inuulit ng susunod na taon.

Ibang kasinungalingan ang naiimbento ng zero-fill at forward-fill. Ang RSI na 0 ay nababasa bilang oversold. Ang nawawalang ATR na 0 ay sumasabog sa unit size, at masunuring bumibili ang backtest ng isang bodega. Mas gusto ko pang pumatay ng order ang NaN kaysa mag-imbento ang 0 ng isa.

Nahuhuli ko pa rin ang sarili kong mag-plot mula sa row 0 dahil mukhang hindi tapos ang blangkong buwan sa kaliwa ng chart. Ang blangkong buwan ang tapat na bahagi.

I-crop ang equity curve, panatilihin ang posisyon

Nakakaligtas ito sa code review. Kino-compute mo nang tama ang 20-araw na feature, tinatanggal ang unang 20 row mula sa naka-plot na curve, at pina-publish mula Enero 21. Ang posisyon sa Enero 21 ay binuksan noong Enero 14. Ang high-water ng trailing stop, ang pyramid count, ang cash pagkatapos ng mga burn na iyon: lahat iyon ay lumakad papasok sa "malinis" na sample.

Ang pinsala ay isang paper strategy na hindi masisimulan sa petsa sa write-up. Mag-restart mula sa flat sa naiulat na simula at hindi magkakasundo ang mga order ng unang linggo. Minsan nasa trade na ang backtest na walang dahilan ang paper system para pasukin. Minsan pumapasok ang paper system dahil malamig ang lookback nito, at hindi pumasok ang backtest dahil kinuha na ng nakatagong buwan nito ang breakout. 2 opening book, 1 nai-publish na petsa ng simula.

Tahimik itong ginagawa ng walk-forward fold. Bawat test window ay may lookback tail na hindi mo pina-plot. Laktawan ang pag-simulate ng tail na iyon at ang unang test trade ay hindi pa tapos na window trade ulit. I-simulate ito at iulat lang ang mga araw ng test, at ang posisyon ng araw ng test ay nakakondisyon sa fills na hindi mo ipinapakita. Puwedeng lehitimong desisyon sa pananaliksik ang pangalawang bersyon. Ang pagtawag sa unang umaga ng fold na cold start, habang live na ang trailing stop mula sa tail, ay kung paano nakakakuha ang 2 mananaliksik ng 2 Sharpe mula sa 1 config.

Kung nagbabago ang P&L kapag nag-restart mula sa flat sa nai-publish na petsa ng simula, nasa track record ang warmup. Puwedeng nariyan ang lookback data. Hindi puwedeng nariyan ang lookback trade.

Mag-warmup sa araw ng kalendaryo kapag hindi araw ang feature

"Bigyan mo ng 30 araw" ay nag-iiwan sa feature na kulang sa detalye. Ang 30 araw sa kalendaryo sa 5-minutong Donchian ay libu-libong bars lampas sa 20-period lookback. Ang 30 araw sa daily feature na kailangan ng 20 session ay maaaring mataba o payat, depende sa weekend at mga butas.

Ang funding-rate z-score sa isa sa aming perp venue ay nakakuha ng 30-araw na warmup dahil 30 periods ang sinabi ng spec at may nagsalin ng periods sa kalendaryo. Doon, bawat 8 oras nagpi-print ang funding. Ang 30 araw ay humigit-kumulang 90 settlement. Ang 30 periods ay 10 araw. Ang extra na 2 buwan ng burn-in ay nagsama pala ng isang depeg week. Nang tanggalin ito, naging mas kalmado ang itsura ng live window kaysa sa totoong history ng strategy. Sinisi ng mga tao ang start-date sensitivity. Kinain ng warmup ang regime.

At pinapabago ng crypto versus equity ang kahulugan ng parehong numero nang walang may nag-edit ng parameter. Ang 20 "araw" ng ETH ay kasama ang mga Sabado. Ang 20 equity session ay halos isang buwan sa kalendaryo. Kopyahin ang 20-araw na lookback mula sa notebook ng stocks papunta sa hourly perpetual candles at magkakaroon ka ng 20-oras na channel na may 20-araw na pangalan. Ang unang valid bar ay maaaring 20 oras na ang nakalipas, o 20 araw na kung magre-resample ang ibang function sa huli, at nakita ko na ang dalawa sa iisang agent diff.

I-pin ang unang tradable timestamp

Ang warmup ay requirement sa data, hindi bonus sample. Bawat feature ay nagsasaad ng bilang ng tapos na obserbasyon na kailangan nito, sa units kung saan ito kinokompyut. Ang unang tradable timestamp ay ang unang bar kung saan totoo ang lahat ng iyon at pinahihintulutan sana ang flat account na magpadala ng order.

FeatureAng karaniwang sinasabi ng specAng talagang kailangang umiralTahimik na kapalit
20-araw na Donchian20 daily highs20 natapos na sessionRunning max na may min_periods=1
30-araw na realized vol30-araw na window30 close-to-close return2-araw na variance, inverted papuntang size
20-print funding z-score20 araw20 funding settlement20 araw sa kalendaryo (~90 print), o 20 bars ng maling timeframe
14-period RSI sa 5m14 periods14 tapos na 5-minutong bar14 araw, o 14 bars na may gaps na naka-forward-fill

Ang P&L bago ang timestamp na iyon ay mananatiling labas sa track record. Ang state bago ang timestamp na iyon ay maaaring kailanganin pa ring i-simulate, kaya totoo ang trailing stop o cooldown kapag tinamaan ng orasan ang unang tradable bar, pero hindi pumapasok ang fills na iyon sa Sharpe, sa trade count, o sa capacity math. Pagkatapos, patakbuhin ang pangit na check: mag-restart mula sa flat sa timestamp na iyon, na available ang lookback bilang data lang. Kung magbabago ang mga order, nagsa-ship ka ng nakatagong trade.

Nagsisimula ang paper trading sa parehong kontrata. Gayundin ang bawat walk-forward test window. Kung mukhang may kulang na buwan ang chart, hayaan mong kulang.

backtestinginhenyeriya ng datawalk-forwardAI agentspaper trading
← Lahat ng post