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