KO/PEP Cointegration Pairs Reversion — Dollar-Neutral na Long-Short Stat-Arb sa Commission-Free na US Equities: I-trade ang Mean-Reverting na Spread ng Dalawang Cointegrated na Malalaking Kumpanya sa Consumer Staples, Z-Score na Entry, Convergence na Exit, Divergence na Stop (KO.USEQ + PEP.USEQ, Daily Bars, 3-Parameter)
Resulta: Inabandona
KoPepCointegrationPairsReversionLS
Tamang dollar-neutral: beta 0.029, benchmark_correlation 0.14, mali ang benchmark_meaningful — gumagana ayon sa disenyo ang market-neutral na estruktura
Isang DOLLAR-NEUTRAL, LONG-SHORT PAIRS stat-arb sa dalawang structurally cointegrated na US large cap — long/short ang Coca-Cola (KO.USEQ) laban sa PepsiCo (PEP.USEQ) — sa USEQ venue. Ibang-iba ang pamilyang ito sa lahat ng nasa crypto book at sa single-name equity mean-reversion na nasa pipeline na: ang bagay na tina-trade ay ang SPREAD sa pagitan ng dalawang kumpanyang may ugnayang pundamental, hindi ang presyo ng alinman sa mga ito. Ang KO at PEP ang klasikong cointegrated pair — pareho ang mga nagtutulak sa……Magpakita ng higit paMagpakita ng mas kaunti
Isang DOLLAR-NEUTRAL, LONG-SHORT PAIRS stat-arb sa dalawang structurally cointegrated na US large cap — long/short ang Coca-Cola (KO.USEQ) laban sa PepsiCo (PEP.USEQ) — sa USEQ venue. Ibang-iba ang pamilyang ito sa lahat ng nasa crypto book at sa single-name equity mean-reversion na nasa pipeline na: ang bagay na tina-trade ay ang SPREAD sa pagitan ng dalawang kumpanyang may ugnayang pundamental, hindi ang presyo ng alinman sa mga ito. Ang KO at PEP ang klasikong cointegrated pair — pareho ang mga nagtutulak sa demand ng consumer staples at ang pagiging sensitibo sa mga salik na makroekonomiko, at magkakasabay ang galaw sa loob ng ilang dekada — kaya umiikot ang relatibong halaga ng mga ito sa isang matatag na pangmatagalang ugnayan at bumabalik kapag lumalayo ito. Bakit bagay ito sa USEQ at hindi sa crypto: wala sa crypto book ang pairs/market-neutral na 0/125 (L68) pangunahin dahil mas mataas ang gastos sa two-leg round-trip na FEES (0.20-0.40%) kaysa sa kita mula sa pagsalo sa manipis na pagbalik ng spread, at hindi maipasok sa sandbox ang mga AND cross-venue leg (L69). Nawawala rito ang mga problemang BOTH: walang komisyon ang USEQ (~0.02-0.05% RT bawat leg, spread at impact lang), kaya natatakpan ng parehong edge sa spread na hindi nakakabawi sa bayarin sa crypto ang mga gastos dito; at nasa iisang SAME venue ang mga leg na BOTH (USEQ), kaya naipapasok sa Layer-3 sandbox ang ikalawang instrumento tulad ng mga 372 crypto pair sa iisang venue na tumatakbo na. Nagbibigay ang ilang dekadang arawang kasaysayan (KO at PEP ay parehong nagte-trade mula pa noong dekada 1980) ng tunay na matibay na walk-forward sa maraming window at totoong 15-araw na holdout, kaya naiiwasan ang problemang walang laman na OOS na nagpabagsak sa mga estratehiyang kulang sa kasaysayan. 3 lang ang free parameter (z_entry, lookback, hard_stop_z), at nakapirmi sa 0 ang z-exit para makaiwas sa overfitting. FEE ARITHMETIC: umiindak ang KO/PEP spread z-score nang ~2-4% mula peak hanggang mean sa pagitan ng mga sukdulang |z|=2 at convergence; ang pagsalo sa ~0.8-1.2% ng convergence ng spread sa bawat nakumpletong trade, laban sa gastos na ~0.16% para sa two-leg round-trip (4 fill × ~0.04%), ay ~5-7x ng minimum na gastos at lampas sa hangganang 0.15% para maging mabisa. Kinakansela ng market-neutral na pagkakabuo ang malawakang market beta, kaya mean-reversion ng halaga ng RELATIVE ang pinagmumulan ng kita, hindi taya sa direksiyon ng merkado.
Inaayos ng Iteration 2 ang ONLY Layer-2 failure at wala nang iba pang binabago. Sanhi: kinokopya ng Layer-2 proxy ang mga minanang method papunta sa payak na wrapper gamit ang types.MethodType, na nagiging BOUND method ang staticmethod na FactoryStrategy._bar_ts ng base class — kaya ipinasa ang self._bar_ts(bar) bilang dalawang positional argument at nagkaroon ng TypeError sa bawat scenario. Ayos: pinalitan ng module-level na helper na _bar_timestamp(bar) (binabasa ang ts_event, at kung wala ay ginagamit ang……Magpakita ng higit paMagpakita ng mas kaunti
Inaayos ng Iteration 2 ang ONLY Layer-2 failure at wala nang iba pang binabago. Sanhi: kinokopya ng Layer-2 proxy ang mga minanang method papunta sa payak na wrapper gamit ang types.MethodType, na nagiging BOUND method ang staticmethod na FactoryStrategy._bar_ts ng base class — kaya ipinasa ang self._bar_ts(bar) bilang dalawang positional argument at nagkaroon ng TypeError sa bawat scenario. Ayos: pinalitan ng module-level na helper na _bar_timestamp(bar) (binabasa ang ts_event, at kung wala ay ginagamit ang ts_init) ang tatlong tawag sa self._bar_ts(...) sa on_extra_bar, _sessions_since at calculate_signal. Walang idinagdag o inalis na import (green pa rin ang Layer 1), at eksaktong kapareho ng nakaraang iteration ang signal math, entry/exit threshold, sizing, hedge-leg submission at config. Hindi nagbago ang iba pa mula sa iteration 1: ibinabalik ang tuloy-tuloy na spread z-score sa bawat bar at nilalagyan ng threshold sa should_enter; eksaktong 3 free parameter (z_entry, lookback, hard_stop_z) na may mga clamp na nakasaad sa _param_bounds; parehong commission-free USEQ venue ang dalawang leg, na magkapantay ang dollar notional (beta-scaled ang hedge leg, nililimitahan ang beta sa [0.6, 1.6]) at nililimitahan ang gross sa 50% ng equity at leverage sa 1.0, kaya nananatiling market-neutral ang portfolio at iniiwasan ang unequal-notional/naked-leg failure mode; pinananatiling timestamp-aligned ng SyncedBuffer ang KO at PEP samples; at ibinabatay sa engine position ts_opened ang holding time para tumagal ito kahit mag-restart.
Walang makabuluhang edge at humina na ang mekanismo — hindi sulit i-optimize. 0.106 ang full-sample Sharpe, na may bootstrap CI [-0.163, 0.380] na sumasaklaw sa zero; negatibo ang information_ratio (-0.385), at nasa ~1%/taon ang total_return sa loob ng 54 taon. Higit sa lahat, humina na ang edge ng KO/PEP spread: negatibo ang bawat taon mula 2023 hanggang 2026, at bumaba sa -4.26 ang rolling Sharpe, kaya nasa luging regime ang kamakailang OOS window ng walk-forward at ang huling -20% holdout; mabibigo ang dalawa. Hindi ito limitasyon sa bayarin (avg_trade_return_pct 0.476% ay lumalampas sa USEQ floor) — ito ang kilalang pattern ng USEQ market-neutral / KO-PEP-pairs na zero ang nakaligtas (dalawang beses nang inulit hanggang bumagsak). Ang pag-optimize sa bahagyang positibo, hindi statistically significant at aktibong humihinang cointegration spread ay magko-curve-fit lamang sa mga makasaysayang window at babagsak sa holdout.
Implementasyon
Dollar-neutral long-short pairs stat-arb sa KO/PEP cointegrated spread, USEQ daily bar. Sa bawat session, nag-aakma ito ng rolling OLS hedge ratio ng log(KO) sa log(PEP) sa loob ng 45-session na window, binubuo ang spread = log(KO) - beta*log(PEP), at ibinabalik ang z-score ng spread bilang signal. Kapag z <= -1.8, mag-LONG KO / SHORT PEP; kapag z >= +1.8, mag-SHORT KO / LONG PEP; sabay binubuksan ang dalawang leg na may pantay na dollar notional (25% ng equity bawat isa, beta-scaled ang hedge leg, whole share). Isinasara ang mga posisyon kapag nag-converge (bumalik ang z lampas sa 0), kapag may hard stop sa divergence na |z| >= 3.5 laban sa posisyon, o kapag umabot sa 40 session ang time stop; laging sabay isinasara ang dalawang leg. Isinusumite lamang ang PEP leg kapag nakumpirmang gumagana na ang KO leg, at agad isinasara ang anumang naiwang hedge leg kapag flat ang primary, kaya hindi kailanman nagdadala ang portfolio ng naked directional position.
Mga Resulta ng Beripikasyon
Inalis ang history ng mga verdict at learning record ng run na ito, CLEAN RESTART 2026-09-04, at sinimulan itong muli mula sa verification. Pipeline ang sanhi ng dating pag-abandona, hindi ang market: maling iniugnay ng Layer-2 harness ang mga @staticmethod helper (naayos), naglabas ang QA ng mga pinal na verdict sa performance batay sa hindi pa na-optimize na smoke test (inalis — correctness lamang ang hinuhusgahan ngayon ng QA), at dulot ng kakulangan ng backtest slot ang mga timeout sa sandbox (naayos). Hindi nagbago ang hypothesis o ang strategy code. Suriin ang code batay sa merito nito; ang full backtest at optimizer ang magpapasya sa performance sa susunod.
Walang pagbabago sa code; tiyaking full-history window ang gamit para magkaroon ng sapat na completed round trip sa bawat WF window at sa holdout.
Kaunti ang bilang ng sandbox trades (42 sa loob ng ~4.5yr, ~9/yr) — likas ito sa ritmo ng pairs, NOT hindi hadlang sa pagsukat dahil saklaw ng buong backtest ang ilang dekadang araw-araw na kasaysayan ng KO/PEP (daan-daang trades). Minarkahan ito para suriin ng analyst ang bilang kada window sa walk-forward/holdout.
Pagsusuri ng Backtest
Sharpe
0.11
Kabuuang Return
53.91%
Max Drawdown
13.65%
Kabuuang Trade
445
Win Rate
58.0%
Profit Factor
1.18
Tamang dollar-neutral: beta 0.029, benchmark_correlation 0.14, mali ang benchmark_meaningful — gumagana ayon sa disenyo ang market-neutral na estruktura
avg_trade_return_pct 0.476% ay lampas sa USEQ cost floor (hindi bigo dahil sa bayarin)
Mahigpit na kontrolado ang panganib: max_drawdown 13.6%, parehong venue ang dalawang leg kaya walang problema sa injection
445 trade sa napakahabang history — sapat ang sample
Sharpe 0.106 na may CI [-0.163, 0.380] na sumasaklaw sa zero — walang statistically significant na edge kahit in-sample
Backtesting: total_return lang sa 53.9% sa loob ng 54 taon (~1%/taon), gamit ang information_ratio -0.385 at profit_factor 1.18 | Stratmill
Humina na ang edge: negatibo ang bawat taon mula 2023 hanggang 2026, at bumagsak sa -4.26 ang rolling Sharpe — hindi na kumikita ang pagbalik ng KO/PEP spread
Pasok sa negatibong kamakailang regime ang holdout (huling ~11 taon) at pinakahuling walk-forward OOS window, kaya babagsak sa OOS/holdout ang optimization
Tumutugma sa kilalang USEQ market-neutral / KO-PEP-pairs na pattern ng pagkabigo na zero ang nakaligtas (dalawang beses nang bumagsak)
Kasaysayan ng Iterasyon
Bigo ang verification (Layer 2 — mga synthetic scenario): Mga ginamit na parameter: ['z_exit', 'z_entry', 'beta_max', 'beta_min', 'lookback', 'hard_stop_z', 'per_leg_pct', 'min_notional', '_param_bounds', 'max_hold_bars'] Tiyaking itinatakda ng __init__ ang lahat ng attribute mula sa self.parameters.get(). - steady_uptrend: TypeError: FactoryStrategy._bar_ts() ay tumatanggap ng 1 positional argument pero 2 ang ibinigay (bar timestamp: 1735689600000) - steady_downtrend: TypeError: FactoryStrategy._bar_ts() ay……Magpakita ng higit paMagpakita ng mas kaunti
Bigo ang verification (Layer 2 — mga synthetic scenario):
Mga ginamit na parameter: ['z_exit', 'z_entry', 'beta_max', 'beta_min', 'lookback', 'hard_stop_z', 'per_leg_pct', 'min_notional', '_param_bounds', 'max_hold_bars']
Tiyaking itinatakda ng __init__ ang lahat ng attribute mula sa self.parameters.get().
- steady_uptrend: TypeError: FactoryStrategy._bar_ts() ay tumatanggap ng 1 positional argument pero 2 ang ibinigay (bar timestamp: 1735689600000)
- steady_downtrend: TypeError: FactoryStrategy._bar_ts() ay tumatanggap ng 1 positional argument pero 2 ang ibinigay (bar timestamp: 1735689600000)
- flat_ranging: TypeError: FactoryStrategy._bar_ts() ay tumatanggap ng 1 positional argument pero 2 ang ibinigay (bar timestamp: 1735689600000)
- volatility_spike: TypeError: FactoryStrategy._bar_ts() ay tumatanggap ng 1 positional argument pero 2 ang ibinigay (bar timestamp: 1735689600000)
- zero_volume: TypeError: FactoryStrategy._bar_ts() ay tumatanggap ng 1 positional argument pero 2 ang ibinigay (bar timestamp: 1735689600000)
- price_gap: TypeError: FactoryStrategy._bar_ts() ay tumatanggap ng 1 positional argument pero 2 ang ibinigay (bar timestamp: 1735689600000)
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.