Historical strategy research · October 11, 2026

Options trading strategies: create, backtest and deploy a bot

Compare six SPY options bot variants, a 52.68% modeled development result, 94 audited fills and a no-trade holdout caused by the fixed premium budget.

As of 2026-10-11

Development strategy
52.68%
SPY development
28.06%
Reserved-test strategy
0.00%
SPY reserved test
1.86%

An options trading bot needs a contract rule, not just a stock signal

Being right about the direction of a stock is only part of an options strategy. The strike, expiration, premium, position size and exit can change the outcome. This guide compares long calls and bull call spreads, builds a rules-based options trading bot, and follows its backtest through selected contracts, fills and later testing.

The selected SPY long-call bot returned 52.68% during 2022–2024 versus SPY's 28.06%. Its January 2025–June 2026 follow-up returned 7.73% versus SPY's 28.47%. The reserved test appears below beside the development chart, with the pricing-coverage counts needed to interpret both.

Choose the payoff before choosing the signal

A long call buys upside exposure and can lose the premium paid. Its value responds to the underlying price, remaining time and implied volatility. A bullish stock move does not guarantee a profitable call. The Options Industry Council explains these mechanics in its long-call guide.

A bull call spread buys a call and sells a higher-strike call with the same expiration. The short leg reduces the net debit and caps the upside. For the matched spread at expiration, maximum loss is the debit plus trading costs; maximum profit is the strike width less the debit and costs. Fidelity's bull-call-spread explanation

Covered calls combine shares with a short call; cash-secured puts reserve cash for possible stock acquisition. Credit spreads and iron condors use short-option structures with different exercise and assignment obligations. Those families deserve their own position, collateral and lifecycle tests. The measured comparison here covers long calls and bull call spreads; it does not assign returns from those tests to every options strategy.

Scroll sideways to compare all columns. Select a heading to sort.

Long callBuy one callCan the move overcome premium, time loss and trading costs?
Bull call spreadBuy a call; sell a higher-strike callIs cheaper entry worth the capped payoff and short-leg lifecycle?
Covered callOwn shares; sell a callIs the premium worth giving up gains above the strike?
Cash-secured putSell a put; reserve purchase cashCan the account fund assignment and hold the acquired shares?
Credit spread or iron condorMatched long and short legsHow are collateral, early assignment and exits handled?

A payoff example makes the trade-off concrete

For a simplified standard 100-share contract, a $500-strike call bought for $10 costs $1,000 before fees. At expiration with the stock at $515, the call's intrinsic value is $1,500 and the profit is $500 before costs. At $500 or below, the premium is lost. The expiration break-even is $510. Before expiration, market value also depends on remaining time and volatility.

A $500/$520 bull call spread bought for an $8 net debit costs $800 before fees. Its maximum expiration profit is $1,200 and its break-even is $508, ignoring costs. At $515 its $1,500 payoff produces a $700 profit before fees; above $520 the payoff stays capped at $2,000. These arithmetic examples explain the structures and are separate from the historical SPY orders below.

A spread's expiration payoff diagram does not settle every path risk before expiration. One leg may be assigned early, bid/ask costs occur on both legs, and a closing order may be only partially filled. The bot must track the position as a spread and handle its actual lifecycle rather than treating two independently selected calls as a guaranteed paired payoff.

The tested SPY options strategy

When SPY is above its 50-calendar-day native rolling mean and no matching long-call position exists, request a near-the-money call. Choose the nearest eligible expiration from 30 to 45 calendar days away and a strike target at zero-percent distance from SPY. The opening premium budget is $1,000. Contracts are whole units; an expensive eligible contract can therefore leave the portfolio without an entry.

Close the position when SPY is at or below the trend mean. A separate lifecycle rule closes matching positions when 14 or fewer days remain to expiration. The portfolio starts with $10,000, holds dollar cash outside its calls and pays $0.65 per contract on each fill. The native engine applies its option spread/slippage and liquidity model in addition to commissions.

The 100- and 200-day long-call variants change the trend window only. The bull-call-spread variants retain the same windows, premium budget and expiration range, add a short call targeted 5% above SPY, and close the matching vertical spread together. These are six declared settings, not a search through every conceivable strike, expiration and allocation.

The mean averages timestamped prices in a calendar-time window, rather than exactly 50 daily closes. Native Day evaluation supplies the signal observations; option resolution can use a later eligible quote. The matching baseline is holding SPY across the same timestamps, with the native dividend-adjusted comparison path. Returns are measured on the entire $10,000 account, including unused cash.

Scroll sideways to compare all columns. Select a heading to sort.

Underlying and signalSPY above 50-calendar-day native mean
ContractLong near-the-money call; nearest eligible expiry in 30–45 days
Premium allocation$1,000 budget; whole contracts; no matching position already open
ExitTrend breaks or 14 days or fewer remain
Commission$0.65 per contract per fill
ExecutionNative option quote, spread/slippage and liquidity model

