jefrnc
ibkr-odte-strategies
Python

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.

Last updated Jun 14, 2026
16
Stars
2
Forks
4
Issues
0
Stars/day
Attention Score
48
Language breakdown
No language data available.
โ–ธ Files click to expand
README

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
Both strategies are designed to work with smaller accounts and include comprehensive risk management capabilities.

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:
- Edit 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 sector
  • max_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 chains
  • maxcapitalper_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 - Use runstrategy.py run odte_breakout instead
  • straddleearningsbot.py - Use runstrategy.py run earningsstraddle instead

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.

๐Ÿ”— More in this category

ยฉ 2026 GitRepoTrend ยท jefrnc/ibkr-odte-strategies ยท Updated daily from GitHub