What is wrong
bybit_category in crates/moon-core/src/market/trade_replay/venue_caps.rs classifies a Bybit futures market as linear only when the parsed quote is USDT or USDC. Every other quote, including an empty one, becomes inverse.
crates/moon-core/src/symbol/parse.rs documents Bybit USDC perpetuals as BTCPERP. That name has no quote suffix, so resolve_quote_on returns an empty quote and bybit_category answers inverse.
Bybit serves BTCPERP on category=linear. An inverse request is rejected with retCode 10001, and the trade window then reports that the market does not exist.
What this is not
BTCUSD (coin-margined) staying inverse, and BTCUSDT / BTCUSDC staying linear, match the comment on bybit_category. This report is only the BTCPERP spelling.
No production change is attached. A test that asserted BTCPERP -> inverse would freeze the wrong category.
What is wrong
bybit_categoryincrates/moon-core/src/market/trade_replay/venue_caps.rsclassifies a Bybit futures market aslinearonly when the parsed quote isUSDTorUSDC. Every other quote, including an empty one, becomesinverse.crates/moon-core/src/symbol/parse.rsdocuments Bybit USDC perpetuals asBTCPERP. That name has no quote suffix, soresolve_quote_onreturns an empty quote andbybit_categoryanswersinverse.Bybit serves
BTCPERPoncategory=linear. An inverse request is rejected withretCode 10001, and the trade window then reports that the market does not exist.What this is not
BTCUSD(coin-margined) stayinginverse, andBTCUSDT/BTCUSDCstayinglinear, match the comment onbybit_category. This report is only theBTCPERPspelling.No production change is attached. A test that asserted
BTCPERP->inversewould freeze the wrong category.