Skip to content

mirajgodha/options

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

75 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Options Strategy Builder

Python 3.7+ License: MIT NSE Status: Active

A comprehensive Python platform for NSE options traders to analyze, calculate, and visualize multi-leg options strategies with real-time P&L tracking across multiple brokers (ICICI Direct, Nuvama).

🎯 What It Does

  • Strategy Analysis: Calculates max profit, max loss, and breakeven points for 13 predefined options strategies
  • Greeks Calculation: Computes Delta, Gamma, Theta, Vega, and IV for portfolio risk analysis
  • Profitability Scanning: Automatically scans entire NSE F&O universe for profitable opportunities
  • Multi-Broker Integration: Consolidates positions and P&L across ICICI Direct and Nuvama Wealth
  • Real-time Dashboard: Visualize strategies and P&L using Metabase (open-source BI tool)
  • Excel Export: Generates sorted, formatted Excel sheets with all strategy metrics
  • Risk Management: Monitor margin, set P&L alerts, track order execution across brokers

πŸ“Š Supported Strategies

Strategy Type Risk Reward Best For
Long Call Condor Debit Limited Limited Neutral, low vol
Long Iron Butterfly Debit Limited Limited Range-bound
Long Put Condor Debit Limited Limited Bearish, low vol
Short Call Butterfly Credit Limited Limited Sideways
Short Call Condor Credit Limited Limited Bullish, high vol
Short Guts Credit Unlimited Limited High volatility
Short Iron Butterfly Credit Limited Limited Tight range
Short Put Butterfly Credit Limited Limited Support holding
Short Put Condor Credit Limited Limited Bullish, narrow
Short Straddle Credit Unlimited Limited Neutral, low vol
Short Strangle Credit Unlimited Limited Neutral, wide
Naked Call Credit Unlimited Limited Bearish
Naked Put Credit Unlimited Limited Bullish

πŸ“ˆ Visual Dashboards & Output

Excel Strategy Analysis

All strategies are exported to Excel with complete P&L analysis:

Excel Output Format

Metabase Dashboards

Consolidated P&L Dashboard - Total profit/loss across all brokers:

Consolidated P&L

Strategy Performance Dashboard - Individual stock strategy analysis:

Strategy P&L

Stock Strategy P&L Charts:

Stock Strategy Charts

Time-Series P&L Analysis:

TimeSeries Analysis

MWPL (Ban List) Monitoring:

MWPL Dashboard

Option Price Charts:

Option Price Charts

Margin Tracking Dashboard:

Margin Usage

Orders Management Dashboard:

Orders Dashboard

Profitable Strategies Scan Results:

All Profitable Strategies

πŸš€ Quick Start

Prerequisites

  • Python 3.7+
  • pip / conda
  • Optional: Java (for Metabase dashboards)

Installation

# Clone the repository
git clone https://github.com/mirajgodha/options.git
cd options

# Create virtual environment
python -m venv venv
source venv/bin/activate  # Mac/Linux
# OR
venv\Scripts\activate  # Windows

# Install dependencies
pip install -r requirements.txt

# Configure settings
# Edit helper/constants.py with your preferences

# Run analysis
python main.py

Basic Usage

from strategy.calculator import StrategyCalculator
from data.nse_fetcher import NSEDataFetcher

# Fetch option chain data
fetcher = NSEDataFetcher()
option_chain = fetcher.fetch_option_chain('RELIANCE', expiry_date='2025-01-30')

# Calculate SHORT_STRANGLE strategy
calc = StrategyCalculator('RELIANCE', option_chain, 'SHORT_STRANGLE')
strategy = calc.calculate(short_put_strike=2700, short_call_strike=3100, quantity=1)

# View results
print(f"Max Profit: β‚Ή{strategy.max_profit}")
print(f"Max Loss: β‚Ή{strategy.max_loss}")
print(f"Theta (Daily Decay): β‚Ή{strategy.greeks['theta']}")
print(f"Breakeven: {strategy.breakeven_points}")

Scan All Stocks for Opportunities

from scanner.profitability_scanner import ProfitabilityScanner

scanner = ProfitabilityScanner(
    max_loss_threshold=2000,
    profit_probability_threshold=0.60
)

results = scanner.scan_all_strategies(
    strategies=['SHORT_STRANGLE', 'SHORT_STRADDLE'],
    strike_difference=100
)

