Lumaktaw papunta sa nilalaman
Lahat ng estratehiya

Mga Estratehiya

XLE/USO energy equity-vs-crude OU pagbabalik sa mean ng log-spread (USEQ daily, dollar-neutral, point-in-time na fit ng OU)

Resulta: Inabandona

XleUsoOuLogSpreadReversion

Buod ng Resulta

Sinubukan ng XleUsoOuLogSpreadReversion na ilapat ang modelo ng commodity pairs na may stochastic spread sa XLE kumpara sa USO, gamit ang 20 taon ng daily US equity data at tine-trade ang mga sukdulang OU z-score ng beta-hedged log spread. Binanggit ng hypothesis ang katamtamang edge bago ang pag-aaral (average trade na humigit-kumulang +0.5%, Sharpe na humigit-kumulang 0.3) at itinuro ang malaking selection bias. Sa loob ng 3 iteration, hindi nakalusot sa beripikasyon ang code: tinanggihan ng Layer 1.5 ang bawat pagtatangka dahil itinatakda ng optimization_plan ang leverage sa 1.0. Itinigil ang run bago ang anumang backtest, optimization o hatol ng analyst, kaya hindi pa nasusubok sa pipeline ang edge.

Hypothesis

Salin ng Mahajan et al. (2019), 'Stochastic Spread Pairs Trading in the Indian Commodity Market' (arXiv:1907.08397, abstrak: mga cointegrated na pares ng commodity, single-factor stochastic (OU) model sa LOG spread, at mga parameter ng trading rule na iniangkop gamit ang training data). Wala sa aming mga venue ang mga spot commodity na MCX, kaya ginamit ang pinakamalapit na pares ng commodity na puwedeng i-backtest at may mahabang kasaysayan: XLE.USEQ (pinagsamang mga equity ng langis at gas) laban sa USO.USEQ……Magpakita ng higit paMagpakita ng mas kaunti

Salin ng Mahajan et al. (2019), 'Stochastic Spread Pairs Trading in the Indian Commodity Market' (arXiv:1907.08397, abstrak: mga cointegrated na pares ng commodity, single-factor stochastic (OU) model sa LOG spread, at mga parameter ng trading rule na iniangkop gamit ang training data). Wala sa aming mga venue ang mga spot commodity na MCX, kaya ginamit ang pinakamalapit na pares ng commodity na puwedeng i-backtest at may mahabang kasaysayan: XLE.USEQ (pinagsamang mga equity ng langis at gas) laban sa USO.USEQ (front-month na WTI crude ETF), kapwa sa mga 1-DAY bar mula 2006 (~20 taon, ~5,100 magkakatugmang session). Ugnayang pang-ekonomiya: nakasalalay sa crude ang mga cash flow ng mga constituent ng XLE, kaya nagme-mean-revert sa katamtamang panahon ang log spread na log(XLE) - beta*log(USO). Nagmumula ang mga panandaliang agwat sa mga daloy na partikular sa equity, pag-roll ng crude futures, at mga shock mula sa contango; nagsasara ang mga ito habang muling itinatakda ng equity market ang presyo ng exposure sa langis. Point-in-time na pagpapatupad ng model ng papel: (1) hedge ratio na beta = rolling 252-session na OLS slope ng mga daily log return ng XLE sa USO, na naka-lag ng isang bar. (2) spread na s_t = log(XLE_t) - beta_{t-1}*log(USO_t). (3) iniangkop ang mga parameter ng OU (theta = pangmatagalang mean, sigma_eq = stationary std, kappa mula sa coefficient ng AR(1)) gamit ang AR(1) regression ng s sa lag nito sa nakaraang `z_window` session, at mga nakumpletong bar lamang ang ginamit. Ginamit ang closed-form na AR(1) sa halip na differential-evolution fit ng papel; katumbas ito para sa single-factor na OU at hindi nangangailangan ng dagdag na compute. (4) z = (s_t - theta)/sigma_eq. Long-short, dollar-neutral, mga leg na 2, at halos palaging flat. Sinuri muna ang mga alternatibong crypto ngunit tinanggihan dahil sa datos. May ~7-10 buwan lang ng 1h history ang mga gold at silver perp ng Binance/OKX (XAU/XAG/XPT/COPPER). Ang mga spread ng gold token (XAU kumpara sa PAXG kumpara sa XAUT sa Binance, XAG Binance kumpara sa OKX) ay may hourly spread std na 3-6 bps at nalugi matapos ang fees sa bawat variant (avg trade -0.01% hanggang -0.06%). Nagbigay ang paunang pag-aaral sa daily na USEQ (rolling beta, 60-session z, entry |z|>1.5-2.0, exit sa mean, 20-session cap, 6 bps na gastos) ng humigit-kumulang 100-158 trade sa XLE/USO, avg trade +0.51% hanggang +0.58%, win rate na ~0.6, Sharpe na ~0.30-0.33, at positibong resulta sa 60-70% sa mga taon. HONEST CAVEAT: ang XLE/USO ang pinakamahusay sa 21 pares ng commodity-ETF na sinuri (GLD, SLV, GDX, XLE, XOP, USO, UNG). Walang edge ang GLD/SLV at GLD/GDX, ang mga 'textbook' na pares ng commodity, kaya mahalaga ang selection bias at katamtaman ang inaasahang Sharpe na OOS. Kailangang kumpirmahin ng buong papel ang eksaktong anyo ng trading rule (mga entry/exit band sa yunit ng OU-sigma, at kung may stop-loss band), kung fixed o in-optimize kada pares ang mga band, at kung neto na sa mga gastos ang iniulat na Sharpe > 1.4. Sinasabi ng abstrak na 'in-optimize sa pamamagitan ng backtesting sa training period' ang mga parameter, kaya malamang na na-tune sa in-sample ang bilang na 1.4. source_ref: abstrak ng arXiv:1907.08397 (talata ng pamamaraan: pagpili ng Johansen cointegration + single-factor stochastic spread sa log spread + trading rule na iniangkop sa training split na 80%).

