Lumaktaw papunta sa nilalaman
Lahat ng estratehiya

Mga Estratehiya

Hummingbot SimplePMM (tapat na port): simetrikong 10 bp maker quote sa palibot ng ETHUSDT mid, kanselahin at palitan kada 15 s, nakapirming 0.01 ETH sa bawat panig (ETHUSDT.BINANCE USD-M, quote ticks)

Resulta: Inabandona

EthSimplePmmMakerQuotes

Buod ng Resulta

Tinangka ng EthSimplePmmMakerQuotes na i-port ang script na SimplePMM ng Hummingbot sa ETHUSDT.BINANCE USD-M perp, gamit ang leverage na 1.0, at maglagay ng maker bid at ask na 10 bp kada 15 s. Pinili ang perp sa halip na spot para makapag-quote sa magkabilang panig mula sa panimulang walang posisyon, at dahil mabubura ng 0.10% maker fee ng spot ang buong spread. Isinulat muli ng developer ang hakbang na kanselahin at palitan bilang mga pagbabago sa umiiral na order para bawasan ang mga event ng engine, pero naipit pa rin ang run sa coding dahil sa 3 timeout sa loob ng 3 pag-ulit. Inabandona ito bago naganap ang anumang backtest, optimization o pagsusuri ng analyst, kaya walang datos ng performance.

Hypothesis

