Does anyone know the methodology Tastylive uses for their 0dte SPX backtests?
I tried to recreate the results from their latest **0DTE** backtest video (https://youtu.be/WYBlbIhiFG0) using **OptionOmega**, **GreeksLab** and **OptionAlpha** 0dte backtesters, but my results were significantly different from Tastylive. All platforms produced **similar outcomes**, yet Tastylive’s results seemed off compared to what I got.
One of the main takeaways from their video is that a **stop-loss-only strategy with no profit-taking consistently produces negative average PnL**. However, **OptionOmega**, **GreeksLab** and **OptionAlpha** show **positive average PnL for unmanaged strategies**. Differences between them could be due to the differences in how they simulate trades and their data. Both **GreeksLab** and **OptionOmega** use **mid quotes every minute** for execution. **OptionOmega also has an intra-minute fill option**, but I haven’t fully figured out how it works, so I haven’t used it. It is not clear which quotes OptionAlpha uses. Strangely enough, Win% is similar across all methods, including Tastylive.
Based on what they mention in the video, they:
* Enter at the **market open**
* **Test every 10 minutes**
* **Execute at mid price**
But that alone doesn’t explain the discrepancy. I suspect their results are affected by **intra-period fills on stop-loss and take-profit limit orders**, but how would they handle those while only testing on 10 minutes resolution data? It would be great to see their actual **log of simulated trades** to understand their methodology better.
Has anyone tried to match their results? Or does anyone have insight into how Tastylive structures their backtests?
Here’s a comparison of the Tastylive and the backtest results I ran: • **Strategy:** 2 years (Feb 17, 2023 - Feb 14, 2025) of **0DTE 50 delta SPX straddles at market open** \- 9:32 to match OptionOmega's minimal entry time (though 9:31 AM is also possible in Greekslab and OptionAlpha).
# Tastylive - from the slide in the video
# Stop loss only
|Straddle|25% Stop-Loss|50% Stop-Loss|100% Stop-Loss|200% Stop-Loss|
|:-|:-|:-|:-|:-|
|Win%|33|43|50|52|
|Avg. P/L|\-$138|\-$169|\-$211|\-$183|
|CVaR|$2153|$2924|$4431|$5654|
# Stop loss and take profit at 25%
|Straddle|25% Stop-Loss|50% Stop-Loss|100% Stop-Loss|200% Stop-Loss|
|:-|:-|:-|:-|:-|
|Win%|60%|70%|77%|79%|
|Avg. P/L|$86|$62|$27|$63|
|CVaR|$1856|$3157|$4615|$6416|
# Greekslab
# Stop loss only
|Straddle|25% Stop-Loss|50% Stop-Loss|100% Stop-Loss|200% Stop-Loss|
|:-|:-|:-|:-|:-|
|Win%|35.4|48|57|58.4|
|Avg. P/L|$51.66|$23.97|$59.75|$12.62|
|CVaR|$1238.4|2125.78|$3287.1|5043.94|
||[https://greekslab.com/b/a29pxbcr7s](https://greekslab.com/b/a29pxbcr7s)|[https://greekslab.com/b/ngVxACJc6z](https://greekslab.com/b/ngVxACJc6z)|[https://greekslab.com/b/G43yEMQt2p](https://greekslab.com/b/G43yEMQt2p)|[https://greekslab.com/b/pYAwFDZXcR](https://greekslab.com/b/pYAwFDZXcR)|
||||||
# Stop loss and take profit at 25%
|Straddle|25% Stop-Loss|50% Stop-Loss|100% Stop-Loss|200% Stop-Loss|
|:-|:-|:-|:-|:-|
|Win%|53.6|67.6|75.4|77.6|
|Avg. P/L|$27.38|$36.39|$45.02|$31.79|
|CVaR|$1208.7|$1998.8|$3095.6|$4701.92|
||[https://greekslab.com/b/8VWMp6MUBH](https://greekslab.com/b/8VWMp6MUBH)|[https://greekslab.com/b/9JoTiSQ6Bq](https://greekslab.com/b/9JoTiSQ6Bq)|[https://greekslab.com/b/WAN5kE0BrS](https://greekslab.com/b/WAN5kE0BrS)|[https://greekslab.com/b/xZ4b2vdqpX](https://greekslab.com/b/xZ4b2vdqpX)|
# Optionomega
# Stop loss only
|Straddle|25% Stop-Loss|50% Stop-Loss|100% Stop-Loss|200% Stop-Loss|
|:-|:-|:-|:-|:-|
|Win%|36|48.4|57.6|59.2|
|Avg. P/L|$54|$21|$67|$20|
|CVaR|\-|\-|\-|\-|
# Stop loss and take profit at 25%
|Straddle|25% Stop-Loss|50% Stop-Loss|100% Stop-Loss|200% Stop-Loss|
|:-|:-|:-|:-|:-|
|Win%|53.6|67.8|75.6|78|
|Avg. P/L|$15|$28|$37|$26|
|CVaR|\-|\-|\-|\-|
# OptionAlpha
# Stop loss only
|Straddle|25% Stop-Loss|50% Stop-Loss|100% Stop-Loss|200% Stop-Loss|
|:-|:-|:-|:-|:-|
|Win%|35.5|47.8|57.4|58.8|
|Avg. P/L|$41|$16|$51|$0|
|CVaR|\-|\-|\-|\-|
||[https://app.optionalpha.com/zdte/backtester/test/ZT21739866421204107996](https://app.optionalpha.com/zdte/backtester/test/ZT21739866421204107996)|[https://app.optionalpha.com/zdte/backtester/test/ZT21739866800565757999](https://app.optionalpha.com/zdte/backtester/test/ZT21739866800565757999)|[https://app.optionalpha.com/zdte/backtester/test/ZT217398669958048901001](https://app.optionalpha.com/zdte/backtester/test/ZT217398669958048901001)|[https://app.optionalpha.com/zdte/backtester/test/ZT217398670876115151002](https://app.optionalpha.com/zdte/backtester/test/ZT217398670876115151002)|
# Stop loss and take profit at 25%
|Straddle|25% Stop-Loss|50% Stop-Loss|100% Stop-Loss|200% Stop-Loss|
|:-|:-|:-|:-|:-|
|Win%|53.6|67.3|75.7|77.9|
|Avg. P/L|$9|$13|$32|$20|
|CVaR|\-|\-||\-|
||[https://app.optionalpha.com/zdte/backtester/test/ZT217398681483169391010](https://app.optionalpha.com/zdte/backtester/test/ZT217398681483169391010)|[https://app.optionalpha.com/zdte/backtester/test/ZT217398679126096701009](https://app.optionalpha.com/zdte/backtester/test/ZT217398679126096701009)|[https://app.optionalpha.com/zdte/backtester/test/ZT217398675985864731008](https://app.optionalpha.com/zdte/backtester/test/ZT217398675985864731008)|[https://app.optionalpha.com/zdte/backtester/test/ZT217398673039170811004](https://app.optionalpha.com/zdte/backtester/test/ZT217398673039170811004)|