Lumaktaw papunta sa nilalaman
Lahat ng estratehiya

Mga Estratehiya

Quantiacs Futures Trend-Following (WMA200 / ROCP20 / 2% sideways band), tapat na port sa basket ng 7 OKX USDT-perp, araw-araw, long/short, magkakapantay ang timbang ng mga aktibong leg

Resulta: Inabandona

QuantiacsTrendFollowingOkxBasket

Buod ng Resulta

Sa run na ito, ini-port ang trend-following state machine ng Quantiacs na WMA/ROCP sa basket ng pitong OKX USDT-perp, at nag-trade araw-araw nang long/short na may magkakapantay na timbang. Sa backtest ng unang iteration, nalugi ang basket ng 15.57% sa loob ng humigit-kumulang 4.7 taon, na may 58 trade, profit factor na 0.920, Sharpe na 0.19 at drawdown na 64.31%. Maliit na tubo lang ang idinulot ng galaw ng presyo, at ginawa itong pagkalugi ng mga gastos sa funding. Iniwan ito ng analyst sa backtest review bago mag-optimize, at binigyang-diin na hindi nito itinatanggi ang orihinal na strategy ng Quantiacs o ang bawat posibleng pagbabago ng parameter.

Hypothesis

Tapat na port ng MIT-lisensyadong 'strategy-futures-trend-following' ng Quantiacs (strategy.ipynb, multi-pass na function na `strategy(data)`); pagkilala kay Quantiacs. Ang universe ng source ay ang futures set ng Quantiacs. Hindi makapag-trade ng CME futures ang platform namin, kaya ang basket ay OKX USDT perpetual futures na may daily history hanggang kahit 2021-01-24: BTC, ETH, SOL, ADA, LINK, BCH at TRX. Kulang ang representasyon ng OKX sa corpus sa 2.7%. Pare-pareho ang RULES sa bawat asset; kinukuwenta ito……Magpakita ng higit paMagpakita ng mas kaunti

Tapat na port ng MIT-lisensyadong 'strategy-futures-trend-following' ng Quantiacs (strategy.ipynb, multi-pass na function na `strategy(data)`); pagkilala kay Quantiacs. Ang universe ng source ay ang futures set ng Quantiacs. Hindi makapag-trade ng CME futures ang platform namin, kaya ang basket ay OKX USDT perpetual futures na may daily history hanggang kahit 2021-01-24: BTC, ETH, SOL, ADA, LINK, BCH at TRX. Kulang ang representasyon ng OKX sa corpus sa 2.7%. Pare-pareho ang RULES sa bawat asset; kinukuwenta ito batay sa sariling 1-DAY close ng asset: ma = WMA(close, 200), isang linear-weighted moving average na TA-Lib na may mga timbang na 1..200, at pinakamataas ang timbang ng pinakabagong value. roc = ROCP(ma, 20) = ma[t]/ma[t-20] - 1. sideways_threshold = 0.02. positive_trend = roc > 0.02; negative_trend = roc < -0.02; sideways = |roc| <= 0.02. side_positive_trend = positibo ang huling state na hindi sideways; side_negative_trend = negatibo ang huling state na hindi sideways; parehong False ang mga ito bago magkaroon ng bar na hindi sideways. State machine ng position kada asset, port ng xarray code: magsimula sa 0. Sa bawat bar, gawin sa ganitong pagkakasunod-sunod: kung positive_trend, raw = +1; kung negative_trend, raw = -1; kung hindi, walang nakatakdang raw. Ang fp ay ang dating position na ini-forward-fill, kasama ang raw. Kung side_negative_trend at fp > 0, raw = 0. Kung side_positive_trend at fp < 0, raw = 0. Ang position ay raw kung nakatakda, kung hindi ay ang dating position (ffill), na sinisimulan sa 0. Sa madaling sabi, maglo-long ang asset kapag lumampas sa +2% ang pagbabago sa loob ng 20 araw ng WMA, at magsho-short kapag mas mababa ito sa -2%. Habang sideways, pinananatili ang position. Tandaan na itinatakda ng positibong trend ang side_positive_trend, kaya negatibong regime lang ang makapagpapatigil sa long; ginagawa na nitong short ang position sa pamamagitan ng sell_signal. Kaya bihirang magbunga ng flat state ang mga stop branch, at kailangang eksaktong gayahin ng developer ang pagkakasunod-sunod sa source sa halip na pasimplehin ito. WEIGHTS: output = position / sum(|position|) sa buong basket, kaya ±1/N_active ng gross book ang bawat aktibong asset na hindi flat, at walang hawak kapag flat ang lahat. PLATFORM ADAPTATIONS (wala sa source): (1) Gross notional = account equity × leverage 1.0, kaya equity / N_active ang notional ng bawat aktibong leg, na may sign. (2) Execution: ginagamit ng Quantiacs ang timbang sa araw na t simula sa susunod na araw. Sa 24/7 venue, `next_bar_open_fill` ang capability namin sa `use_equivalent`, kaya market order ang inilalagay sa close ng signal bar, na katumbas ng open ng susunod na daily bar. (3) Araw-araw nagre-rebalance ang source sa target weights nito. Para maiwasan ang taker fees sa maliliit na drift trade, nire-resize lang ang leg kapag nagbago ang target sign nito, nagbago ang N_active, o lumihis nang higit sa rebalance_tolerance (nakapirmi sa 20%) ang notional nito mula sa target. Ito lang ang idinagdag na tuntunin bukod sa source. (4) Walang stop-loss ang source, at wala ring idinagdag; state machine lang ang nagdudulot ng mga exit. (5) Ang fees sa OKX ay 0.05% taker, humigit-kumulang 0.10% round trip, at inilalapat ang funding sa ledger. (WARM-UP): kailangan ng mga indicator ng 200 + 20 bar. 360 daily bar ang rehistradong warm-up, na sumasaklaw rin sa tunable maximum na 300 + 40. Inaayos nito ang 1825-bar na warm-up ng naunang contract: ang 5-taong `lookback_period` data window iyon ng source, hindi kailangan ng indicator, at lampas ito sa pinagsamang history ng basket. Hindi beripikado ang sariling mga pahayag ng source tungkol sa performance; ang backtest namin ang batayan.

