EMA Open Bot: XSP (Mini-SPX) 0DTE Credit Spreads for Small Accounts

A Different Shape of Trade

Most of the 0DTE credit spread content floating around the internet describes the same trade: sell something far out of the money, collect $30 to $80, and put $500 to $1,000 of defined risk behind it. The win rate on that structure looks spectacular. The math behind it is brutal — a handful of losers can erase a quarter of winners, and one fast move against you can cost several times what you collected.

The EMA Open bot flips that ratio on its head. It risks roughly $50 to make roughly $50 on a defined-risk XSP spread. The win rate is lower than the far-OTM crowd advertises, and that is the entire point: when your losses are the same size as your wins, you no longer need to be right nine times out of ten.

This article walks through a full week of that bot running with real money — the broker fee problem that forced an account move mid-week, how the fills got imported and reviewed in MyATMM, the risk philosophy driving the position sizing, and the four-year backtest that sits behind it all. If you want the wider context first, our earlier overview of 0DTE options trading bots for small accounts and their backtest results covers the general approach these bots share.

What the EMA Open Bot Does

Here is the public description of the strategy, in full:

EMA Open: Reads the prevailing futures trend after the opening bar, then sells a defined-risk XSP 0DTE credit spread on its own terms. Selective by design — it passes on roughly a third of signal days rather than forcing an entry.

That last sentence carries more weight than it looks like it does. A bot that trades every single signal is easy to build. A bot that generates a signal, looks at the terms available, and then declines to place the order is making a judgment call about whether the trade is worth having. Roughly a third of signal days end with no position at all.

Once an entry does fill, there is a take-profit target working. Beyond that, the position is left alone for the session. No stop loss, no intraday management, no watching a screen — which is possible only because of how the risk is structured, covered further down.

The exact entry conditions, spread construction, and profit-target placement are part of the paid bot package, so they are not detailed here. What is public is the shape of the strategy and every number the backtest produced.

Why XSP Instead of SPX

XSP is the Mini-SPX index option — the same S&P 500 exposure as SPX, sized at roughly one-tenth of it. For an account measured in the low four figures, that ratio is the difference between a strategy being usable and being theoretical.

  • Risk per spread lands in a sane range. A defined-risk XSP spread ties up tens of dollars where the equivalent SPX structure would tie up hundreds.
  • Position sizing gets granular. Adding one XSP contract is a small step. Adding one SPX contract is a leap that most small accounts cannot take smoothly.
  • The percentage math is comparable. Same index, same behavior — just smaller dollar amounts on both sides of the trade.
  • Cash settlement keeps it simple. There are no shares to deal with when an index option expires in the money.

That last point comes with an asterisk, and it is the one that cost this bot an account move.

Broker Exercise Fees on Cash-Settled Index Options

XSP and SPX are cash-settled. When one of these options finishes in the money, no shares change hands — the difference is simply settled in cash. There is nothing to deliver, nothing to assign, and no share position to clean up on Monday morning.

Despite that, several brokers still charge an exercise or assignment fee when you let a cash-settled index position run to expiration. It is worth understanding before you pick where a small-account strategy is going to live.

Broker Exercise / assignment fee on cash-settled index options
TastyTrade Charged — roughly $5 per leg
Tradier Charged
Schwab Not charged
Public.com Not charged

Run the arithmetic against a strategy where the average winning trade is in the $50 neighborhood. A two-leg spread left to settle at roughly $5 a leg is $10 off the top — a fifth of the win, on a trade the bot already got right. Do that a few times a week and the fee line stops being a rounding error and starts being a meaningful share of the strategy's output.

What happened in practice: the EMA Open bot spent the first half of this week trading in a TastyTrade account. Partway through, the account was moved to Schwab specifically to get out from under the exercise fee, which is why the week's fills are split across two brokers.

None of this is a recommendation about where to hold an account. Fee schedules change, and every broker balances commissions, fees, platform quality, and execution differently. The takeaway is narrower: read your broker's fee schedule for exercise and assignment on cash-settled index products before you build a strategy that regularly lets positions run to expiration. If your broker does charge, closing before the bell avoids it — but that changes how the strategy behaves, which is a trade-off worth making deliberately rather than discovering on a statement.

Importing the Bot's Live Trades Into MyATMM

A daily 0DTE bot generates a lot of fills. Entry legs, exit legs, expirations, and the occasional stray transaction add up fast, and typing that into a spreadsheet is exactly the chore that quietly stops happening after a few weeks. The end-of-week routine here takes about two minutes.

Two Brokers, One Import Session

Because the account moved mid-week, this particular import needed two files. Both went through the AI CSV import on the Import/Export screen, one after the other.

  1. The TastyTrade export first. Drag the file onto the panel, click Parse, and the transactions come back almost immediately — a second or two is the normal experience. This one brought in 16 option transactions covering the first half of the week, along with some dividends from an unrelated stock position sitting in the same account. The step-by-step version lives in our guide to importing TastyTrade CSV transactions with AI.
  2. The Schwab export second. Same drag, same parse. This one pulled in two transactions plus a ledger entry for the funds transferred in to seed the new account. Ledger entries matter here — without them, moving money between accounts distorts every return calculation that follows. Importing Schwab CSV transactions with AI walks through that side in detail.

