Lumaktaw papunta sa nilalaman
Lahat ng estratehiya

Mga Estratehiya

Hummingbot PMM V1 (pure market making, ng hummingbot) — tapat na port sa BTCUSDT.BINANCE_SPOT, 1 buy + 1 sell limit level sa mid ±1%, 30s na refresh, 60s na delay matapos ang fill, naka-OFF ang inventory skew (mga default ng source)

Resulta: Inabandona

HummingbotPmmV1BtcSpot

Buod ng Resulta

Sinubukan ng hypothesis na ito na i-port ang symmetric limit-order market maker na PMM V1 ng Hummingbot sa BTCUSDT spot ng Binance. Sapilitan lang ang mga pagbabago sa platform: nakapirming sizing sa 25% ng panimulang equity, refresh sa bawat 1-minutong bar, at mga pagsusuri sa spot balance. Hindi natapos ng strategy ang coding: matapos ang 3 pag-ulit, inabandona ang run dahil sa dahilan na 'coding_stuck_3_timeouts'. Walang nagawang backtest, optimization o hatol ng analyst.

Hypothesis

Tapat na salin ng controller na PMM V1 ng Hummingbot (credit: hummingbot, Apache-2.0). Tunay itong naitetrade na strategy (symmetric limit-order market maker), hindi utility. Mga default ng source: connector na 'binance' (SPOT connector) at trading_pair 'BTC-USDT', kaya ginagamit natin ang BTCUSDT.BINANCE_SPOT (CASH account, long-only na inventory, maker fee na 0.10% bawat fill). Eksakto sa pagkakasulat ang mga default: order_amount = 1 (base asset), buy_spreads = [0.01], sell_spreads = [0.01] (isang level bawat……Magpakita ng higit paMagpakita ng mas kaunti

Tapat na salin ng controller na PMM V1 ng Hummingbot (credit: hummingbot, Apache-2.0). Tunay itong naitetrade na strategy (symmetric limit-order market maker), hindi utility. Mga default ng source: connector na 'binance' (SPOT connector) at trading_pair 'BTC-USDT', kaya ginagamit natin ang BTCUSDT.BINANCE_SPOT (CASH account, long-only na inventory, maker fee na 0.10% bawat fill). Eksakto sa pagkakasulat ang mga default: order_amount = 1 (base asset), buy_spreads = [0.01], sell_spreads = [0.01] (isang level bawat panig, mga level ID na 'buy_0' at 'sell_0'), order_refresh_time = 30 s, order_refresh_tolerance_pct = -1 (naka-disable, kaya nire-refresh ang lahat), filled_order_delay = 60 s, inventory_skew_enabled = False, target_base_pct = 0.5, inventory_range_multiplier = 1.0, price_ceiling = -1 at price_floor = -1 (parehong naka-disable). Mid price ang reference price. Sa platform natin na bar lang ang mayroon, mid = close ng pinakabagong 1-MINUTE bar (ang pinakamaliit na bar na mayroon tayo na may history na ilang taon; hindi maaaring kopyahin sa loob ng maraming taon ang mid ng order book). Karaniwang LIMIT order ang bawat order (wala sa source ang post-only, kaya hindi ito idinagdag). PLATFORM ADAPTATIONS (ang mga ito lang, at sapilitan lahat): (1) Sizing. Nasa o lampas sa buong panimulang kapital na $100k ang 1 BTC, kaya itinatakda ang order_amount sa ONCE sa simula bilang nakapirming base quantity na katumbas ng 0.25 × panimulang equity / unang close (humigit-kumulang 25% ng equity bawat level), at pinananatili itong FIXED sa base units, gaya ng ginagawa ng source. Parameter na 'order_amount_equity_frac' = 0.25. (2) Orasan. Mas maikli o katumbas ng isang 1m bar ang 30 s na refresh at 60 s na fill delay. Kaya nagaganap ang refresh sa bawat pagsara ng bar (kanselahin ang anumang hindi napunang nakaabang na order na mas luma sa 30 s, ibig sabihin, sa bawat bar), at hindi maaaring mag-quote muli ang isang level na napunan hanggang lumipas ang 60 s mula sa fill (nilalaktawan nito ang susunod na pagsara ng bar). (3) Spot balance. Tinatanggihan ng spot connector ng Hummingbot ang sell na mas malaki sa base balance at buy na mas malaki sa quote balance. Kaya inilalagay lang ang sell_0 order kapag base held >= order_amount (kung hindi, nilalaktawan ang level sa bar na iyon), at ang buy_0 lang kapag free USDT >= order_amount × price × 1.001. Nagsisimula ang backtest sa 100% USDT, kaya dapat magsimula sa buy fill ang unang round trip. Walang stop-loss, take-profit o time exit ang source. Walang idinagdag dahil hindi na ito magiging tapat na port kapag nagdagdag nito.

Pag-aayos sa Iteration 2 para sa pagkabigo sa Layer 2. Walang orders_inflight() o account_for_venue() method ang mock cache na ginamit sa synthetic tests. Gumagamit na ngayon ang code ng getattr para tingnan ang mga ito at nilalaktawan kapag wala. Nasa tunay na NautilusTrader cache ang dalawang method, kaya walang pagbabago sa backtest at paper trading. Wala nang iba pang binago. Gaya pa rin ng dati ang mga pag-aangkop sa platform: pumapalit ang pagsasara ng bar sa mid ng order book, tumatakbo ang refresh at fill delay ayon sa orasan ng bar, itinatakda ang nakapirming base order amount mula sa equity, at nakabatay sa spot balance ang bawat panig. Alalahanin ang panganib sa gilid: 1% ang mga spread at nagbabayad ng 0.10% maker fee ang bawat fill, kaya kikita lang ang strategy kung pabalik-balik ang galaw ng BTC sa saklaw na humigit-kumulang 2%. Sa iisang direksiyong trend, maiiwan itong may hawak na BTC o cash sa isang panig.

coding_stuck_3_timeouts

Implementasyon

Tapat na port ng Hummingbot PMM V1 (pure market making) sa BTCUSDT spot, gamit ang pagsasara ng 1-minutong bar bilang mid price. Naglalagay ito ng isang GTC limit buy sa mid × (1 − 1%) at isang GTC limit sell sa mid × (1 + 1%). Kinakansela nito ang mga nakaabang na quote at naglalagay ng bago sa bawat bar, dahil mas maikli sa isang bar ang 30 s na refresh. Pagkatapos ng fill, naghihintay ang panig na iyon ng 60 s bago muling mag-quote. Nakapirmi ang base quantity ng order at itinatakda ito minsan sa simula: 25% ng panimulang equity na hinati sa unang close. Naka-off ang inventory skew at naka-disable ang mga price band, gaya ng nasa source. Naglalagay lang ng buy kung sapat ang malayang USDT, at ng sell kung sapat ang hawak na BTC.

Kasaysayan ng Iterasyon

Nabigo ang beripikasyon (Layer 2 — synthetic scenarios): Mga parameter na ginamit: ['buy_spread', 'price_floor', 'sell_spread', 'price_ceiling', 'filled_order_delay', 'order_refresh_time', 'quote_balance_buffer', 'order_amount_equity_frac'] Tiyaking itinatakda ng __init__ ang lahat ng attribute mula sa self.parameters.get(). - steady_uptrend: AttributeError: walang attribute na 'orders_inflight' ang '_MockCache' (timestamp ng bar: 1735689660000) - steady_downtrend: AttributeError: walang attribute na 'orders_inflight' ang '_MockCache' (timestamp ng bar: 1735689660000) - flat_ranging: AttributeError: walang attribute na 'orders_inflight' ang '_MockCache' (timestamp ng bar: 1735689660000) - volatility_spike: AttributeError: walang attribute na 'orders_inflight' ang '_MockCache' (timestamp ng bar: 1735689660000) - zero_volume: AttributeError: walang attribute na 'orders_inflight' ang '_MockCache' (timestamp ng bar: 1735689660000) - price_gap: AttributeError: walang attribute na 'orders_inflight' ang '_MockCache' (timestamp ng bar: 1735689660000)

sandbox_timeout: Nabigo ang beripikasyon (Layer 3 — sandbox backtest): lumampas sa 300s na wall-clock limit ang smoke test sa humigit-kumulang 20000-bar na window (30 araw ng BTCUSDT.BINANCE_SPOT-1-MINUTE-LAST-EXTERNAL). Halos palaging nangangahulugan ito ng gawaing kada bar na lumalaki kasabay ng history — halimbawa, muling pag-scan sa buong funding/supplementary series, o muling pagbuo ng list at pagtawag sa min()/sorted() sa loob ng calculate_signal()/on_bar() sa bawat bar. Paunang kalkulahin ang mga nakaayos na timestamp array ONCE sa __init__ at gumamit ng bisect, o mag-cache ng mga lookup ayon sa timestamp, para O(log n) sa halip na O(n) ang gastos kada bar.

Buod ng Resulta

Sapat ang pagiging komplikado ng mga port na mabigat sa pamamahala ng order (kanselahin/mag-quote muli sa bawat bar, maghintay ng pagkilala sa kanselasyon, at tingnan ang spot balance) para mag-time out ang yugto ng coding. Dapat magsimula ang susunod na pagtatangka sa mas simple at maliit na implementasyong matatapos sa takdang oras ng coding.

Inabandona ang run sa yugto ng coding dahil sa dahilan na 'coding_stuck_3_timeouts' matapos ang 3 pag-ulit, kaya hindi na umabot sa beripikasyon, pagsusuri ng backtest, optimization, pagsusuri ng analyst at pagsusuri ng panganib.

Tapat na port ng PMM V1 pure market maker ng Hummingbot sa BTCUSDT.BINANCE_SPOT, gamit ang 1-minutong bar at naglalagay ng isang buy at isang sell limit order sa mid ±1%. Nagre-refresh sa bawat bar, naghihintay ng 60 s matapos ang fill bago muling mag-quote, walang inventory skew, at walang stop-loss, take-profit o time exit.

Walang datos ng performance: walang laman ang ulat ng backtest at walang optimization report, kaya walang naitalang return, Sharpe o bilang ng trade.

Pagsusuri

PMMV1

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.