Skip to content

JittoJoseph/Hummingbird-Project

Repository files navigation

Hummingbird Trading System

Opening Range Breakout (ORB) strategy for NSE equities using Upstox API.

Overview

Implements the ORB strategy based on academic research, achieving 41.6% annual returns with Sharpe ratio of 2.81 on U.S. equities (2016-2023).

Strategy Logic

  1. Pre-Market Screening: Filter stocks by price > ₹5, volume ≥ 1M shares, ATR > ₹0.50
  2. Opening Range: Track first 5-minute candle (9:15-9:20 AM IST)
  3. Stock Selection: Filter by relative volume ≥ 100%, select top 20 stocks
  4. Entry: Breakout above/below opening range with 1% risk sizing
  5. Stop Loss: 10% of 14-day ATR
  6. Exit: Close all positions at 3:25-3:30 PM

Key Insights

  • Relative Volume Filter: Critical for identifying "Stocks in Play" with institutional activity
  • Opening Range Direction: Predicts intraday trend continuation
  • Risk Management: ATR-based stops and position sizing

Features

  • Research-based ORB strategy implementation
  • Upstox V3 API integration with rate limiting
  • Arrow columnar storage + DuckDB analytics
  • Backtest, paper, and live trading modes
  • Risk management with position sizing and stops
  • Deterministic backtesting with fixed seeds
  • SQLite manifest for instrument metadata
  • Parallel data fetching with gap detection

Installation

Prerequisites

  • Java 17+
  • Maven 3.8+
  • Upstox trading account

Build

git clone <repository>
cd hummingbird
mvn clean package

Usage

Authentication

export UPSTOX_API_KEY="your_key"
export UPSTOX_API_SECRET="your_secret"
java -jar target/hummingbird-trading-1.0.0-SNAPSHOT.jar auth
export UPSTOX_ACCESS_TOKEN="token_from_auth"

Download Instruments

java -jar target/hummingbird-trading-1.0.0-SNAPSHOT.jar download-instruments

Fetch Data

java -jar target/hummingbird-trading-1.0.0-SNAPSHOT.jar fetch \
  --from 2025-01-01 --to 2025-01-31 \
  --interval 1 --unit minutes

Backtest

java -jar target/hummingbird-trading-1.0.0-SNAPSHOT.jar backtest \
  --from 2025-01-01 --to 2025-01-31

Paper Trading

java -jar target/hummingbird-trading-1.0.0-SNAPSHOT.jar paper

Live Trading

java -jar target/hummingbird-trading-1.0.0-SNAPSHOT.jar live --confirm

Configuration

Edit config.yaml or use CLI options:

Parameter Description Default
min_relative_volume_pct Minimum relative volume 100%
max_positions Maximum positions 20
stop_loss_atr_pct Stop loss % of ATR 10%
risk_per_trade_pct Risk per trade 1%
fetch.rate_limit_per_sec API rate limit 3.0
fetch.parallelism Parallel fetch threads 8
initial_capital Starting capital ₹10L
atr_period ATR calculation period 14

Architecture

Components

  • Data Layer: Upstox API client, Arrow storage, SQLite manifest
  • Strategy Engine: ORB with relative volume filtering and ATR stops
  • Execution: Simulated/Paper/Live routers with realistic costs
  • Risk Management: Position sizing, ATR stops, circuit breakers

Data Flow

  1. Download NSE instruments and metadata
  2. Fetch historical 1-minute bars for analysis
  3. Pre-market: Calculate ATR and volume statistics
  4. Intraday: Monitor opening range and execute breakouts
  5. Risk management: ATR-based stops and position sizing

Research Foundation

Based on "A Profitable Day Trading Strategy For The U.S. Equity Market" (Zarattini et al., 2024).

Key findings:

  • Basic ORB: 3.2% annual return
  • With relative volume filter: 41.6% annual return (12x improvement)
  • Sharpe ratio: 2.81, Max drawdown: 12%, Beta: 0.00

Disclaimer

Trading involves substantial risk of loss. Past performance does not guarantee future results. Test thoroughly in paper mode before live trading. Ensure compliance with regulations.

About

Opening Range Breakout (ORB) strategy for NSE equities using Upstox API.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors