Proof-of-concept Python scripts for developing, testing, and validating 0DTE (Zero Days To Expiration) trading strategies for stocks using Interactive Brokers (IBKR) API. Includes experimental implementations, backtesting examples, and analytics for rapid strategy iteration.
ODTE IBKR Trading System
Modular trading system for executing automated options strategies using Interactive Brokers API.
Overview
This system implements multiple trading strategies through a unified framework:
- ODTE Breakout Strategy - Trades 0-Day-To-Expiration (0DTE) options based on breakout signals
- Earnings Straddle Strategy - Executes straddle positions around company earnings announcements
Features
- Fully automated connection to IBKR TWS or Gateway
- Configurable risk parameters (2-3% per trade)
- Support for both options and futures contracts
- Comprehensive market data handling with fallbacks
- Position management with automated stop-loss and take-profit
- ETF-focused for better liquidity and lower costs
- Support for micro contracts to enable smaller account sizes
Requirements
- Python 3.8+
- Interactive Brokers account with TWS or IB Gateway
- TWS/Gateway API enabled
- ib_insync library
- yfinance library (for earnings data)
Setup
- Clone this repository
- Run the setup script (creates virtual environment and config files):
chmod +x setup.sh
./setup.sh
Or manually:
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
- Configure your settings:
config/odtebreakoutconfig.json for ODTE strategy
- Edit config/earningsstraddleconfig.json for earnings strategy
- Add your API keys and adjust trading parameters
- Launch TWS or IB Gateway and ensure API connections are enabled
Running the Strategies
Initialize Configuration
python run_strategy.py init
Run a Single Strategy
# For ODTE Breakout
python runstrategy.py run odtebreakout
For Earnings Straddle
python runstrategy.py run earningsstraddle
Run All Strategies
python run_strategy.py run all
Additional Commands
# Run backtesting
python runstrategy.py backtest odtebreakout -s 2024-01-01 -e 2024-12-31
List active strategies
python run_strategy.py list
Close positions
python run_strategy.py close all
python runstrategy.py close odtebreakout
Configuration
ODTE Breakout Config
Key parameters:
tickers: List of high-volatility stocks from S&P 500 and tech sectormax_capital: Total capital to deploy (set to $5000)riskpertrade: Amount to risk per trade (2-3% of account, $150)maxdailytrades: Maximum trades per day (default: 1)usefractionalshares: Whether to use fractional shares for expensive stocks
Earnings Straddle Config
Key parameters:
tickers_whitelist: High-volatility stocks with active options chainsmaxcapitalper_trade: Maximum capital per straddle (3% of account, $150)minivrank: Minimum IV rank to consider (35%)maxdaysto_expiry: Maximum days to expiration (5 days)maxdailytrades: Maximum trades per day (default: 1)usemicrooptions: Use fractional position sizing for expensive options
Risk Management
The system implements several risk-management features:
- Per-trade capital limits (2-3% of account)
- Daily trade limits
- Automated stop-loss and take-profit
- Position time limits
- Pre-market and after-hours handling
- Market data verification
Architecture
The system follows a modular architecture that separates concerns:
- Strategy Framework: Base classes and interfaces for strategy implementation
- Core Components: Shared utilities for IBKR connection, market data, and options handling
- Strategy Implementations: Individual strategy logic separated from infrastructure
- Unified Runner: Single entry point for all strategies with common configuration
Key Features
- Concurrent Execution: Run multiple strategies simultaneously
- IBKR Integration: Robust connection management with automatic reconnection
- Risk Management: Built-in position sizing and stop-loss management
- Backtesting: Historical data analysis for strategy validation
- Flexible Configuration: JSON-based configuration for easy parameter tuning
Project Structure
ibkr-odte-strategies/
โโโ config/ # Strategy configuration files
โโโ data/ # Trading data and logs
โโโ logs/ # System logs
โโโ src/
โ โโโ backtesting/ # Backtesting engine
โ โโโ core/ # Core infrastructure
โ โ โโโ ibkr_connection.py # IBKR API wrapper
โ โ โโโ market_data.py # Market data utilities
โ โ โโโ options_utils.py # Options calculations
โ โ โโโ strategy_base.py # Base strategy class
โ โโโ strategies/ # Strategy implementations
โ โ โโโ odte_breakout.py # ODTE breakout strategy
โ โ โโโ earnings_straddle.py # Earnings straddle strategy
โ โโโ utils/ # General utilities
โโโ run_strategy.py # Main entry point
โโโ requirements.txt # Python dependencies
โโโ setup.sh # Setup script
Deprecated Files
The following standalone scripts are deprecated in favor of the modular architecture:
odteibkrfullauto.py- Userunstrategy.py run odte_breakoutinsteadstraddleearningsbot.py- Userunstrategy.py run earningsstraddleinstead
License
This code is for educational and personal use only.
Disclaimer
Trading involves significant risk of loss. This software is provided "as is" without warranty of any kind. The authors accept no responsibility for losses incurred through the use of this software.