Pag-aayos sa retry: inilagay ng naunang contract bilang warm-up ang 5*365 lookback_period ng source. 220 bar ang warm-up ng indicator (360 kapag isinama ang mga tunable maximum), na pasok sa pinagsamang daily history ng basket mula 2021-01-24 (humigit-kumulang 2,070 araw). Pinananatili ang katangian ng source bilang futures/long-short; pinupunan ng OKX ang kulang na representasyon sa venue bucket.

negative_expectancy: nalulugi ang sinukat na operationalization ng OKX basket matapos isama ang credited funding at execution costs, na may PF 0.920 at avg_trade_return_pct -4.194% kumpara sa +0.15%. Mas malaki ang hatak pababa ng funding kaysa sa maliit na positibong ambag ng price_pnl. Hindi sapat ang baseline na ito para bigyang-katwiran ang dalawang oras na paghahanap ng parameter. Para lamang sa crypto-perpetual port na ito at sa idinagdag nitong rebalance tolerance ang pasya; hindi nito itinatanggi ang orihinal na futures-universe strategy ng Quantiacs o pinatutunayang hindi kumikita ang bawat pagbabago ng parameter.

Implementasyon

Port ng strategy-futures-trend-following ng Quantiacs sa 7 OKX USDT perp (BTC, ETH, SOL, ADA, LINK, BCH, TRX), araw-araw. Pinapatakbo ng bawat asset ang WMA(200) -> ROCP(20) kasama ang 2% sideways band at ang ffilled side-trend stop state machine ng source. Long ang asset kapag roc > +2%, short kapag roc < -2%, at nananatili sa position habang sideways. Magkakapantay ang timbang ng book: +-MTM equity x leverage / N_active ang laki ng bawat aktibong leg, at flat ang strategy kapag flat ang lahat ng leg.