Mga bucket na kulang ang representasyon: USEQ venue (4.7%), long_short (15.3% kumpara sa <= 55% long-only target), mga pares. Sinubukan ang salin para sa crypto at lugi ito dahil sa bayarin; kulang sa kasaysayan ang mga crypto metal perp. May 20 taon ng daily data ang mga equity commodity ETF. 3 lang ang mga tunable, at lahat ay may kabuluhang pang-ekonomiya. Sadyang katamtaman ang mga numerong itinakda bago ang pag-aaral dahil sa caveat tungkol sa selection bias.

verification_loop: Nabigo sa beripikasyon (Layer 1.5 — pagkakatugma ng hypothesis/config) [class=hypothesis_mismatch]: - Itinatakda ng optimization_plan ang leverage sa 1.0

Implementasyon

Dollar-neutral na XLE/USO pairs trade sa USEQ daily bar. Hedge ratio = rolling 252-session na OLS beta ng daily log return ng XLE sa USO, isang bar ang lag. Spread s = log(XLE) - beta*log(USO). Galing ang mga parameter ng OU sa closed-form na fit ng AR(1) sa huling z_window nakumpletong session; muling binubuo ang bawat spread sa window gamit ang iisang lagged beta. z = (s - theta)/sigma_eq. Pumasok sa long spread sa z <= -entry_z at sa short spread sa z >= entry_z, kung <= max_half_life lang ang half-life at |z| < stop_z. Lumabas sa mean (exit_z), sa stop band (stop_z), o pagkalipas ng max_hold session. Itinatala ang bawat leg bilang sariling posisyon sa gross_notional_frac/2 ng equity.

Inaayos ng iteration 3 ang kritikal na warm-up depekto. Ibinabalik na ngayon ng min_bars_required() ang 2, kaya tumatakbo ang calculate_signal mula bar 1 at ang internal na _beta_ok/_fit_ok flag lang ang batayan ng trading. Naka-buffer ang log price mula bar 1 at kailangan ng beta ng 252 return pair, kaya lumilitaw ang unang valid z sa bar 254 para sa bawat z_window sa [40,120]. Pasok iyon sa nakarehistrong 380-bar warm-up, kaya hindi na nawawalan ng 15-24 buwan ang walk-forward window sa pag-reset. Natugunan din……Magpakita ng higit paMagpakita ng mas kaunti

Inaayos ng iteration 3 ang kritikal na warm-up depekto. Ibinabalik na ngayon ng min_bars_required() ang 2, kaya tumatakbo ang calculate_signal mula bar 1 at ang internal na _beta_ok/_fit_ok flag lang ang batayan ng trading. Naka-buffer ang log price mula bar 1 at kailangan ng beta ng 252 return pair, kaya lumilitaw ang unang valid z sa bar 254 para sa bawat z_window sa [40,120]. Pasok iyon sa nakarehistrong 380-bar warm-up, kaya hindi na nawawalan ng 15-24 buwan ang walk-forward window sa pag-reset. Natugunan din ang babala sa paghahalo ng beta na QA: iniimbak na ngayon ng window na OU ang (log XLE, log USO) at muling binubuo ang bawat spread gamit ang kasalukuyang lagged beta, sa halagang O(z_window) kada bar, kaya hindi na makalilikha ng huwad na paglihis ng z ang hedge-ratio drift. Magkapantay pa rin ang dollar value ng mga leg dahil dollar-neutral ang hinihingi ng hypothesis; sinadya ito kahit karaniwang mas mababa sa 1 ang beta (isa pang opsiyon ang beta-neutral na pagtatakda ng laki). Hindi binago ang paglilinis ng naiwang hedge; sa daily bar, hanggang isang session lang ang exposure. Usaping pang-hypothesis na kailangang hatulan ng analyst batay sa resulta sa buong kasaysayan at walk-forward ang alalahanin tungkol sa edge (nakasentro ang kita sa tercile na may matinding volatility, ang pagsasaayos muli ng 2020 USO, at selection bias mula sa 21 pares na sinuri); walang pagbabago sa code ang tumutugon dito.

