Execution Settings Schema
This document provides the complete schema reference for the executionSettings configuration object. Execution settings define how the algorithm interacts with the market and executes trades.
Overview
Execution settings are part of Step 5 of algorithm configuration. They control:
- Execution mode (live, paper, backtest)
- Exchange selection
- Broker integration
- Order types
- Slippage assumptions
- Indian market-specific settings
Schema Structure
interface ExecutionSettings {
mode: 'live' | 'paper' | 'backtest'
exchange: 'NSE' | 'BSE' | 'MCX' | 'NCDEX'
broker?: 'AngelOne' | 'Zerodha' | 'Upstox' | 'Dhan'
orderType: 'market' | 'limit' | 'stop' | 'stop_limit'
slippage: number
indianMarketSettings?: IndianMarketSettings
}
Core Fields
mode
- Type:
enum - Required: Yes
- Values:
live- Real trading with actual capitalpaper- Simulated trading with real market databacktest- Historical data testing
- Example:
"paper"
Mode Descriptions:
Live Trading
- Executes real trades through broker API
- Uses actual capital
- Incurs real costs (brokerage, taxes)
- Requires broker connection
- Risk: Real money at stake
Requirements:
- Broker account configured
- Sufficient balance
- API credentials valid
- Risk parameters validated
Paper Trading
- Simulates trades with real-time data
- No real money involved
- No brokerage costs
- Tests strategy in live market conditions
- Risk: None (simulation only)
Use Cases:
- Testing new strategies
- Validating algorithm logic
- Building confidence before going live
- Training and learning
Backtesting
- Tests strategy on historical data
- Fast execution (no waiting for candles)
- Evaluates past performance
- Identifies optimal parameters
- Risk: None (historical data only)
Use Cases:
- Strategy development
- Parameter optimization
- Performance validation
- Walk-forward analysis
Transition Path:
Backtest → Paper Trading → Live Trading
exchange
- Type:
enum - Required: Yes
- Values:
NSE- National Stock ExchangeBSE- Bombay Stock ExchangeMCX- Multi Commodity ExchangeNCDEX- National Commodity & Derivatives Exchange
- Example:
"NSE"
Exchange Details:
NSE (National Stock Exchange)
- Trading Hours: 09:15 - 15:30 IST
- Pre-Open: 09:00 - 09:15 IST
- Instruments: Equities, Futures, Options
- Symbol Format:
NSE:RELIANCE,NSE:NIFTY25JAN24500CE
Segments:
- Cash Market (Equities)
- Futures & Options (F&O)
- Currency Derivatives
BSE (Bombay Stock Exchange)
- Trading Hours: 09:15 - 15:30 IST
- Pre-Open: 09:00 - 09:15 IST
- Instruments: Equities, Futures, Options
- Symbol Format:
BSE:INFY,BSE:SENSEX25JANFUT
Segments:
- Cash Market (Equities)
- Futures & Options (F&O)
- Currency Derivatives
MCX (Multi Commodity Exchange)
- Trading Hours: 09:00 - 23:30 IST (varies by commodity)
- Instruments: Commodity Futures
- Symbol Format:
MCX:CRUDEOIL25JANFUT,MCX:GOLD
Commodities:
- Energy: Crude Oil, Natural Gas
- Metals: Gold, Silver, Copper, Zinc
- Agriculture: Cotton, Cardamom
NCDEX (National Commodity & Derivatives Exchange)
- Trading Hours: 10:00 - 17:00 IST (most commodities)
- Instruments: Agricultural Commodity Futures
- Symbol Format:
NCDEX:SOYBEAN,NCDEX:WHEAT
Commodities:
- Oilseeds: Soybean, Mustard
- Cereals: Wheat, Rice
- Spices: Turmeric, Jeera
broker
- Type:
enum - Required: No (required for live mode)
- Values:
AngelOne- Angel One (formerly Angel Broking)Zerodha- ZerodhaUpstox- UpstoxDhan- Dhan
- Example:
"AngelOne"
Broker Comparison:
AngelOne
- API: SmartAPI
- Rate Limit: 1 request/second
- Supported: NSE, BSE, MCX, NCDEX
- Features: Full F&O support, commodity trading
- Setup: See Broker Integration Guide for details
Zerodha
- API: Kite Connect
- Rate Limit: 3 requests/second
- Supported: NSE, BSE, MCX, NCDEX
- Features: Most popular, extensive documentation
- Setup: See Broker Integration Guide for details
Upstox
- API: Upstox API
- Rate Limit: 2 requests/second
- Supported: NSE, BSE, MCX
- Features: Low brokerage, good API
- Setup: See Broker Integration Guide for details
Dhan
- API: Dhan API
- Rate Limit: 1 request/second
- Supported: NSE, BSE, MCX
- Features: Modern platform, good support
- Setup: See Broker Integration Guide for details
orderType
- Type:
enum - Required: Yes
- Values:
market- Execute at current market pricelimit- Execute at specified price or betterstop- Trigger market order at stop pricestop_limit- Trigger limit order at stop price
- Example:
"market"
Order Type Details:
Market Order
- Execution: Immediate at best available price
- Guarantee: Execution guaranteed (in liquid markets)
- Price: Not guaranteed (subject to slippage)
- Use Case: Quick entry/exit, liquid instruments
Pros:
- Fast execution
- Guaranteed fill (usually)
- Simple to implement
Cons:
- Price uncertainty
- Slippage in volatile markets
- Gap risk
Example:
{
"orderType": "market"
}
Limit Order
- Execution: Only at specified price or better
- Guarantee: Price guaranteed
- Fill: Not guaranteed (may not execute)
- Use Case: Price-sensitive entries, illiquid instruments
Pros:
- Price control
- No slippage
- Better fills possible
Cons:
- May not execute
- Requires price monitoring
- Partial fills possible
Example:
{
"orderType": "limit"
}
Stop Order (Stop-Loss Market)
- Trigger: When price reaches stop level
- Execution: Market order after trigger
- Use Case: Stop losses, breakout entries
Pros:
- Automatic trigger
- Guaranteed execution after trigger
- Good for stop losses
Cons:
- Slippage after trigger
- Gap risk
- May trigger on spike
Example:
{
"orderType": "stop"
}
Stop-Limit Order
- Trigger: When price reaches stop level
- Execution: Limit order after trigger
- Use Case: Controlled stop losses, precise breakouts
Pros:
- Price control after trigger
- No slippage
- Precise execution
Cons:
- May not fill after trigger
- Complex to manage
- Requires two price levels
Example:
{
"orderType": "stop_limit"
}
slippage
- Type:
number - Required: Yes
- Range:
0to5 - Unit: Percentage
- Description: Expected slippage for backtesting and paper trading
- Default:
0.1 - Example:
0.1
Purpose:
- Realistic backtest results
- Account for execution costs
- Simulate real market conditions
Calculation:
Actual Fill Price = Expected Price × (1 ± slippage/100)
Long Entry: Fill = Expected × (1 + slippage/100)
Long Exit: Fill = Expected × (1 - slippage/100)
Short Entry: Fill = Expected × (1 - slippage/100)
Short Exit: Fill = Expected × (1 + slippage/100)
Example:
{
"slippage": 0.1
}
With ₹500 expected price and 0.1% slippage:
- Long Entry: ₹500.50 (0.1% worse)
- Long Exit: ₹499.50 (0.1% worse)
Recommended Values:
| Market Condition | Slippage |
|---|---|
| Highly Liquid (Nifty 50) | 0.05-0.1% |
| Liquid (Top 200 stocks) | 0.1-0.2% |
| Moderate Liquidity | 0.2-0.5% |
| Low Liquidity | 0.5-1.0% |
| Very Low Liquidity | 1.0-2.0% |
Factors Affecting Slippage:
- Market volatility
- Order size
- Liquidity
- Time of day
- Order type
Indian Market Settings
Optional configuration for India-specific market rules.
interface IndianMarketSettings {
enabled: boolean
autoSquareOff?: AutoSquareOff
productType?: ProductType
circuitBreakerHandling?: 'pause' | 'exit_all' | 'continue'
avoidPreOpen?: boolean
sttCalculation?: boolean
gstCalculation?: boolean
rmsBuffer?: number
}
enabled
- Type:
boolean - Required: Yes
- Description: Whether Indian market settings are enabled
- Example:
true
Auto Square-Off Configuration
interface AutoSquareOff {
enabled: boolean
minutesBeforeClose: number // 5 to 60
}
enabled
- Type:
boolean - Required: Yes (if indianMarketSettings is defined)
- Description: Whether auto square-off is enabled
- Example:
true
minutesBeforeClose
- Type:
number - Required: Yes (if enabled is true)
- Range:
5to60 - Default:
15 - Description: Minutes before market close to square off intraday positions
- Example:
15
Exchange-Specific Times:
- NSE/BSE: 15:15 IST (15 minutes before 15:30 close)
- MCX: 23:15 IST (15 minutes before 23:30 close)
Example:
{
"autoSquareOff": {
"enabled": true,
"minutesBeforeClose": 15
}
}
Purpose:
- Prevents overnight positions for intraday products
- Avoids penalty charges
- Ensures compliance with broker rules
productType
- Type:
enum - Required: No
- Values:
intraday- Intraday/MIS (Margin Intraday Square-off)delivery- Delivery/CNC (Cash and Carry)BTST- Buy Today Sell Tomorrowfutures- Futures contractsoptions- Options contracts
- Example:
"intraday"
Product Type Details:
Intraday (MIS)
- Margin: High leverage (5-20x)
- Holding: Must square off same day
- Auto Square-Off: Yes (before market close)
- Use Case: Day trading, scalping
Delivery (CNC)
- Margin: Full capital required
- Holding: Can hold indefinitely
- Auto Square-Off: No
- Use Case: Swing trading, investing
BTST (Buy Today Sell Tomorrow)
- Margin: Partial (varies by broker)
- Holding: T+1 settlement
- Minimum Hold: 1 day
- Use Case: Short-term swing trades
Futures
- Margin: Based on contract specifications
- Holding: Until expiry or square-off
- Auto Square-Off: On expiry day
- Use Case: Leveraged trading, hedging
Options
- Margin: Premium + margin (for sellers)
- Holding: Until expiry or square-off
- Auto Square-Off: On expiry day
- Use Case: Directional bets, hedging
circuitBreakerHandling
- Type:
enum - Required: No
- Values:
pause- Pause algorithm until circuit breaker liftsexit_all- Exit all positions immediatelycontinue- Continue normal operation
- Default:
pause - Example:
"pause"
Circuit Breaker Triggers:
- 10% market movement: 15-minute halt
- 15% market movement: 45-minute halt
- 20% market movement: Trading suspended for day
Handling Options:
Pause:
- Algorithm stops generating signals
- Existing positions remain open
- Resumes when circuit breaker lifts
Exit All:
- Immediately exits all open positions
- Uses market orders
- May incur slippage
Continue:
- Algorithm continues normal operation
- May not be able to execute during halt
- Resumes when trading resumes
avoidPreOpen
- Type:
boolean - Required: No
- Default:
true - Description: Avoid trading during pre-open session (09:00-09:15)
- Example:
true
Pre-Open Session:
- 09:00-09:08: Order entry
- 09:08-09:12: Order matching
- 09:12-09:15: Buffer period
Risks:
- High volatility
- Wide spreads
- Unpredictable fills
- Gap openings
sttCalculation
- Type:
boolean - Required: No
- Default:
true - Description: Include STT (Securities Transaction Tax) in P&L calculations
- Example:
true
STT Rates:
- Intraday Equity: 0.025% on sell side
- Delivery Equity: 0.1% on both sides
- Futures: 0.01% on sell side
- Options: 0.05% on sell side (premium)
gstCalculation
- Type:
boolean - Required: No
- Default:
true - Description: Include GST (18%) on brokerage and charges
- Example:
true
GST Application:
- 18% on brokerage
- 18% on transaction charges
- 18% on SEBI charges
rmsBuffer
- Type:
number - Required: No
- Range:
0to20 - Unit: Percentage
- Default:
5 - Description: Risk Management System buffer for margin calculations
- Example:
5
Purpose:
- Prevents margin shortfall
- Accounts for intraday volatility
- Ensures sufficient margin
Calculation:
Required Margin = Base Margin × (1 + rmsBuffer/100)
Complete Examples
Paper Trading Setup
{
"mode": "paper",
"exchange": "NSE",
"orderType": "market",
"slippage": 0.1,
"indianMarketSettings": {
"enabled": true,
"autoSquareOff": {
"enabled": true,
"minutesBeforeClose": 15
},
"productType": "intraday",
"circuitBreakerHandling": "pause",
"avoidPreOpen": true,
"sttCalculation": true,
"gstCalculation": true,
"rmsBuffer": 5
}
}
Live Trading Setup
{
"mode": "live",
"exchange": "NSE",
"broker": "AngelOne",
"orderType": "market",
"slippage": 0.1,
"indianMarketSettings": {
"enabled": true,
"autoSquareOff": {
"enabled": true,
"minutesBeforeClose": 15
},
"productType": "intraday",
"circuitBreakerHandling": "pause",
"avoidPreOpen": true,
"sttCalculation": true,
"gstCalculation": true,
"rmsBuffer": 5
}
}
Backtesting Setup
{
"mode": "backtest",
"exchange": "NSE",
"orderType": "market",
"slippage": 0.15,
"indianMarketSettings": {
"enabled": true,
"productType": "intraday",
"sttCalculation": true,
"gstCalculation": true
}
}
Commodity Trading Setup
{
"mode": "live",
"exchange": "MCX",
"broker": "AngelOne",
"orderType": "limit",
"slippage": 0.2,
"indianMarketSettings": {
"enabled": true,
"autoSquareOff": {
"enabled": true,
"minutesBeforeClose": 15
},
"productType": "futures",
"circuitBreakerHandling": "pause",
"sttCalculation": true,
"gstCalculation": true,
"rmsBuffer": 10
}
}
Validation Rules
General Validation
- mode is required
- exchange is required
- orderType is required
- slippage must be between 0 and 5
- broker is required when mode is 'live'
Indian Market Settings Validation
- If enabled is true, all required sub-fields must be present
- autoSquareOff.minutesBeforeClose must be between 5 and 60
- productType must be valid for selected exchange
- rmsBuffer must be between 0 and 20
Mode-Specific Validation
- live: Requires broker, valid API credentials
- paper: No broker required
- backtest: No broker required, slippage recommended
Related Documentation
- Algorithm Structure - Complete algorithm schema
- Risk Parameters Schema - Risk management configuration
- Indian Market Settings - Detailed Indian market guide
- Broker Integration - Broker setup guides
- How to Setup Execution Settings - Step-by-step guide