Compare the variants before choosing a winner

Test three trend windows for long calls, then the same three for bull call spreads. Both families use the same underlying, dates, $10,000 account, $1,000 premium budget and commission contract. The 50-day long-call version leads on net account return; spread variants sometimes reduce drawdown but do not replace the declared return criterion. Pricing coverage remains a limitation across this comparison.

Scroll sideways to compare all columns. Select a heading to sort.

Long call / 50-day52.68%36.94%47
Long call / 100-day14.16%46.05%50
Long call / 200-day21.73%49.97%41
Bull call spread / 50-day33.73%30.01%108
Bull call spread / 100-day7.86%40.09%114
Bull call spread / 200-day36.17%32.39%86

2022–2024 development results. Returns include declared costs. The native closed-trade count measures asset trades or option legs: a two-leg spread contributes two closed legs. Selection used net return, with drawdown reported separately.

The backtest that beat the baseline

The selected version ended at $15,267.62 from $10,000, a 52.68% cumulative return. The matched SPY holding ended at $12,806.50, or 28.06%. The strategy's maximum drawdown was 36.94%; the benchmark's drawdown at the same recorded observations was 25.06%.

The full account return includes unused cash, option commissions and native modeled slippage/impact. SPY's matched holding path is dividend-adjusted. Options quote timing and synthetic-spread coverage are inspected separately below; the development lead is not a certification of live-fill realism.

The chart follows the recorded observation path, including losses between the endpoints. The reader groups observations for display, while the download retains every original value. Initial capital is $10,000 before the first order; the first strategy point may already include a fee. The benchmark begins at $10,000 on the same first timestamp.

Development: 2022-01-03 through 2024-12-31, $10,000 starting capital16.35K7.07K2022-01-032024-12-31
Strategy, costs includedSPY buy and holdHistorical simulation

Audit the option lifecycle and the cash

The event replay reproduced the selected result and produced 94 filled orders across 47 closed call trades. Each observed entry bought one contract. Opening debit plus commission never exceeded $993.74. Total commissions were $61.10, and reconstructing cash with the 100-share multiplier matched the final $15,267.62 to less than one cent. The ending book had no open contracts or negative option quantities.

The December 24, 2024 entry chose a January 24, 2025 SPY call with a $601 strike. Its modeled fill was $9.2841 per share, or $928.41 for one contract before the $0.65 fee. It closed December 27 at $7.155, losing $214.21 after both commissions. The saved decision included candidate contracts, expiration distance, sizing bounds and liquidity limits. That is the level of evidence needed to explain a losing trade.

The largest audited winning trade earned $2,064.31 after commissions; the largest loss was $783.43. A profitable aggregate can still include a call that loses most of its premium. The result depends on repeated contract selections and some large gains, rather than a fixed premium-income stream.

Six sampled open/close signal events were reviewed. A close condition can be true while no matching position is present: the December 31 signal emitted zero close orders. Check the emitted order and actual holding instead of counting every true condition as a trade. The order audit checks the observed book and accounting; it does not certify every pricing observation or the complete signal history.

Quote coverage changes the meaning of the return

The development run recorded 110 real-quote pricings and 344 synthetic-spread pricings. More than half of those pricing operations used a modeled spread. These counts include pricing operations, not just filled orders, and they must not be read as 344 invented trades. The execution model also applied participation-sensitive sizing and impact costs.

The pricing contract excluded 58,145 unknown-timing price observations during eligibility checks. Those checks include candidate or quote accesses; they are not 58,145 accepted mispriced fills or 58,145 unique missed trades. The retained run recorded zero rejected fill groups, rejected marks and stale marks. Zero accepted integrity violations does not establish complete historical chain coverage.

For the 2025–June 2026 follow-up, only six trades closed. It recorded 13 real-quote and 86 synthetic-spread pricings, plus 52,625 unknown-timing observations in eligibility checks. The engine explicitly says coverage is not certified for strategy comparison. The 52.68% development return is therefore a native modeled historical result; its live-fill realism and coverage need additional evidence before being treated as a deployable return expectation.

The reserved test kept the portfolio at $10,000 because no order filled. Inspecting contract-resolution attempts explains that flat line below. It is not evidence of a zero-risk options strategy, and its risk-adjusted ratios do not describe active trading.

To extend this research, preserve timing-aware contract eligibility and test execution assumptions against observed quotes. Inspect missing or skipped entries alongside completed trades, compare the same contract-selection procedure across candidates, and check spreads during exits as well as entries. Simply removing the warning from an article or tightening a chart's date range would not repair the underlying coverage.

Freeze the rules, then test later dates