The TastyTrade Gotcha: Transaction History, Not Order History

The first attempt at this import stalled and then came back with an error saying nothing could be imported. The cause was not the importer — it was the wrong export.

TastyTrade lets you export order history and transaction history, and they are very different files. Order history is a record of orders you submitted. It contains no fills, so there is literally nothing for a cost basis tracker to import. Transaction history is the record of what actually executed, which is what you want.

Re-exporting the transaction history and dropping it in produced a near-instant parse. If your import comes back empty from TastyTrade, check which history you exported before you check anything else.

Reviewing the Week After the Import

Once everything is in, two screens do the work. The Dashboard shows the account balance and week-over-week performance — useful for spotting whether the bot is grinding forward or stalling. Note that a mid-week account move temporarily distorts the balance figure, since two partially funded accounts get combined until the transition settles.

The Strategy Summary screen is where the trade-by-trade picture lives. For the reviewed week it listed each day individually — Monday through Friday, all five days closing green with a small profit. Small is the operative word. This is not a strategy that produces one enormous day; it produces a lot of modest ones and relies on the losses being modest too.

If you track spreads more broadly, the same views handle any defined-risk structure. Our rundown of the best credit spread trackers for options sellers covers what to demand from those screens whether you are running a bot or entering trades by hand.

The Risk Philosophy: Small Risk, No Stop Loss

"No stop loss" sounds reckless until you look at the structure. On a defined-risk credit spread, the maximum loss is fixed the instant the order fills. The long leg is the stop. There is no scenario where the position keeps bleeding past that number, no matter what the index does.

The core idea: risk about $50 per contract to make about $50 per contract. The maximum loss is built into the spread itself, so the position can be placed and left alone for the session. A flash crash, a melt-up, a headline at 2pm — none of it changes what the worst case costs.

Compare that with the far-OTM approach. Selling a five- or ten-point-wide SPX spread far from the money means putting $500 to $1,000 of defined risk behind $30 to $80 of credit. As long as price stays away, it works beautifully. When price starts drifting toward your strikes — or gaps toward them — you are watching a position that can cost several times what you collected. Managing that requires either a hard stop that locks in a loss well above the credit, or an eyeball on the screen all day.

There is a second effect worth naming. If you have watched SPX intraday for any length of time, you know it rarely moves in a straight line. A sharp drop in the morning frequently gets partially or fully recovered by the afternoon. A position that would have been stopped out at the bottom of that move can end the day as a wash or even a win. Holding a defined-risk position through the full session takes advantage of that behavior rather than being punished by it.

On a bad day, a bot risking roughly $50 per contract in a $1,000 account gives back single-digit percentages. The far-OTM structure, on a genuinely bad day, can take a much larger bite. That difference in worst-case shape is the whole reason for the design.

Small Accounts and the End of the PDT Rule

None of this would have been practical two years ago. The pattern day trader rule required any account making frequent same-day round trips to hold at least $25,000. A bot entering and exiting 0DTE positions inside a single session generates day trades constantly, so under the old rules every account running one needed that balance — and a cushion on top, in case a drawdown pushed it below the line.

The PDT rule went away in mid-2026. That single change is what makes a fleet of small-account bots viable. Instead of one large account trying to run everything, five bots run in five separate accounts, each holding a couple of thousand dollars. Each bot gets its own account, its own balance, and its own clean set of transactions to track.

Why separate accounts: keeping one bot per account means the performance you see is that bot's performance, not a blended number. It also makes the weekly import trivially simple — one export, one strategy, no untangling.

The Four-Year Backtest

Every bot page in MyATMM carries its full backtest, and the EMA Open numbers below cover 1,042 trading days from June 2022 through July 2026 running a single contract on every trade the bot chose to take.

Metric Backtested result (Jun 2022 – Jul 2026, 1 contract)
Trading days covered 1,042
Total P&L $18,863
Win rate 68.3% (433 wins / 201 losses)
Average ROI per trade 149%
Average win $52.49 per contract
Average loss $19.23 per contract
Maximum drawdown $146
Green months 96%
Profitable years 5 of 5
Trade frequency About 2 of every 3 signal days

Why a 68% Win Rate Is the Right Number to Look At

A 68.3% win rate looks unimpressive next to the 90%-plus figures advertised for far-OTM credit spreads. It is unimpressive — in isolation. Win rate on its own tells you nothing useful, because it says nothing about the size of the wins relative to the losses.

Look at the two averages instead. The average win is $52.49. The average loss is $19.23. That is roughly a one-to-two or one-to-three relationship, and it is the mirror image of the far-OTM shape, where a 90% win rate is paired with losses that dwarf the wins. Winning 68% of the time while your winners are more than twice your losers produces a very different curve than winning 90% of the time while a single loser wipes out ten wins.

The drawdown figure tells the same story from another angle. $146 is the worst peak-to-trough stretch across four years on one contract. That number is what makes the strategy compatible with an account holding a couple of thousand dollars. A strategy with a higher total return and a $3,000 drawdown would be unusable at that account size, regardless of how good the headline looked.