Mga Resulta ng Beripikasyon

Nabigo sa beripikasyon (Layer 1.5 — pagkakatugma ng hypothesis/config) [class=hypothesis_mismatch]: - Itinatakda ng optimization_plan ang leverage sa 1.0

Kasaysayan ng Iterasyon

Nabigo sa beripikasyon (Layer 4 — pagsusuri ng QA) [class=code_defect]: - [edge_concern] Tumakbo ang sandbox sa 1,653 session at nakabuo ng 44 leg position (22 pair trade). Nagbalik ito ng +3.2%, Sharpe na 0.13, PF 1.17 at avg trade na +0.29%. Halos lahat ng kita ay nagmula sa tercile na may matinding volatility (+4.28%); kapwa bahagyang negatibo ang mga kalmado at normal na tercile. Sinasabi ng researcher na pinakamaganda ang XLE/USO sa 21 pares na sinuri, kaya mahalaga ang selection bias. Binago rin ng……Magpakita ng higit paMagpakita ng mas kaunti

Nabigo sa beripikasyon (Layer 4 — pagsusuri ng QA) [class=code_defect]: - [edge_concern] Tumakbo ang sandbox sa 1,653 session at nakabuo ng 44 leg position (22 pair trade). Nagbalik ito ng +3.2%, Sharpe na 0.13, PF 1.17 at avg trade na +0.29%. Halos lahat ng kita ay nagmula sa tercile na may matinding volatility (+4.28%); kapwa bahagyang negatibo ang mga kalmado at normal na tercile. Sinasabi ng researcher na pinakamaganda ang XLE/USO sa 21 pares na sinuri, kaya mahalaga ang selection bias. Binago rin ng pagsasaayos muli ng USO na 2020 (paglipat palayo sa futures na front-month lang, reverse split ng 1:8) ang bahagi ng exposure sa crude sa kalagitnaan ng sample. Suriin kung nananatili ang edge sa labas ng 2008, 2014-16, 2020 at 2022. - [kritikal] Halos doble ng idineklara ang tunay na warm-up. Dahil sa override na min_bars_required() = beta_window + z_window + 3 (375 sa default), ibinabalik ng base na _maybe_process_primary ang BEFORE at tinatawag ang calculate_signal sa unang 375 bar. Walang laman ang _rets at _spreads sa mga bar na iyon. Sinasabi ng komento na “muling binubuo mula sa warmup bars pagkatapos ng restart” ang mga buffer, pero walang code na gumagawa nito. Sa bar ~375 pa lang nagsisimulang mapuno ang rolling state. Kailangan pa nito ng 252 return pair bago maging true ang _beta_ok, at ng z_window+1 kumpletong spread bago magtagumpay ang _fit_ou. Kaya lumilitaw ang unang valid z sa bandang bar 375 + 253 + 61 ≈ 689 (≈ 870 kapag z_window = 120). Itinatakda ng nakarehistrong kontrata ang warmup_bars = 380 na may boundary_policy reset_with_warmup, at nagdaragdag ang src/backtesting/warmup.py ng eksaktong 380 na naunang bar sa bawat walk-forward window. Inihahambing lang ng guard ng runner ang min_bars_required() (375) sa 380, kaya pumapasa ito, pero nilalabag nito ang kontrata sa aktuwal. Mawawala ang unang ~310-490 tradable session sa bawat reset window (15-24 buwang daily bar). Wala talagang silbi ang mga adaptive na 90-araw na validation window at wala silang ilalabas na trade. Mabibigo ang optimization o walang masukat, at tahimik na mawawala ang ~2.7 taon sa simula ng buong kasaysayang run. (line 45) — ayusin: Pumili ng isa: (a) ibalik ng min_bars_required() ang maliit na bilang (hal. 2) at ipasailalim lang sa internal na _beta_ok/_fit_ok flag ang trading, para mapuno ng 380 warm-up bar ang mga deque; sa pinakamasamang kaso, 253 + 121 = 374 bar sa z_window = 120, na pasok sa 380. O (b) panatilihin ang override pero buuin muli sa unang naprosesong bar ang _rets at _spreads mula sa self._bars na ipinares ayon sa ts_init sa self._extra_bars[USO]. Alinman dito, ipakita na lumilitaw ang unang z na hindi zero sa o bago ang bar 380 para sa z_window = 120. - [babala] Magkapantay ang dollar value ng mga leg, gaya ng sinasabi ng hypothesis (“dollar-neutral”), pero ang signal ay beta-weighted spread na log(XLE) - beta*log(USO). Karaniwang ~0.3-0.6 ang daily-return beta ng XLE sa USO. Kaya sinusundan ng P&L ng posisyon ang r_XLE - r_USO, hindi ang r_XLE - beta*r_USO: halos kalahati ng leg na USO ay hindi naka-hedge na direksiyonal na taya sa crude. Sinusunod nito ang nakasulat na hypothesis, kaya hindi ito hadlang, pero hindi ang ipinapasok sa z-score ang aktuwal na spread na tine-trade. (line 211) — ayusin: Isaalang-alang ang pagtakda sa leg na USO sa beta x notional ng XLE (beta-neutral), o tahasang sabihin na dollar neutrality ang layunin kahit beta != 1. - [babala] Ginagamit ng bawat nakaimbak na spread ang beta noong kinuwenta ito, kaya pinaghahalo ng window na AR(1)/OU ang mga spread na may magkakaibang hedge ratio. Nasa bandang 2-5 ang antas ng log(USO), kaya naigagalaw ng beta drift na 0.05 sa loob ng window ang s nang 0.1-0.25. Katumbas ito ng sigma_eq at maaaring lumikha ng artipisyal na paglihis ng z. Ligtas ito sa point-in-time (walang look-ahead), pero mas maingay kaysa fixed-beta spread ng papel. (line 148) — ayusin: Opsyonal na muling kuwentahin ang z_window spread gamit ang kasalukuyang lagged beta, s_i = lx_i - beta_{t-1} * lu_i, at panatilihin ang log prices sa deque; O(z_window) ang gastos kada bar. - [babala] Nililinis lang ang mga naiwang USO hedge leg sa should_enter (sa susunod na bar matapos maging flat ang primary). Kung tanggihan ang entry ng XLE matapos maisumite na ng position_size ang order ng USO (halimbawa, dahil sa gate ng base template), mananatiling bukas at walang hedge ang USO sa loob ng isang session. Katanggap-tanggap ito sa daily bar, pero isinusumite ang hedge bago malaman kung tinanggap ang primary order. (line 168) — ayusin: Isumite ang hedge leg pagkatapos tanggapin ang primary order, o agad tiyaking tinanggap ito.