The initial rules and repairs used January 2022 through December 2024. A January 2025 through June 2026 follow-up tested the selected version unchanged. Those follow-up dates were already present in prior research, so they remain development evidence. They were not used to pick a more favorable setting for this article.

The final rules were saved before requesting July 5 through September 30, 2026. That reserved period had not been inspected in this study. It is a historical holdout within this procedure; we cannot certify that every prior researcher had never viewed it. All published results are historical simulations. Each window starts a separate $10,000 portfolio from cash and warms its indicators with earlier observations. This is a fixed-rule chronological test, rather than an adaptive optimizer that chooses new rules every quarter.

The reserved run returned 0.00% versus SPY's 1.86% and filled no orders. All 89 recorded contract-resolution attempts failed the $1,000 budget: the selected contract cost exceeded the permitted allocation. A September 28 attempt estimated $1,365 for one contract. Increasing the budget after seeing this result would change both risk and the rule under test. The fixed rules stay unchanged; active out-of-sample options behavior still needs a new properly budgeted study and fresh observations.

Once the reserved result was returned, the rules stayed frozen. Repeatedly changing an entry until it wins on that same period would turn the period into training data. Further research should document a new hypothesis, use development dates for revisions and reserve another genuinely unseen period or prospective paper observation. Losing months are allowed; a claim about beating buy and hold must still be supported across the declared evaluation period.

Scroll sideways to compare all columns. Select a heading to sort.

2022–2024 development52.68%28.06%36.94%
2025–June 2026 follow-up7.73%28.47%16.34%
July–September 2026 reserved test0.00%1.86%0.00%

Independent $10,000 starts. These returns must not be described as one continuously held account or averaged into an annual return.

Reserved historical test: 2026-07-06 through 2026-09-30, $10,000 starting capital10.4K9.74K2026-07-062026-09-30
Strategy, costs includedSPY buy and holdHistorical simulation

Create this options trading bot in NexusTrade

Open Aurora with the filled-in request below. Read the proposed entries, exits, allocation and asset types, then create a saved research draft. Inspect the saved rules before submitting a backtest. Natural-language requests help express the idea; the executable rules determine what the engine actually does.

Specify the underlying, option direction, spread type, whole-contract sizing, expiration range, strike target and both exit rules. Inspect the returned contract and total premium before calling a signal a trade. For a new budget revision, compare earlier development windows first and reserve new observations; the existing July–September result is now known.

For a new investigation, write down the candidate settings, benchmark, fees, dates and selection criterion first. Start with a small declared set of variants. Run them on the development period, inspect the leading candidate's signals and filled orders, fix a demonstrated accounting or execution issue, and rerun the affected candidates. Keep both the original and corrected results. Freeze the chosen rules before requesting the reserved period.

Paper-test and deploy this options trading bot

After reviewing the rules and historical tests, prepare a separate paper portfolio from the saved draft. Record its new simulated identity and keep a dated log of signals, order status, quantities, fees and holdings. An accepted order and a filled order are different events. Check why an expected order did not fill and whether every intended exit actually cleared the position.

Check options approval, whole-contract buying power and the broker's supported structure. NexusTrade's Alpaca, Public, Tradier and TradeStation adapters advertise single-leg and multi-leg support; its Robinhood adapter advertises single-leg support. Those adapter capabilities do not grant account approval. Confirm the selected underlying, expiry and spread type in the intended account, and watch both opening and closing fills.

Choose evaluation timing explicitly. These studies used Day observations, not a continuous minute tape. A faster live schedule changes the strategy's opportunities and must be tested separately. Monitor pending orders and available cash so overlapping evaluations cannot create duplicate exposure. Compare paper observations with the expected conditions at the same timestamps; save every revision as a new version.

For live deployment, connect the intended brokerage through NexusTrade's account controls, verify the imported account, confirm instrument permissions and inspect the rules in the live portfolio. Review Port to Live and the automated-trading controls yourself. Start with an allocation you have explicitly chosen and watch the first entry and exit. A historical chart does not verify the live account's permissions, spreads, fill latency or borrowing terms.

What to take from the options comparison

The 50-day long-call version led the six-setting development comparison. Both the option strategy and its SPY baseline are shown on the full account-value chart. The later windows and quote counts define how far that evidence reaches. A long-call development winner is a specific finding about a specific selection and pricing contract, not evidence that premium selling, spreads or every options bot will outperform shares.

Use the Aurora request to inspect and recreate these rules, then declare your own benchmark and unseen period before changing strikes, expirations or budgets. Paper observation should verify contract selection, position guards, quotes and the first complete open-to-close lifecycle. A new live decision follows those observations and the account's actual options permissions.

Continue exploring

Discussion

Sign in or create a free account to join the discussion.

No comments yet.

Aurora · AI research assistant

Try this in Aurora

Edit the request, then open it in Aurora. You choose when to send it.