WebullFeeModel charges SPXW options the SPX exchange fee
Maintainers usually reply within 1 day
Assessment
- Difficulty
- 2/5
- Estimated time
- 1-3 hours
- Newbie friendliness
- 75/100
- Issue type
- Bug
- Clarity
- Clearly specified
- Activity status
- Active
- Tech stack
- csharp
- Domain
- backend, fintech-quant
Research direction
Start in WebullFeeModel.GetIndexOptionFee, where the issue identifies the underlying symbol lookup as the source of the incorrect SPXW tier. Check nearby fee model tests, especially the cases that create an index named SPXW, and compare them with the provided AddIndexOption("SPX", "SPXW") reproduction. Done when a test for that real contract shape verifies the expected $1.00 fee below $1 and $1.09 at $1 or more.
Written by the indexing model from the issue text.
Description
Expected Behavior
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
var spx = Symbol.Create("SPX", SecurityType.Index, Market.USA);
var spxw = Symbol.CreateOption(spx, "SPXW", Market.USA, OptionStyle.European, OptionRight.Call, 5000m, new DateTime(2026, 6, 19));
// security priced at 0.80, MarketOrder(spxw, 1)
new WebullFeeModel().GetOrderFee(new OrderFeeParameters(security, order)); // 1.07, expected 1.00
System Information
master (2f5e8df), net10.0.
Checklist
- I have completely filled out this template
- I have confirmed that this issue exists on the current
masterbranch - I have confirmed that this is not a duplicate issue by searching issues
- Dominant language
- C#
- Stars
- 22.1k
- Forks
- 5.3k
- Avg merge
- 1d 9h
- Merged PRs (30d)
- 31
Getting set up
Starts the project's dev container in your browser, under your own GitHub account.
- Ships a Dockerfile or Docker Compose file
- Has a pull request template
- Read the contributing guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from QuantConnect/Lean
-
TradeStationBrokerageModel rejects extended-hours limit orders on equity optionsPossibly taken @AlexCatarino claimed this 6 days ago. Openbug
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
QuantConnect/Lean#9920 · 1 comment ·
Maintainers usually reply within 1 day
-
AlpacaBrokerageModel refuses extended-hours limit orders with the GTC time in force, which Alpaca acceptsPossibly taken @AlexCatarino claimed this 14 days ago. Open
Difficulty 2/5 1-3 hours Newbie friendliness 76/100
QuantConnect/Lean#9892 ·
Maintainers usually reply within 1 day
-
library-request
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
QuantConnect/Lean#9879 ·
Maintainers usually reply within 1 day
-
library-request
Difficulty 2/5 1-3 hours Newbie friendliness 74/100
QuantConnect/Lean#9743 ·
Maintainers usually reply within 1 day
-
library-request
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
QuantConnect/Lean#9500 ·
Maintainers usually reply within 1 day
All issues in QuantConnect/Lean
Similar issues
-
is:bug is:FQNIssue
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
nunit/nunit3-vs-adapter#1527 ·
Maintainers usually reply within 1 day
-
Difficulty 1/5 Under an hour Newbie friendliness 72/100
Maintainers usually reply within 1 day
-
bug effort:S P3
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
nightscout/nocturne#2840 ·
Maintainers usually reply within 1 day
-
track:release
Difficulty 2/5 1-3 hours Newbie friendliness 80/100
-
[Bug] [Go] Ack returns nil when the server answers with a non-OK statusPossibly taken @leizhiyuan claimed this today. Open
Difficulty 2/5 1-3 hours Newbie friendliness 84/100
apache/rocketmq-clients#1465 ·
Maintainers usually reply within 2 days