Tapat na salin ng multi-pass strategy(data). Gumagamit ang WMA ng linear weights ng TA-Lib na 1..n, at pinakamabigat ang timbang ng pinakabagong bar. ROCP = ma[t]/ma[t-20]-1. Ginagaya ng side_positive at side_negative ang where(sideways==False).ffill().fillna(False) ng xarray, kaya binibilang na hindi sideways ang bar na walang natukoy na roc at False ang dalawang flag. Ginagamit ng mga stop branch ang fp, ang ffilled PRE-stop raw series, at tumatakbo ang mga ito sa pagkakasunod-sunod ng source. Ang huling……Magpakita ng higit paMagpakita ng mas kaunti

Tapat na salin ng multi-pass strategy(data). Gumagamit ang WMA ng linear weights ng TA-Lib na 1..n, at pinakamabigat ang timbang ng pinakabagong bar. ROCP = ma[t]/ma[t-20]-1. Ginagaya ng side_positive at side_negative ang where(sideways==False).ffill().fillna(False) ng xarray, kaya binibilang na hindi sideways ang bar na walang natukoy na roc at False ang dalawang flag. Ginagamit ng mga stop branch ang fp, ang ffilled PRE-stop raw series, at tumatakbo ang mga ito sa pagkakasunod-sunod ng source. Ang huling position ay ffill ng series pagkatapos ng stop. Tumugma sa lohikang ito ang pandas na replika ng xarray code sa 200 sa 200 random na pagsubok. Ang mga timbang ay position/sum|position|. Sariling market order sa sariling instrumento ang bawat leg, inilalagay mula sa calculate_signal sa primary bar matapos iayon ng same-timeframe barrier ng base ang timestamp ng lahat ng 7 leg. Sa unang sinuring bar, inuulit ang state machine gamit ang naka-buffer na history ng bawat leg, kaya nagsisimula ito mula sa history gaya ng ginagawa ng 5-taong window ng source. Pinananatili ng mga parameter ang default na halaga ng source. Nakatakda ayon sa plano ang rebalance_tolerance (0.2) at leverage (1.0); tunable naman ang wma_period, roc_period at sideways_threshold. Walang inilalapat na clamp, kaya walang idinedeklarang _param_bounds. Kaunti lang ang inaasahang trade: humigit-kumulang 7 leg × ilang trend flip bawat taon, dagdag ang mga resize sa tuwing nagbabago ang N_active.

Mga Resulta ng Beripikasyon

Sa buong backtest, beripikahing nakakabit sa bawat leg ang OKX funding (PG funding_rates, exchange okx). Ituring na hindi pa kasama ang funding sa sandbox return hanggang sa makumpirma ito.

Hindi inilalapat ang funding sa sandbox (funding_folded=false, funding_events_available=0), kahit sinasabi ng hypothesis na inilalapat ang funding sa ledger. Usapin ito ng pag-attach ng platform/data, hindi ng strategy code. Hindi kailanman binabasa ng strategy ang funding, na tama para sa trend rule na ito na presyo lang ang batayan.

Walang kailangang baguhin. Dapat panatilihing kumpleto ng data-gap auditor ang OKX daily leg.

Uusad lang ang state machine ng bawat leg kapag inilabas ng same-timeframe barrier ng base ang primary bar, at kailangan nito ng bar sa ts na iyon para sa lahat ng 7 leg. Kapag nawalan ng daily bar ang isang OKX leg, nilalaktawan ng buong basket ang araw na iyon. Hahabol ang susunod na bar dahil pinoproseso ng _update_leg ang bawat naka-buffer na bar na may ts > leg_last_ts, kaya nananatiling tama ang state, pero nilalaktawan ang rebalance sa araw na iyon. Walang look-ahead: tinitiyak ng barrier na magkakasabay ang mga close.

Wala. False positive dito ang static na babala na base_shadow.

Sadyang ino-override ang min_bars_required(): max(360, wma+roc+1). Pinipigilan nito ang calculate_signal hanggang ma-buffer ang 360 primary bar. Pasok sa base buffer na _max_bars=500 ang pinakamatinding pangangailangan na 300+40, kaya hindi kailanman napuputol ang WMA history.