Buod ng Resulta

Bago mag-code, itugma ang leverage setting ng optimization plan sa hypothesis at deklarasyon ng venue (isang Reg-T 2x USEQ long-short na pares), dahil ititigil ng hindi naayos na hindi pagtutugma ng config sa bawat iteration ang run bago magkaroon ng anumang ebidensiya mula sa backtest.

Matapos ang 3 iteration, tinalikuran ang estratehiya habang paulit-ulit na sinusubukang beripikahin ito. Nabigo ang bawat pagtatangka sa Layer 1.5 (pagkakatugma ng hypothesis/config, class hypothesis_mismatch) dahil itinatakda ng optimization_plan ang leverage sa 1.0. Hindi ito umabot sa backtesting, pagsusuri ng analyst o pagsusuri ng panganib.

Dollar-neutral na daily USEQ pairs trade sa log spread na log(XLE) - beta*log(USO), na may rolling hedge ratio na 252 session ang lag at point-in-time na fit ng AR(1)/OU; pumapasok kapag malayo na ang OU z-score at lumalabas sa mean (salin ng Mahajan et al. 2019, arXiv:1907.08397).

Walang nagawang pipeline backtest o optimization. Ang tanging mga numero ay mula sa pre-study mismo ng hypothesis: humigit-kumulang 100-158 trade, average trade na +0.51% hanggang +0.58%, win rate na humigit-kumulang 0.6, Sharpe na humigit-kumulang 0.30-0.33, at positibo sa 60-70% taon. Nagbabala mismo ang hypothesis na pinakamaganda ang XLE/USO sa 21 commodity-ETF pares na sinuri.

Pagsusuri

Stochastic Spread Pairs Trading in the Indian Commodity Market

Ang Stratmill ay isang tool para sa pananaliksik at paper trading, hindi payo sa pananalapi o isang broker. Ang mga resulta ng backtest at paper trading ay hypothetical. May panganib ng pagkalugi ang pangangalakal.