You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
WebullFeeModel charges SPXW options the SPX exchange fee #9922
WebullFeeModel charges SPXW (weekly SPX) index options the SPXW exchange fee: $1.00 per contract below $1 and $1.09 at $1 or more, including the $0.50 Webull fee.
Actual Behavior
They are charged the SPX rate ($1.07 / $1.16), so every SPXW fill costs $0.07 more per contract. That matters most for 0DTE strategies, which trade SPXW heavily.
GetIndexOptionFee picks the tier from security.Symbol.Underlying.Value. For a real SPXW contract (AddIndexOption("SPX", "SPXW")) the underlying is the SPX index, so the "SPXW" case is never reached. The existing tests build an index named "SPXW" as the underlying, which doesn't happen in practice. VIXW and NDXP resolve to VIX and NDX the same way, but those pairs share the same fees, so their totals are right.
Potential Solution
Use the option's own ticker, security.Symbol.ID.Symbol, as InteractiveBrokersFeeModel does. That resolves SPX, SPXW, VIXW, NDXP and XSP correctly. I can open a PR with the fix and a test.
Reproducing the Problem
varspx=Symbol.Create("SPX",SecurityType.Index,Market.USA);varspxw=Symbol.CreateOption(spx,"SPXW",Market.USA,OptionStyle.European,OptionRight.Call,5000m,newDateTime(2026,6,19));// security priced at 0.80, MarketOrder(spxw, 1)newWebullFeeModel().GetOrderFee(newOrderFeeParameters(security,order));// 1.07, expected 1.00
Activity