Ipinapakita ng sandbox ang 48.4% max drawdown, lampas sa limitasyon ng plano na 35%, at bootstrap na DD CI na 33-84%. Palaging 1x gross ang book kapag aktibo ang kahit anong leg at wala itong stop, alinsunod ito sa pinagmulan. Panalo lang ang mga short leg nang 29% ng panahon, at nalulugi ang mahinahong rehimen ng -19.7%. Iniulat din ng sandbox ang funding_folded=false na may funding_events_available=0, kaya OKX ang funding sa mga hawak na ito nang maraming buwan (avg 209 araw), pero NOT pa rin ito sa PnL. Tiyaking kasama sa buong backtest ang OKX ledger ng funding bago pagkatiwalaan ang resulta, dahil nagbabayad ng positibong funding ang mga long sa crypto bull market sa mahabang panahon. Hindi problema ang mga bayarin: ipinapakita ng sandbox ang avg na kita ng trade na 5.0% ng notional kumpara sa ~0.10% na round trip, at 0.75% ng gross ang mga komisyon. Binibilang ng ledger ang 37 saradong posisyon pero 368 fill, dahil nagaganap ang mga pagbabago sa laki sa bawat pagbabago ng N_active.

Pagsusuri ng Backtest

Sharpe
0.19
Kabuuang Return
-15.57%
Max Drawdown
64.31%
Kabuuang Trade
58
Win Rate
36.2%
Profit Factor
0.92

May long at short position sa lahat ng pitong instrumento ang mga trade record, na tugma sa nilalayong direksiyon ng basket at sa mabagal nitong turnover.

Kasama ang funding: nililinaw ng 36,185 available event at tahasang funding cash flow sa mga saradong trade ang alalahanin ni QA tungkol sa nawawalang funding.

Sa mahigit 1,725 araw na sinuri, nalugi ng $15,573.51 ang 58 saradong position: PF 0.920 at average trade return na -4.194%, kumpara sa ibinigay na OKX futures floor na +0.15%.

Tugma sa net loss ang $2,348.73 ng price_pnl kasama ang -$17,922.24 na funding. Hindi sapat ang kita ng ipinatupad na long-duration book para sagutin ang aktuwal nitong mga carrying cost.

Napatunayan ang alalahanin ni QA sa panganib: umabot sa 64.31% ang drawdown, kung saan nalugi ang 2025 44.05%. Karagdagang ebidensiya ang drawdown, hindi ito ang tanging dahilan ng pagtanggi.

Itinuturing na walang saysay ang benchmark ng basket; walang batayan para magbigay ng konklusyon tungkol sa alpha kumpara sa buy-and-hold.

Buod ng Resulta

Kailangang sukatin nang bawas ang funding carry ang bentahe ng presyo ng mabagal at matagal maghawak na trend book sa crypto perp, dahil madaling matabunan ng funding (-$17.9k dito) ang katamtamang bentahe mula sa direksiyon.

Bumoto ang analyst sa backtest review na iwan ang strategy dahil negatibo ang expectancy: avg_trade_return_pct sa -4.194% kumpara sa +0.15% OKX futures floor; mas malaki ang hatak pababa ng funding kaysa sa maliit na positibong price PnL, kaya itinuring na walang sapat na batayan ang dalawang oras na optimization. Ayon sa analyst, para lamang sa crypto-perp port na ito at sa idinagdag nitong rebalance tolerance ang hatol, hindi para sa orihinal na futures-universe strategy ng Quantiacs.

Tapat na port ng futures trend-following strategy ng Quantiacs na lisensyado sa ilalim ng MIT (WMA200, 20-araw na ROCP ng WMA, ±2% sideways band, long/short state machine kada asset) papunta sa daily basket na magkakapantay ang timbang at binubuo ng 7 OKX USDT perp (BTC, ETH, SOL, ADA, LINK, BCH, TRX), na may 1.0x leverage at idinagdag na 20% rebalance tolerance.

Sa loob ng 1,725 araw na sinuri (2022-01-19 hanggang 2026-10-09), nagsara ito ng 58 position para sa kabuuang return na -15.57% (CAGR -3.52%), Sharpe na 0.19, profit factor na 0.920, win rate na 36.2% at avg_trade_return_pct -4.194%, kasama ang max drawdown na 64.31%. Magkatugma sa trade record ang +$2,348.73 na price PnL at -$17,922.24 na funding.

Pagsusuri

strategy-futures-trend-following

Pagsusuri

strategy.ipynb

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.