Oktubre 6, 2026 · pananaliksik

Bakit nakipagkalakalan ang backtest ko sa presyong hindi kailanman ipinakita ng merkado?

Bakit nakipagkalakalan ang backtest ko sa presyong hindi kailanman ipinakita ng merkado?

Maaaring mag-ulat ang isang backtest ng fill sa presyong hindi kailanman ipinakita ng merkado. Kadalasan, naghihinuha ang simulator ng mukhang makatotohanang execution mula sa kulang na datos: high at low ng bar, midpoint, o limit price na nagalaw ng isang trade. Dahil dito, mukhang eksakto ang trade log habang hindi ipinapakita kung ano talaga ang inialok ng merkado.

Magsimula sa pagtatanong kung aling presyo ang maaaring nakaugnayan ng order mo. Sinasagot ng last-trade bar kung anong mga presyo ang pinag-trade-an sa loob ng isang pagitan. Hindi nito sinasabi kung ano ang bid at ask nang dumating ang order mo, gaano karami ang available doon, o kung makakarating ang order mo sa unahan ng pila.

Bakit ipinapakita ng backtest ko ang fill sa presyong wala sa merkado?

Una, linawin kung ano ang ibig sabihin ng “wala sa merkado.” Malinaw na error sa accounting o timing ang buy fill na mas mababa sa low ng bar o sell fill na mas mataas sa high nito. Pero maaari pa ring kathang-isip ang fill na nasa loob ng high-low range: maaaring naganap ang trade sa presyong iyon bago pa umiral ang order, sa kabilang panig ng spread, o sa daming napakaliit para mapunan ang order mo.

Isaalang-alang ang isang 1-minute bar na may open na 100.00, low na 99.80 at close na 100.10. Nakikita ng strategy mo ang kumpletong bar, nagsusumite ng buy, at pinupunan ito ng simulator sa 99.80. Maaaring naganap ang low na iyon malapit sa simula ng minuto, limampung segundo bago ang signal. Walang patunay sa bar na available pa ang 99.80 pagkatapos ng desisyon.

Datos na hawak moAno ang pinatutunayan nitoAno ang hindi nito napapatunayan
OHLCV barNaobserbahang saklaw ng presyo ng trade at volume sa isang pagitanPagkakasunod-sunod ng presyo, bid at ask, o availability pagdating ng order
Trade printsMga iniulat na execution na may timestamp at presyoNakahintay na liquidity o puwesto mo sa pila
Top-of-book quotesPinakamagandang ipinakitang bid at ask sa mga oras na na-sampleLalim lampas sa pinakamagandang antas o kung nanatili ang quote sa pagitan ng mga sample
Mga event sa order bookMga pagbabago sa ipinakitang depth at mga event sa pila, depende sa saklaw ng feedNakatagong liquidity, access sa venue, o garantisadong prayoridad

Isa pang karaniwang sanhi ang pagkalito sa midpoint at mga presyong maaaring i-execute. Kung 99.99 ang bid at 100.01 ang ask, mukhang maayos sa ulat ang buy sa midpoint na 100.00. Karaniwang babayaran ng marketable buy ang ask, dagdag pa ang anumang epekto ng laki nito sa merkado. Kapag tinawag na fill ang midpoint, palihim na inaalis ang kalahati ng spread.

Mapupunan ba ang limit order dahil lang umabot ang merkado sa presyo nito?

Palatandaan ang pag-abot sa presyo na may naitalang trade sa limit price. Hindi ito patunay na na-execute ang nakapilang order mo. Kung may ibang order sa unahan mo, maaaring kulang ang volume ng trade sa presyong iyon para umabot sa puwesto mo sa pila. Maaari ring nanggaling ang print sa ibang venue habang nakapila ang order mo sa iba.

Ipagpalagay na 50.00 ang buy limit mo, at nag-trade ang merkado ng 200 share sa presyong iyon matapos mong ilagay ang order. Pinupunan ng touch-based simulator ang lahat ng 500 share. Itinatanong ng mas maingat na modelo kung gaano karami ang na-trade sa 50.00 o mas mababa pagkatapos dumating ang order, at isinasaalang-alang ang tinatayang daming nasa unahan sa pila. Kung walang datos ng order-level book, palagay lang ang puwestong iyon sa pila. Dapat itong makita sa mga resulta, hindi palihim na ituring na katiyakan.

Para sa maliit na research system, mas gusto kong tahasang ilahad ang palagay na iyon at subukan ang iba’t ibang saklaw kaysa magkunwaring ipinapakita ng candle data ang prayoridad sa pila. Nakadepende ang tamang saklaw sa venue, laki ng order, at dalas ng pag-trade ng strategy. Magkaibang problema sa execution ang tahimik na stock sa pagbubukas ng merkado at ang manipis ang liquidity na crypto contract sa 03:00 UTC.

Paano ako pipili ng fill model para sa bar data?

Itugma ang modelo sa datos at sa sinasabi ng strategy na kaya nitong gawin. Maaari pa ring maging kapaki-pakinabang ang bar-based backtest para sa mababagal na strategy, pero dapat igalang ng mga fill nito ang aktuwal na ipinapakita ng mga bar.

  1. Itakda ang oras ng desisyon at pagdating ng order. Kung ginagamit ng signal ang close ng bar, magsumite pagkatapos ng close na iyon. Imodelo ang execution batay sa susunod na available na interval o quote, hindi sa naunang low ng kumpletong bar.
  2. Gamitin ang tamang panig ng spread. Para sa marketable buys, magsimula sa ask; para sa sells, sa bid. Kung trade bars lang ang mayroon ka, tantiyahin ang spread mula sa hiwalay na pinagmulan o iulat na hindi ito isinama ng modelo.
  3. Limitahan ang fill batay sa makatwirang liquidity. Magtakda ng participation limit batay sa naobserbahang volume at isama ang fees at market impact. Hindi ibig sabihin ng kabuuang volume ng bar na available ang lahat nito sa presyong pinili mo.
  4. Subukan sa ilalim ng mas mahihirap na palagay. Ihambing ang fill sa susunod na open na may konserbatibong slippage, at tingnan kung nananatili ang resulta kapag mas masama ang execution. Huwag i-tune ang fill model hanggang manalo ang strategy.

Mga pagpili ito sa pagmomodelo, hindi isang paraan para mabawi ang nag-iisang totoong fill mula sa kulang na datos. Kung nakasalalay ang strategy sa pagkuha ng ilang basis point, maaaring hindi sapat na batayan ang bar data para sa pahayag na iyon.

Paano ko matutunton kung saan napasok sa backtest ang imposibleng fill?

Sundan ang isang kahina-hinalang trade mula signal hanggang ledger. Panatilihing magkakahiwalay na field ang timestamp ng desisyon, timestamp ng pagsusumite ng order, simulated arrival, napiling obserbasyon sa merkado, fill price, fill quantity, at fee. Pagkatapos, suriin ito nang sunod-sunod:

Kung hindi mo masasagot ang mga tanong na iyon gamit ang trade record, kulang sa ebidensiya ng execution ang backtest. Idagdag ang mga field, mano-manong i-replay ang ilang trade gamit ang raw data, at tiyaking posible ang iniulat na fill sa ilalim ng modelong nilayon mong gamitin. Hindi mahuhuli ng malinis na equity curve ang presyong umiral lang sa loob ng simulator.

backtestingdatos ng merkadoexecutiondata engineering
← Lahat ng post