API Reference / MarginCalculator
Class: MarginCalculator
Defined in: src/resources/MarginCalculator.ts:32
Margin Calculator API wrapper.
Supports both single-order and multi-leg margin calculations with hedge benefits. For F&O strategies (spreads, iron condors, etc.), use the multi-leg endpoint to get combined margin requirements with hedging benefits applied.
See
https://dhan.co/help/docs/api/v2/#margin-calculator
Constructors
Constructor
new MarginCalculator(
httpClient):MarginCalculator
Defined in: src/resources/MarginCalculator.ts:33
Parameters
httpClient
Returns
MarginCalculator
Methods
calculateSingle()
calculateSingle(
request):Promise<MultiScripMarginCalcResponse>
Defined in: src/resources/MarginCalculator.ts:52
Calculate margin for a single order.
Parameters
request
Returns
Promise<MultiScripMarginCalcResponse>
Example
const margin = await client.marginCalculator.calculateSingle({
exchangeSegment: "NSE_FNO",
productType: "INTRADAY",
optionType: "CALL",
instrumentType: "OPTIDX",
securityId: "44000", // NIFTY 24500 CE
transactionType: "BUY",
quantity: 50,
price: 150.00,
});calculateMulti()
calculateMulti(
legs):Promise<MultiScripMarginCalcResponse>
Defined in: src/resources/MarginCalculator.ts:98
Calculate margin for multiple legs with hedge benefits.
This is essential for multi-leg strategies like spreads, straddles, and iron condors, where margin benefits are applied due to hedging.
Parameters
legs
Array of order legs for the strategy
Returns
Promise<MultiScripMarginCalcResponse>
Example
// Bull Call Spread: Buy lower strike call, sell higher strike call
const margin = await client.marginCalculator.calculateMulti([
{
exchangeSegment: "NSE_FNO",
productType: "INTRADAY",
securityId: "44000", // NIFTY 24500 CE
transactionType: "BUY",
quantity: 50,
price: 150.00,
},
{
exchangeSegment: "NSE_FNO",
productType: "INTRADAY",
securityId: "44050", // NIFTY 24600 CE
transactionType: "SELL",
quantity: 50,
price: 100.00,
},
]);
// The response will show reduced margin due to hedge benefitsbullCallSpread()
bullCallSpread(
options):Promise<KnowYourMarginResponse>
Defined in: src/resources/MarginCalculator.ts:125
Helper: Build a bull call spread margin calculation.
Parameters
options
longStrikeSecurityId
string
shortStrikeSecurityId
string
quantity
number
longPrice
number
shortPrice
number
productType?
"CNC" | "INTRADAY" | "MARGIN" | "MTF" | "CO" | "BO"
Returns
Promise<KnowYourMarginResponse>
Example
const margin = await client.marginCalculator.bullCallSpread({
longStrikeSecurityId: "44000", // Lower strike (buy)
shortStrikeSecurityId: "44050", // Higher strike (sell)
quantity: 50,
longPrice: 150.00,
shortPrice: 100.00,
});bullPutSpread()
bullPutSpread(
options):Promise<KnowYourMarginResponse>
Defined in: src/resources/MarginCalculator.ts:176
Helper: Build a bull put spread margin calculation.
Parameters
options
longStrikeSecurityId
string
shortStrikeSecurityId
string
quantity
number
longPrice
number
shortPrice
number
productType?
"CNC" | "INTRADAY" | "MARGIN" | "MTF" | "CO" | "BO"
Returns
Promise<KnowYourMarginResponse>
Example
const margin = await client.marginCalculator.bullPutSpread({
longStrikeSecurityId: "43950", // Lower strike (buy put)
shortStrikeSecurityId: "44000", // Higher strike (sell put)
quantity: 50,
longPrice: 80.00,
shortPrice: 120.00,
});ironCondor()
ironCondor(
options):Promise<KnowYourMarginResponse>
Defined in: src/resources/MarginCalculator.ts:233
Helper: Build an iron condor margin calculation (4 legs).
Parameters
options
longPutSecurityId
string
shortPutSecurityId
string
shortCallSecurityId
string
longCallSecurityId
string
quantity
number
prices
{ longPut: number; shortPut: number; shortCall: number; longCall: number; }
prices.longPut
number
prices.shortPut
number
prices.shortCall
number
prices.longCall
number
productType?
"CNC" | "INTRADAY" | "MARGIN" | "MTF" | "CO" | "BO"
Returns
Promise<KnowYourMarginResponse>
Example
const margin = await client.marginCalculator.ironCondor({
longPutSecurityId: "43900",
shortPutSecurityId: "43950",
shortCallSecurityId: "44050",
longCallSecurityId: "44100",
quantity: 50,
prices: {
longPut: 50.00,
shortPut: 80.00,
shortCall: 70.00,
longCall: 40.00,
},
});