Why the Average ROI Looks Absurd

A 149% average ROI per trade reads like a typo. It is a direct consequence of the denominator being small. ROI here is measured against the capital actually at risk on each spread — roughly $50 — not against the account balance. An average win of $52.49 against about $50 of risk is where that percentage comes from.

It is worth being clear about what that figure does and does not mean. It does not mean the account grows 149% per trade. It means the strategy returns more than it risks on an average trade, which is a statement about the payoff structure, not about account growth.

All Five Bots Measured Together

MyATMM's Trading Bots page also carries a combined view that runs all five bots together across their shared history: 992 overlapping trading days spanning roughly four years, one contract per strategy.

  • Worst combined single day: −$147 across all five bots
  • Combined maximum drawdown: $412 — against $1,300 if you simply add up each bot's individual maximum drawdown
  • Green months: 49 of 50 (98%)
  • Profitable years: all of them in the window
  • Days where every bot lost: none — on every trading day in the window, at least one bot finished green

The gap between $412 and $1,300 is the observation worth sitting with. The individual drawdowns did not land on the same days, so summing them overstates what actually happened when the strategies ran side by side. That is a measurement of how these five specific rule sets behaved over this specific window — not a property you should assume any group of strategies will have.

The Scaling Toggle and What It Is For

The equity curve viewer on each bot page has a scaling toggle that re-runs the same historical signals with a position-sizing rule applied: one contract per $1,000 of account value. Simulated balance crosses $2,000, it trades two contracts; crosses $3,000, three; and so on. The tool caps the simulation at 100 contracts.

That cap exists for a reason. Left uncapped, a compounding simulation eventually produces thousands of contracts per trade and numbers with no connection to reality — fill quality, liquidity, and market impact would break down long before that. Even 100 is aggressive; somewhere in the 50-to-100 range is a more plausible ceiling before partial fills start becoming the norm.

On the unscaled curve, one contract starting from roughly $100 finished the first backtest year in the neighborhood of $3,986, then more than doubled over the following year. Turn the scaling toggle on and the curve steepens sharply, reaching the contract ceiling somewhere in the back half of 2023 — about a year and four months into the window.

Read this for what it is: a compounding simulation applied to historical signals. It is useful for understanding how position sizing changes the shape of a curve. It is not a projection, not a target, and not something anyone should expect to reproduce. Backtests are simulations run on historical data with the benefit of hindsight, and real fills, slippage, and liquidity at size are not modeled in them.

How MyATMM Helps

A backtest describes what a set of rules did historically. Your own transaction history describes what is happening now. Those two things are only comparable if the second one is tracked accurately — costs included, fees attached where they occurred, and nothing double-counted.

That is the gap MyATMM is built to close, and it applies whether or not you ever run a bot:

  • Every bot's full backtest is free to browse. A free account gets you the complete statistics for each bot — win rate, averages, drawdown, monthly and yearly breakdowns — plus the equity curve viewer and its scaling toggle. The setup details and exact rules are what you buy, individually or as a bundle.
  • The AI CSV import handles broker exports directly. TastyTrade, Schwab, and other brokers' transaction exports parse in a second or two, including option legs, dividends, fees, and ledger entries for cash movements.
  • Strategy Summary rolls legs into the trades they belong to, day by day, with commissions and fees attached where they happened rather than buried in an account-level total.
  • The Dashboard turns a pile of fills into a weekly picture, which is the resolution at which you can actually judge whether something is working.

Automation just raises the transaction volume enough that spreadsheets stop being an option. The tracking problem itself is the same one every premium seller has.

Risk Disclaimer

Backtested results are hypothetical and simulated. Every performance figure in this article — total P&L, win rate, average trade, maximum drawdown, equity curve, and the scaled simulation — comes from applying a set of rules to historical option data after the fact. Simulated results have inherent limitations: they do not represent actual trading, they cannot fully account for slippage, liquidity, order fills, or the experience of following a system through a drawdown, and they are prepared with the benefit of hindsight. Simulated performance is not indicative of future results.

Past performance does not guarantee future results. Options trading involves risk and is not suitable for all investors. 0DTE index options in particular carry rapid time decay and can move against a position very quickly. You can lose the entire amount at risk on any defined-risk spread. Broker fee schedules described here reflect what was observed at the time of writing and can change without notice — verify them with your own broker.

MyATMM is a tracking and research tool, not an investment adviser. This content is for educational purposes only and should not be considered financial advice. Nothing here is a recommendation to buy or sell any security, to adopt any strategy, or to use any particular broker. Always consult with a qualified financial advisor before making investment decisions.

Start Tracking Your Options Positions Accurately

MyATMM provides purpose-built cost basis tracking for option sellers, with the flexibility to track covered calls, cash-secured puts, and wheel strategy positions.

Track up to 3 tickers completely free forever. No credit card required.

Create Your Free Account Today

Built for covered calls, cash-secured puts, and the wheel strategy

Original Content by MyATMM Research Team | Published: August 23, 2026 | Educational Use Only