Lumaktaw papunta sa nilalaman
Lahat ng estratehiya

Mga Estratehiya

BTC Perp Passive Two-Sided Market-Making, Inventory-Neutral Maker-Spread Capture (Single-Instrument BTCUSDT.BINANCE USD-M — Paglalagay ng LIMIT Bid/Ask sa Paligid ng Fair-Value Anchor, Kita sa Spread + 0.02% Maker Economics, Pag-skew ng Quote para Ibalik ang Inventory, Mahigpit na Inventory Cap, 3-Parameter)

Resulta: Inabandona

BtcPerpPassiveTwoSidedMarketMakingInventoryNeutral

BTC Perp Passive Two-Sided Market-Making, Inventory-Neutral Maker-Spread Capture (Single-Instrument BTCUSDT.BINANCE USD-M — Paglalagay ng LIMIT Bid/Ask sa Paligid ng Fair-Value Anchor, Kita sa Spread + 0.02% Maker…

Hypothesis

Isang market-NEUTRAL, SINGLE-INSTRUMENT LIQUIDITY-PROVISION (market-making) na estratehiya sa BTCUSDT.BINANCE USD-M — isang lubhang naiibang klase ng MECHANISM kumpara sa lahat ng nasa batch ko at sa portfolio, na pawang TAKERS (momentum, reversal, carry, factor, event). Sa halip na hulaan ang direksiyon, PROVIDES ito ng liquidity: tuluy-tuloy itong naglalagay ng passive na bid na LIMIT nang bahagya sa ibaba at passive na ask na LIMIT nang bahagya sa itaas ng anchor na fair-value, na naglalayong mapunan sa……Magpakita ng higit paMagpakita ng mas kaunti

Isang market-NEUTRAL, SINGLE-INSTRUMENT LIQUIDITY-PROVISION (market-making) na estratehiya sa BTCUSDT.BINANCE USD-M — isang lubhang naiibang klase ng MECHANISM kumpara sa lahat ng nasa batch ko at sa portfolio, na pawang TAKERS (momentum, reversal, carry, factor, event). Sa halip na hulaan ang direksiyon, PROVIDES ito ng liquidity: tuluy-tuloy itong naglalagay ng passive na bid na LIMIT nang bahagya sa ibaba at passive na ask na LIMIT nang bahagya sa itaas ng anchor na fair-value, na naglalayong mapunan sa magkabilang panig sa paglipas ng panahon at makuha ang bid-ask spread PLUS kasama ng paborableng maker economics (maker fee ng Binance na USD-M 0.02% kumpara sa taker na 0.05% — bilang maker, PAYS ito nang mas kaunti at ang edge nito ay ang round-trip spread na kinikita nito, na bumabaligtad sa problemang fee_edge na pumapatay sa mga taker strategy: dito, ang mga fee/spread ang INCOME, hindi ang pabigat). Nakabatay ito sa inventory-NEUTRAL: pagkatapos ng fill, SKEWS nito ang mga quote (ibinababa ang dalawang quote kapag net-long, itinataas ang mga ito kapag net-short) upang hikayatin ang kabaligtarang fill at ibalik ang inventory patungo sa zero; nagpapatupad din ito ng HARD na limitasyon sa inventory kasama ang proteksiyon na stop upang hindi makabuo ng malaking posisyong nakataya sa iisang direksiyon ang sunod-sunod na galaw sa isang panig (di-gaya ng grid, na nag-ipon ng directional bag at tinanggihan dahil sa panganib — aktibo nitong nilalayon ang zero inventory at mahigpit itong nililimitahan). Iisa lamang ang instrumento nito sa BTC (pinakamalalim, pinakamakitid ang spread, at pinakapatuloy-tuloy ang order book, kaya madalas mapunan sa magkabilang panig at pinakamababa ang adverse selection), iisang venue, at mababa ang leverage. Dahil maker strategy ito, nagmumula ang kakayahang kumita sa maraming maliliit na pagkuha ng spread, kaya kailangang imodelo ng disenyo ang mga fill CONSERVATIVELY (napupunan lang ang limit order kapag ang presyo ay nakipagkalakalan nang THROUGH dito nang may margin, at itinatala nito ang adverse selection kapag patuloy na gumagalaw ang merkado pagkatapos ng fill) upang maiwasan ang sobrang optimistikong backtest. Mga parameter ng 3 (paglihis ng quote mula sa anchor, tindi ng inventory-skew, limitasyon sa inventory).

backtest_failed:timeout: hindi napagana ang buong backtest nang 3 beses — run_subprocess_impl_inner(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/opt/strategy-factory/src/backtesting/subprocess_runner.py", line 365, in _run_subprocess_impl_inner raise RuntimeError( RuntimeError: Lumampas ang subprocess backtest sa pinakamahabang wall time na 7200s Pagkabigo ito sa pipeline/data, hindi hatol sa strategy; subukang muli kapag naayos na ang sanhi.

Implementasyon

Passive na two-sided market-making sa BTCUSDT.BINANCE USD-M perp (15-minute bar). Sa bawat bar, pinananatili ng strategy ang POST-ONLY LIMIT bid sa anchor*(1 - quote_offset - shift) at POST-ONLY LIMIT ask sa anchor*(1 + quote_offset - shift), kung saan ang anchor ay fair value na EMA(anchor_period) at shift = skew_intensity * (inventory / inventory_cap) * quote_offset. Inventory-REVERTING ang skew: inililipat pababa ang dalawang quote kapag net long para maunang mapunan ang offsetting ask, at inililipat pataas……Magpakita ng higit paMagpakita ng mas kaunti

Passive na two-sided market-making sa BTCUSDT.BINANCE USD-M perp (15-minute bar). Sa bawat bar, pinananatili ng strategy ang POST-ONLY LIMIT bid sa anchor*(1 - quote_offset - shift) at POST-ONLY LIMIT ask sa anchor*(1 + quote_offset - shift), kung saan ang anchor ay fair value na EMA(anchor_period) at shift = skew_intensity * (inventory / inventory_cap) * quote_offset. Inventory-REVERTING ang skew: inililipat pababa ang dalawang quote kapag net long para maunang mapunan ang offsetting ask, at inililipat pataas kapag net short. Sa bawat panig, hanggang sa natitirang kapasidad lamang patungo sa HARD inventory cap ang nilo-quote (inventory_cap_mult clip), para hindi makabuo ng malaking direksiyonal na posisyon ang sunod-sunod na fill sa iisang panig. Nililimitahan din ang dalawang quote nang hindi bababa sa min_edge (0.08%) mula sa huling trade, kaya hindi kailanman sila tatawid (tatanggihan bilang post-only) at lalampas sa 0.04% maker round-trip fee ang bawat nakuhang round trip. Isinasara sa pamamagitan ng taker market order ang natitirang inventory na nalulugi nang higit sa stop_loss_pct (tahasang halaga ng adverse selection). Kinakansela at muling inilalagay ang mga quote kapag lumihis lang ang anchor nang higit sa requote_band * quote_offset o nagbago ang inventory, para mapanatiling mababa ang churn ng order — at ang mga fill na likha nito.

ITERATION 3 FIX — iniulat na pagkabigo ng Layer 1 static analysis ang “No class extending FactoryStrategy found” at nawawala ang lahat ng apat na kailangang method; ibig sabihin, walang nagagamit na class body ang naunang submission. Kumpleto at self-contained na module ang submission na ito: iisang class na `BtcPerpPassiveTwoSidedMarketMakingInventoryNeutral(FactoryStrategy)`, na may aktuwal na implementasyon ng lahat ng apat na kailangang method (calculate_signal ay nagbabalik ng tuloy-tuloy na price-vs-anchor……Magpakita ng higit paMagpakita ng mas kaunti

ITERATION 3 FIX — iniulat na pagkabigo ng Layer 1 static analysis ang “No class extending FactoryStrategy found” at nawawala ang lahat ng apat na kailangang method; ibig sabihin, walang nagagamit na class body ang naunang submission. Kumpleto at self-contained na module ang submission na ito: iisang class na `BtcPerpPassiveTwoSidedMarketMakingInventoryNeutral(FactoryStrategy)`, na may aktuwal na implementasyon ng lahat ng apat na kailangang method (calculate_signal ay nagbabalik ng tuloy-tuloy na price-vs-anchor deviation sa quote-offset units at ginagamit sa pag-quote; nagbabalik ng None ang should_enter dahil ang mga entry ng maker ay ang resting POST-ONLY limit quote nito, sa halip na ang base market-order path; taglay ng should_exit ang adverse-selection stop; ibinabalik ng position_size ang clip quantity sa bawat quote, na nakaayon sa kapital sa pamamagitan ng get_account_equity() at ginagamit ng quoting code). Limitado ang mga import sa stdlib decimal, numpy at nautilus_trader — walang ipinagbabawal na import. Pinatakbo ko ang StaticAnalyzer ng repo sa file na ito: passed=True at walang error (tatlong di-nakaaapekto na babala lang na “division by variable,” at bawat isa ay may tahasang zero guard sa naunang linya). Sa mekanismo, eksaktong ipinapatupad nito ang hypothesis: passive na two-sided quoting sa paligid ng fair-value anchor, maker economics (post_only=True para palaging maker fill ang fill sa 0.020%), quote skew na nagpapabalik ng inventory, mahigpit na inventory cap sa bawat panig, at proteksiyon na pagsasara ng posisyon. Konserbatibo ang pagtrato sa fill ayon sa hinihingi ng hypothesis: nakapuwesto ang mga quote sa labas ng LAGGING EMA anchor (hindi kailanman sa touch) at may minimum na layo na min_edge mula sa huling trade, kaya kailangang tumawid ang galaw ng market sa quote bago magkaroon ng fill; pinupunan lang ng fill model ng venue ang resting limit na may probability na 0.9. Sadyang 15-MINUTE bar ang gamit (hindi 1-minute): makatotohanang layo ng paglusot ang 0.30% quote offset kaya nagkakahalaga ng ~0.6% gross ang bawat round trip kumpara sa 0.04% maker fee, at nananatili sa ~35k bar ang 365-day sandbox para hindi mag-time out ang Layer-3 subprocess. Nananatili sa 1.0 ang leverage at binabasa pa rin ito sa position_size para tama ang pag-scale ng clip kapag itinaas ito sa hinaharap. Isang tapat na paalala: hindi kayang imodelo ng bar-driven backtest ang queue position, kaya mas mataas sa live ang magiging aktuwal na maker fill rate — ang min_edge floor, post-only, mababang requote churn at taker stop ang mga mitigasyong magagamit sa layer na ito.

Mga Resulta ng Beripikasyon

Nabigo ang beripikasyon (Layer 4 — pagsusuri ng QA) [class=not_measurable]: - [edge_concern] Nakadepende ang edge ng estratehiya sa pagkuha ng maker spread NET ng puwesto sa pila at adverse selection, na hindi masusukat nang wasto rito: sa backtest na gumagamit ng mga bar na 15 minuto, walang lalim ng order book, pagkakasunod-sunod ng tick, o modelo ng pila, kaya napupunan ang resting post-only limit tuwing tumatawid dito ang saklaw ng isang bar, at sistematikong OVERSTATING ang mga maker fill (inaamin ng……Magpakita ng higit paMagpakita ng mas kaunti

Nabigo ang beripikasyon (Layer 4 — pagsusuri ng QA) [class=not_measurable]: - [edge_concern] Nakadepende ang edge ng estratehiya sa pagkuha ng maker spread NET ng puwesto sa pila at adverse selection, na hindi masusukat nang wasto rito: sa backtest na gumagamit ng mga bar na 15 minuto, walang lalim ng order book, pagkakasunod-sunod ng tick, o modelo ng pila, kaya napupunan ang resting post-only limit tuwing tumatawid dito ang saklaw ng isang bar, at sistematikong OVERSTATING ang mga maker fill (inaamin ng developer na “optimistic kumpara sa live”). Kaya magiging artifact ng fill model ang anumang positibong resulta. At kahit gamit ang gayong optimistikong mga fill, LOSES ito nang malinaw, taglay ang karaniwang palatandaan ng adverse selection: -13.8% return, Sharpe -1.98, PF 0.80, win_rate 0.78 pero avg_loss $353 kumpara sa avg_win $81 (4.4x), komisyon na 19.4% ng gross sa loob ng 853 trade — hindi sapat ang maliliit na nakuhang spread para tumbasan ang mga biglang paggalaw laban sa posisyon at mga bayarin, at mas malala pa sa live. Huwag NOT hayaang habulin ng optimizer ang artifact ng bar-fill: artifact ng simulation ang anumang cell na “kumikita” dahil hindi kayang imodelo ng pipeline ang microstructure na pinagmumulan ng edge. - UNMEASURABLE MAKER EDGE. Ang kakayahang kumita sa passive market-making ay spread bawas adverse selection bawas bayarin — pawang microstructure. Gumagamit ang backtest ng mga bar na 15m OHLC, at naka-off ang lahat ng subscription sa order book, quote, at trade, kaya walang paraan para malaman kung mapupunan ang resting quote batay sa puwesto nito sa pila o kung magkano talaga ang halaga ng adverse selection. Sobra ang tantiya ng mga fill na nakabatay sa bar sa dami ng maker fill at hindi nito mapapatunayan ang maker edge; makatwirang panlaban ang min_edge/post-only/mababang churn/taker-stop, pero hindi nito ginagawang wastong maker simulator ang mga bar. Nalulugi na ang sandbox sa ilalim ng mga optimistikong palagay na ito, at hindi mapagkakatiwalaan ang anumang positibong resulta ng bar para sa klaseng ito. Ihinto muna ang klaseng ito hanggang may L2/tick + simulation na may modelo ng pila; huwag mag-optimize gamit ang mga bar.

Kasaysayan ng Iterasyon

Nabigo ang beripikasyon (Layer 3 — sandbox backtest): lumampas sa limitasyong 300s ang smoke test. Karaniwan itong nangangahulugan ng gawaing inuulit sa bawat bar at lumalaki kasabay ng haba ng history — halimbawa, muling pag-scan sa buong funding/supplementary series, o muling pagbuo ng listahan at pagtawag sa min()/sorted() sa loob ng calculate_signal()/on_bar() sa bawat bar. I-precompute ang mga nakaayos na timestamp array na ONCE sa __init__ at gumamit ng bisect, o i-cache ang mga lookup batay sa timestamp, para maging O(log n) sa halip na O(n) ang gastos sa bawat bar.

Nabigo ang beripikasyon (Layer 1 — static analysis): - Walang class na nag-e-extend sa FactoryStrategy (line None) - Hindi naipatupad ang kailangang method: calculate_signal (line None) - Hindi naipatupad ang kailangang method: should_enter (line None) - Hindi naipatupad ang kailangang method: should_exit (line None) - Hindi naipatupad ang kailangang method: position_size (line None)

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.