scanner.export_to_excel(results, 'profitable_strategies.xlsx')
scanner.export_to_database(results)

Monitor Live Positions

from brokers.icici_direct import ICICIDirectConnector
from brokers.nuvama import NuvamaBrokerConnector

# Connect to ICICI Direct
icici = ICICIDirectConnector(username='your_id', password='your_pwd')
icici.authenticate()
icici_positions = icici.get_positions()

# Connect to Nuvama
nuvama = NuvamaBrokerConnector(client_id='your_client_id', password='your_pwd')
nuvama.authenticate()
nuvama_positions = nuvama.get_positions()

# Consolidated view
total_pnl = sum(p['pnl'] for p in (icici_positions + nuvama_positions))
print(f"Total P&L across all brokers: β‚Ή{total_pnl:,.2f}")

πŸ“ Project Structure

options/
β”œβ”€β”€ README.md                       # This file
β”œβ”€β”€ requirements.txt                # Python dependencies
β”œβ”€β”€ helper/
β”‚   └── constants.py               # Configuration settings
β”œβ”€β”€ strategy/                       # Core calculation engine
β”‚   β”œβ”€β”€ calculator.py              # Strategy calculator
β”‚   β”œβ”€β”€ definitions.py             # Strategy definitions
β”‚   └── greeks.py                  # Greeks calculation
β”œβ”€β”€ data/                           # Data fetching
β”‚   β”œβ”€β”€ nse_fetcher.py             # NSE option chain data
β”‚   └── historical_data.py         # Historical prices
β”œβ”€β”€ brokers/                        # Broker integrations
β”‚   β”œβ”€β”€ icici_direct.py            # ICICI Direct connector
β”‚   β”œβ”€β”€ nuvama.py                  # Nuvama Wealth connector
β”‚   └── broker_base.py             # Abstract interface
β”œβ”€β”€ scanner/                        # Scanning engine
β”‚   β”œβ”€β”€ profitability_scanner.py   # Strategy scanning
β”‚   └── filters.py                 # Filtering logic
β”œβ”€β”€ output/                         # Export functionality
β”‚   β”œβ”€β”€ excel_writer.py            # Excel export
β”‚   β”œβ”€β”€ sql_writer.py              # Database export
β”‚   └── metabase_config.py         # Metabase setup
β”œβ”€β”€ dashboard/                      # Metabase configs
β”œβ”€β”€ metabase/                       # Metabase JAR and configs
β”œβ”€β”€ main.py                         # Entry point
└── docs/                           # πŸ“š Documentation
    β”œβ”€β”€ START_HERE.md
    β”œβ”€β”€ QUICK_NUVAMA_SETUP.md
    β”œβ”€β”€ installation_guide.md
    β”œβ”€β”€ nuvama_integration_guide.md
    β”œβ”€β”€ multi_broker_integration_guide.md
    β”œβ”€β”€ comprehensive_docs_with_screenshots.md
    β”œβ”€β”€ api_documentation.md
    └── DOCUMENTATION_INDEX.md

βš™οΈ Configuration

Edit helper/constants.py:

# Market settings
TEST_RUN = False                    # Test outside market hours
MARKET_OPEN_HOUR = 9
MARKET_CLOSE_HOUR = 15

# Strategy configuration
STRIKE_DIFFERENCE = 100             # For strangle/straddle
MAX_LOSS_THRESHOLD = 1000          # Scanning filter

# Database
DB_TYPE = 'sqlite'
DB_CONNECTION_STRING = 'sqlite:///options_data.db'

# Broker Configuration
ENABLE_BROKER_SYNC = True

# ICICI Direct
ICICI_DIRECT_ENABLED = True
ICICI_USERNAME = 'your_username'
ICICI_PASSWORD = 'your_password'

# Nuvama Wealth
NUVAMA_ENABLED = True
NUVAMA_CLIENT_ID = 'your_client_id'      # Get from profile
NUVAMA_PASSWORD = 'your_password'

# Output
WRITE_TO_EXCEL = True
WRITE_TO_SQL = True
EXCEL_OUTPUT_PATH = './output/'

πŸ”Œ Broker Integration

Supported Brokers

Broker Status API Charges F&O Support Documentation
ICICI Direct βœ… Production Ready No Yes Setup
Nuvama Wealth βœ… Production Ready No Yes Guide
Multi-Broker βœ… Production Ready No Yes Guide
Zerodha πŸ“‹ Roadmap No Yes -
5Paisa πŸ“‹ Roadmap No Yes -