Isang tapat na paglalahad ng script na 'SimplePMM' ng Hummingbot (BotCamp Cohort Sept 2022, Apache-2.0; pagkilala: hummingbot, https://github.com/hummingbot/hummingbot/blob/9af100d6822da7d2d0291a906c730ef172284ee2/scripts/simple_pmm.py). Isa itong tunay na estratehiya sa pangangalakal: isang purong passive market maker na walang signal, walang kontrol sa inventory, walang stop at walang limitasyon sa posisyon. Mga tuntunin sa source, kasama ang mga default gaya mismo ng pagkakasulat: trading_pair ETH-USDT;……Magpakita ng higit paMagpakita ng mas kaunti

Isang tapat na paglalahad ng script na 'SimplePMM' ng Hummingbot (BotCamp Cohort Sept 2022, Apache-2.0; pagkilala: hummingbot, https://github.com/hummingbot/hummingbot/blob/9af100d6822da7d2d0291a906c730ef172284ee2/scripts/simple_pmm.py). Isa itong tunay na estratehiya sa pangangalakal: isang purong passive market maker na walang signal, walang kontrol sa inventory, walang stop at walang limitasyon sa posisyon. Mga tuntunin sa source, kasama ang mga default gaya mismo ng pagkakasulat: trading_pair ETH-USDT; order_amount = 0.01 ETH; bid_spread = 0.001 (10 bp); ask_spread = 0.001 (10 bp); order_refresh_time = 15 segundo; price_type = 'mid' (MidPrice; inililipat ng 'last' ang sanggunian sa LastTrade). Sa bawat tick, kapag create_timestamp <= now: (1) kanselahin ang ALL aktibong order sa pares; (2) ref_price = mid price (o presyo ng huling trade kung price_type == 'last'); (3) bumuo ng LIMIT BUY na order_amount sa ref_price*(1 - bid_spread) at LIMIT SELL na order_amount sa ref_price*(1 + ask_spread), kapwa minarkahang is_maker=True; (4) patakbuhin ang tagasuri ng budget na may all_or_none=True (bawat order ay pananatilihin sa buong laki o aalisin kung hindi ito kayang pondohan ng account; walang bahagyang pagbabago ng laki); (5) ilagay ang mga order na nakaligtas; (6) itakda ang create_timestamp = now + order_refresh_time. did_fill_order ay nagtatala lamang; Hindi NOT binabago ng mga fill ang pag-quote. Malayang naiipon ang inventory sa alinmang direksiyong matapatan ng mga fill. VENUE CHOICE (ang isang pag-aangkop): tumatakbo ang source sa spot na binance_paper_trade, kung saan nagsisimula ang paper account na may BOTH ETH at USDT, kaya palaging naglalagay ng quote sa magkabilang panig. Sa aming account na BINANCE_SPOT CASH, nagsisimula ang estratehiya sa USDT lamang, kaya aalisin ng pagsusuri ng budget ang sell quote hanggang mapunan ang isang buy, at magiging mamimili ng pagbaba ng presyo sa isang panig ang bot. Ang bayarin ng spot maker ay 0.10% rin sa bawat panig, kaya ang buong round trip na 10 bp + 10 bp ay kumikita ng 0.20% gross laban sa 0.20% na bayarin ng maker: walang edge dahil sa pagkakabuo nito. Pinananatili ng Binance USD-M perp (ETHUSDT.BINANCE, MARGIN, maker 0.02%) na maaaring lagyan ng quote ang magkabilang panig mula sa panimulang walang posisyon, na tumutugma sa dalawang-panig na gawi ng source, na may leverage na 1.0. Pinili ang ETHUSDT dahil binabanggit ng source ang ETH-USDT; espesipiko sa venue/pair ang mekanismo, kaya tinatanggap dito ang konsentrasyon ng corpus na ETH/BINANCE at itinatala.

Inaayos ng Iteration 2 ang timeout ng Layer-3 sandbox (aral na L155, opsyon (c): gastos kada bar). Tatlong pagbabago; hindi ginalaw ang mga tuntunin sa pag-quote: (1) tahasang naka-off ang lahat ng subscription sa tick; sa pagsasara lang ng bar naglalagay ng quote ang strategy, kaya walang tick stream na nilo-load. (2) Nagbago ang pagitan ng bar mula 1-MINUTE tungo sa 5-MINUTE. Mas maikli ang pag-refresh na 15 s kaysa sa anumang bar, kaya naglalagay muli ng quote ang port sa bawat bar sa alinmang kaso;……Magpakita ng higit paMagpakita ng mas kaunti

Inaayos ng Iteration 2 ang timeout ng Layer-3 sandbox (aral na L155, opsyon (c): gastos kada bar). Tatlong pagbabago; hindi ginalaw ang mga tuntunin sa pag-quote: (1) tahasang naka-off ang lahat ng subscription sa tick; sa pagsasara lang ng bar naglalagay ng quote ang strategy, kaya walang tick stream na nilo-load. (2) Nagbago ang pagitan ng bar mula 1-MINUTE tungo sa 5-MINUTE. Mas maikli ang pag-refresh na 15 s kaysa sa anumang bar, kaya naglalagay muli ng quote ang port sa bawat bar sa alinmang kaso; binabawasan ng mga bar na 5m ang bilang ng bar sa sandbox at ang pagpapalit-palit ng order nang humigit-kumulang 2-5x. Kapalit nito, nananatili ang mga quote nang 5 minuto sa pagitan ng mga pag-refresh sa halip na 15 s. (3) Pinalitan ang magkakasunod na pagkansela at pagpapalit ng order ng pagbabago sa mismong modify_order ng quote na nakatengga pa sa bawat panig. Sa simulated na order book, magkapareho ito sa usaping pang-ekonomiya (parehong panig, bagong presyo, bagong laki), pero kailangan nito ng 2 engine event bawat panig sa halip na humigit-kumulang 5. Binibigyan ng bagong order ang panig na napunan o bahagyang napunan; kinakansela naman ang panig na inalis ng pagsusuri sa budget. Ang gawain kada bar ay O(open orders) = O(1), nang walang pag-scan sa kasaysayan. Hindi nagbabago ang iba pang pag-aangkop sa platform: pagsasara ng bar (huling trade) ang sanggunian dahil walang L1 mid sa antas ng bar; order_amount ang 1% ng equity sa halip na nakapirming 0.01 ETH; at pinananatiling maaaring maglagay ng quote sa magkabilang panig mula sa panimulang walang posisyon ang perp venue. Tapat na paalala: napupunan ang mga quote na 10 bp sa mga bar na 5m kapag may galaw na di-paborable, nang walang kontrol sa inventory, kaya malamang na manipis ang edge matapos ang 0.02% maker fee.

coding_stuck_3_timeouts

Implementasyon

Tapat na port ng Hummingbot SimplePMM sa ETHUSDT.BINANCE USD-M perp: sa bawat pag-refresh, alisin ang lahat ng quote at maglagay ng post-only na LIMIT BUY sa ref*(1-10bp) at LIMIT SELL sa ref*(1+10bp), bawat isa ay 1% ng equity, na may pagsusuri sa margin budget na dapat pumasa ang lahat o wala; hindi binabago ng mga fill ang pag-quote at malayang naiipon ang inventory.

Kasaysayan ng Iterasyon

sandbox_timeout: Nabigo ang beripikasyon (Layer 3 — sandbox backtest): lumampas sa limitasyong 300s ang smoke test sa humigit-kumulang 20000-bar na saklaw (30 araw ng ETHUSDT.BINANCE-1-MINUTE-LAST-EXTERNAL). Halos palaging nangangahulugan ito ng gawaing kada bar na lumalaki kasabay ng kasaysayan — halimbawa, muling pag-scan sa buong serye ng funding/supplementary, o muling pagbuo ng listahan at pagtawag sa min()/sorted() sa loob ng calculate_signal()/on_bar() sa bawat bar. Paunang kalkulahin ang mga nakaayos na hanay ng timestamp ONCE sa __init__ at gamitin ang bisect, o i-cache ang mga lookup ayon sa timestamp, para O(log n) sa halip na O(n) ang gastos kada bar.

sandbox_timeout: Nabigo ang beripikasyon (Layer 3 — sandbox backtest): lumampas sa limitasyong 300s ang smoke test sa humigit-kumulang 20000-bar na saklaw (69 araw ng ETHUSDT.BINANCE-5-MINUTE-LAST-EXTERNAL). Halos palaging nangangahulugan ito ng gawaing kada bar na lumalaki kasabay ng kasaysayan — halimbawa, muling pag-scan sa buong serye ng funding/supplementary, o muling pagbuo ng listahan at pagtawag sa min()/sorted() sa loob ng calculate_signal()/on_bar() sa bawat bar. Paunang kalkulahin ang mga nakaayos na hanay ng timestamp ONCE sa __init__ at gamitin ang bisect, o i-cache ang mga lookup ayon sa timestamp, para O(log n) sa halip na O(n) ang gastos kada bar.

Buod ng Resulta

Kapag muling nagtatakda ng presyo kada 15 s ang isang market maker, napakaraming event ng order ang nalilikha sa datos na quote-tick. Kaya sa susunod na pagsubok, dapat munang tiyakin na matatapos ang code sa loob ng takdang oras para sa coding at beripikasyon (halimbawa, sa pamamagitan ng mas kaunting requote o mas magaspang na datos).

Inabandona ito sa yugto ng coding dahil sa “coding_stuck_3_timeouts” matapos ang 3 pag-ulit. Hindi ito umabot sa pagsusuri ng backtest, optimization, pagsusuri ng analyst o pagsusuri ng panganib.

Tapat na port ng SimplePMM ng Hummingbot: purong passive market maker na naglalagay ng simetrikong 10 bp post-only maker quote sa palibot ng reference price na ETHUSDT sa Binance USD-M perp. Kinansela at pinalitan ang mga quote kada 15 segundo, nang walang signal, kontrol sa inventory, stop o limitasyon sa posisyon.

Walang bilang ng performance. Walang laman ang ulat ng backtest at walang ulat ng optimization, kaya hindi nakagawa ang strategy ng return, Sharpe ratio o bilang ng trade.

Pagsusuri

SimplePMM

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.