ICICI Direct

from brokers.icici_direct import ICICIDirectConnector

connector = ICICIDirectConnector(username='your_id', password='your_pwd')
connector.authenticate()

positions = connector.get_positions()       # Current positions
margin = connector.get_margin_used()        # Margin status
orders = connector.get_orders(status='OPEN') # Open orders
mwpl = connector.check_mwpl()               # Ban list alerts

Nuvama Wealth

from brokers.nuvama import NuvamaBrokerConnector

# Get Client ID from https://www.nuvamawealth.com/login β†’ Profile
connector = NuvamaBrokerConnector(client_id='your_client_id', password='your_pwd')
connector.authenticate()

positions = connector.get_positions()        # Current positions
margin = connector.get_margin_used()         # Margin status
orders = connector.get_orders(status='OPEN') # Open orders
mwpl = connector.check_mwpl()                # MWPL status

Consolidated Multi-Broker Dashboard

from brokers.icici_direct import ICICIDirectConnector
from brokers.nuvama import NuvamaBrokerConnector

# Connect to both brokers
icici = ICICIDirectConnector(username='id', password='pwd')
nuvama = NuvamaBrokerConnector(client_id='id', password='pwd')

icici.authenticate()
nuvama.authenticate()

# Consolidated metrics
icici_pnl = sum(p['pnl'] for p in icici.get_positions())
nuvama_pnl = sum(p['pnl'] for p in nuvama.get_positions())

print(f"ICICI Direct: β‚Ή{icici_pnl:,.2f}")
print(f"Nuvama Wealth: β‚Ή{nuvama_pnl:,.2f}")
print(f"Total: β‚Ή{icici_pnl + nuvama_pnl:,.2f}")

Broker Documentation

Quick Start (10 minutes):

Complete Integration Guides (30-40 minutes each):

General Setup & Reference:

Complete Feature Documentation:

Nuvama Wealth - Key Benefits

βœ… No API charges - Completely free integration
βœ… β‚Ή20/lot options - Competitive options brokerage
βœ… Deep OTM trading - Trade far out-of-money options in NRML mode
βœ… Discounted exchange charges - ~β‚Ή3,500/Cr vs standard rates
βœ… Online margin pledge - Enhance margin instantly
βœ… SEBI regulated - Safe and trustworthy broker

Quick Links:

Adding New Brokers

To add support for Zerodha, 5Paisa, or other brokers, see Multi-Broker Guide - Adding New Brokers section.

Implement the BrokerInterface abstract class:

  • authenticate()
  • get_positions()
  • get_margin_used()
  • get_orders()
  • check_mwpl()
  • place_order() (optional)

πŸ“ˆ Visualization with Metabase

# Download Metabase
cd metabase/
wget https://downloads.metabase.com/v0.46.6/metabase.jar

# Start Metabase
java -jar metabase.jar

# Access at http://localhost:3000

Available Dashboards:

  • Consolidated P&L across all brokers
  • Strategy-wise P&L breakdown
  • Real-time margin tracking
  • Order execution analysis
  • Greeks heatmaps
  • MWPL monitoring
  • Multi-broker position tracking

πŸ“Š Excel Output Format

Each strategy generates a separate tab with:

  • Symbol, premium, max profit/loss
  • Breakeven points
  • Greeks (Delta, Gamma, Theta, Vega, IV)
  • P&L at different price levels
  • Available strike prices

Example Output:

RELIANCE | Premium: β‚Ή850 | Max Profit: β‚Ή850 | Max Loss: β‚Ή2150
Theta: β‚Ή45.3/day | Delta: -0.15 | IV: 18.5%
Breakeven: 2650, 3050

πŸ”§ Advanced Features

Batch Scanning

# Scan multiple strategies across all NSE F&O stocks
scanner.scan_multiple(
    strategies=['SHORT_STRANGLE', 'NAKED_PUT', 'SHORT_STRADDLE'],
    strike_differences={'SHORT_STRANGLE': 150, 'NAKED_PUT': 100}
)

Position Monitoring

# Real-time P&L alerts
monitor = PositionMonitor()
monitor.add_profit_trigger(strategy_id=123, profit_target=5000)
monitor.add_loss_trigger(strategy_id=123, loss_limit=2000)
monitor.start()

Greeks Rebalancing

# Rebalance portfolio to target Greeks
rebalancer.suggest_rebalance(
    target_delta=-0.2,
    target_vega=0
)

Backtesting

# Historical analysis of strategy returns
backtest = StrategyBacktester('SHORT_STRANGLE', 'RELIANCE', 
    start_date='2024-01-01', end_date='2024-12-31')
results = backtest.run(strike_difference=100, profit_target=0.30)
print(f"Win Rate: {results['win_rate']:.2%}")

πŸ“ Greeks Reference

  • Delta: Directional sensitivity (range: -1 to +1)
  • Gamma: Rate of delta change (positive for long options)
  • Theta: Daily time decay (positive for short options)
  • Vega: Volatility sensitivity (per 1% IV change)
  • IV: Implied Volatility (market's volatility expectations)

πŸ“š Documentation

Complete documentation is available in the /docs folder. Start here based on your needs:

πŸš€ New Users (Quick Path: 30 minutes)

  1. START_HERE.md (5 min) - Overview and what to do next
  2. QUICK_NUVAMA_SETUP.md (10 min) - Get started with Nuvama in 10 minutes
  3. Installation Guide (15 min) - Complete setup for your platform

πŸ“– Learning the Tool (1-2 hours)

  • Comprehensive Guide - Complete documentation with all 13 strategies, features, and 13 integrated screenshots

πŸ’» Developers (1 hour)

πŸ”§ Broker Integration (30-40 minutes each)

πŸ—ΊοΈ Navigation & Reference

πŸ“Š Documentation Quick Reference

Document Time Best For
START_HERE.md 5 min Everyone - start here
QUICK_NUVAMA_SETUP.md 10 min Nuvama quick start
Installation Guide 15 min New users
Comprehensive Guide 60 min Learning all features
API Reference 20 min Developers
Nuvama Integration 30 min Nuvama users
Multi-Broker Guide 30 min Multi-broker setup
Documentation Index 10 min Finding things

πŸ› Troubleshooting

NSE data not fetching?

ICICI Direct auth failing?

Nuvama auth failing?

Metabase not loading?

  • Check if Java is installed: java -version
  • Verify Metabase is running: curl http://localhost:3000

Greeks returning NaN?

Need more help?

🀝 Contributing

We welcome contributions! Please:

  1. Fork the repository
  2. Create feature branch: git checkout -b feature/amazing-feature
  3. Commit changes: git commit -m 'Add amazing feature'
  4. Push to branch: git push origin feature/amazing-feature
  5. Open Pull Request

Code Style

pip install flake8
flake8 options/ --max-line-length=100

Testing

pip install pytest
pytest tests/ -v

πŸ“‹ Requirements

pandas>=1.3.0
numpy>=1.21.0
openpyxl>=3.6.0
requests>=2.26.0
beautifulsoup4>=4.9.3
lxml>=4.6.3
sqlalchemy>=1.4.0
py_vollib>=0.1.0
scipy>=1.7.0
matplotlib>=3.4.0

πŸ”’ Disclaimer

This tool is for educational and research purposes. Options trading involves substantial risk of loss. Always:

  • βœ“ Understand strategies before trading
  • βœ“ Use proper risk management
  • βœ“ Paper trade before live trading
  • βœ“ Consult financial advisors
  • βœ“ Start with small positions

Past performance does not guarantee future results.

πŸ“„ License

MIT License - See LICENSE file for details

πŸ™‹ Support

  • GitHub Issues: GitHub Issues
  • GitHub Discussions: GitHub Discussions
  • ICICI Direct Support: 9650200000
  • Nuvama Support: 1800-102-3335
  • Documentation: See /docs folder for comprehensive guides

🎯 Roadmap

  • Additional broker integrations (Zerodha, 5Paisa, ICICI Securities)
  • ML-based strategy recommendations
  • Options spreads optimizer
  • Real-time SMS/Email alerts
  • Mobile app for monitoring
  • Portfolio optimization module
  • Advanced Greeks visualizations
  • Options chain screener

πŸ‘ Acknowledgments

Built by options traders, for options traders. Inspired by professional tools like SensiBull and QuantsApp, but open-source and free.

πŸ“ž Connect


⭐ If you find this useful, please star the repository!


Last Updated: Jan 2025
Version: 1.0.0
Python: 3.7+

About

Stock option Strategies calculator

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Languages