Skip to main content

Isolated Perpetual Futures Risk

Calculate risk metrics for isolated perpetual futures positions.

POST /isolated_perp_risk

Overview

The Isolated Perpetual Futures Risk endpoint performs risk assessment for isolated perpetual futures positions. It helps traders understand the risk profile of their positions, including liquidation probability, return on investment, and equity drawdown metrics.

Input Parameters

Required Parameters

ParameterTypeDescription
modelstringThe methodology to perform the risk assessment.
marketstringMarket to analyze (e.g., BTC, ETH).
model_lookbackintegerDays of historical data for model fitting (1-1000).
trade_duration_hoursintegerDuration to simulate in hours (minimum 3).
contract_typestringType of perpetual contract ('linear' or 'inverse').
funding_methodstringFunding calculation method ('flat' or 'debitflat').
entry_pricenumberEntry price of position (minimum 0.000001).
initial_marginnumberInitial margin deposit (USD for linear, coins for inverse).
position_sizenumberPosition size (negative = short).
funding_ratenumberFunding rate per interval (-0.999999 to 0.999999).
funding_interval_hournumberHours between funding payments (minimum 0.000001).

Optional Parameters

ParameterTypeRequiredDescriptionDefaultExample
contract_sizenumberRequired for linearAsset amount per contract.1
contract_value_usdnumberRequired for inverseUSD value per contract.1
mc_iterintegerNoMonte Carlo iterations (GBM only, 1-100000).1000
analysis_datestringNoEnd date for analysis window (format mm-dd-yyyy).Today's date"08-22-2024"
unrealized_pnlnumberNoInitial unrealized PnL.0100
volatility_shocknumberNoVolatility shock factor (GBM only).00.5

Model Values

ValueDescription
GBMPerform a Monte Carlo simulation using Geometric Brownian Motion.
HISTORICALPerform risk assessment using an empirical model based on historical data.

Response

The response includes two main sections:

  • Arguments: The processed input parameters
  • Results: The risk assessment results

Results Fields

FieldTypeDescription
PrMarginCallnumberProbability of at least one margin call
PrLiquidationnumberProbability of liquidation
RoiobjectReturn on investment quantiles
AccFundingobjectAccumulated funding payment quantiles
MaxEquityDrawDownobjectMaximum equity drawdown quantiles (negative values)
LeverageobjectMedian leverage per simulation quantiles
FinalEquityobjectFinal equity value quantiles

Quantile Objects

Each quantile object contains the following percentile values:

FieldDescription
q011st percentile
q055th percentile
q1010th percentile
q2525th percentile
q5050th percentile (median)
q7575th percentile
q9090th percentile
q9595th percentile
q9999th percentile

Examples

GBM Example

Request

POST /isolated_perp_risk
{
"model": "GBM",
"market": "BTC",
"model_lookback": 90,
"trade_duration_hours": 24,
"contract_type": "linear",
"funding_method": "flat",
"entry_price": 65000,
"initial_margin": 1000,
"position_size": 0.5,
"funding_rate": 0.0001,
"funding_interval_hour": 8,
"contract_size": 1,
"mc_iter": 1000
}

Response

{
"Arguments": {
"analysis_date": "10-09-2025",
"contract_size": 1,
"contract_type": "linear",
"entry_price": 65000,
"funding_interval_hour": 8,
"funding_method": "flat",
"funding_rate": 0.0001,
"initial_margin": 1000,
"market": "BTC",
"mc_iter": 1000,
"model": "GBM",
"model_lookback": 90,
"position_size": 0.5,
"trade_duration_hours": 24,
"unrealized_pnl": 0
},
"Results": {
"PrMarginCall": 0.021,
"PrLiquidation": 0.002,
"Roi": {
"q01": -0.32451,
"q05": -0.19876,
"q10": -0.14532,
"q25": -0.07621,
"q50": 0.00124,
"q75": 0.08342,
"q90": 0.16521,
"q95": 0.21987,
"q99": 0.32145
},
"AccFunding": {
"q01": 0.00003,
"q05": 0.00003,
"q10": 0.00003,
"q25": 0.00003,
"q50": 0.00003,
"q75": 0.00003,
"q90": 0.00003,
"q95": 0.00003,
"q99": 0.00003
},
"MaxEquityDrawDown": {
"q01": -0.35421,
"q05": -0.21345,
"q10": -0.15678,
"q25": -0.08765,
"q50": -0.03421,
"q75": -0.01234,
"q90": -0.00432,
"q95": -0.00123,
"q99": -0.00021
},
"Leverage": {
"q01": 3.12345,
"q05": 3.23456,
"q10": 3.34567,
"q25": 3.45678,
"q50": 3.56789,
"q75": 3.67891,
"q90": 3.78912,
"q95": 3.89123,
"q99": 4.01234
},
"FinalEquity": {
"q01": 675.49,
"q05": 801.24,
"q10": 854.68,
"q25": 923.79,
"q50": 1001.24,
"q75": 1083.42,
"q90": 1165.21,
"q95": 1219.87,
"q99": 1321.45
}
},
"Risk engine version": "1.5.0"
}

Historical Example

Request

POST /isolated_perp_risk
{
"model": "HISTORICAL",
"market": "ETH",
"model_lookback": 90,
"trade_duration_hours": 48,
"contract_type": "linear",
"funding_method": "flat",
"entry_price": 3500,
"initial_margin": 1000,
"position_size": -0.5,
"funding_rate": -0.0001,
"funding_interval_hour": 8,
"contract_size": 1
}

Response

{
"Arguments": {
"analysis_date": "10-09-2025",
"contract_size": 1,
"contract_type": "linear",
"entry_price": 3500,
"funding_interval_hour": 8,
"funding_method": "flat",
"funding_rate": -0.0001,
"initial_margin": 1000,
"market": "ETH",
"model": "HISTORICAL",
"model_lookback": 90,
"position_size": -0.5,
"trade_duration_hours": 48,
"unrealized_pnl": 0
},
"Results": {
"PrMarginCall": 0.031,
"PrLiquidation": 0.005,
"Roi": {
"q01": -0.29876,
"q05": -0.17654,
"q10": -0.12345,
"q25": -0.05432,
"q50": 0.00321,
"q75": 0.07654,
"q90": 0.14321,
"q95": 0.19876,
"q99": 0.29876
},
"AccFunding": {
"q01": -0.00003,
"q05": -0.00003,
"q10": -0.00003,
"q25": -0.00003,
"q50": -0.00003,
"q75": -0.00003,
"q90": -0.00003,
"q95": -0.00003,
"q99": -0.00003
},
"MaxEquityDrawDown": {
"q01": -0.32145,
"q05": -0.19876,
"q10": -0.14321,
"q25": -0.07654,
"q50": -0.02345,
"q75": -0.00987,
"q90": -0.00321,
"q95": -0.00098,
"q99": -0.00012
},
"Leverage": {
"q01": 2.98765,
"q05": 3.12345,
"q10": 3.23456,
"q25": 3.34567,
"q50": 3.45678,
"q75": 3.56789,
"q90": 3.67891,
"q95": 3.78912,
"q99": 3.89123
},
"FinalEquity": {
"q01": 701.24,
"q05": 823.46,
"q10": 876.55,
"q25": 945.68,
"q50": 1003.21,
"q75": 1076.54,
"q90": 1143.21,
"q95": 1198.76,
"q99": 1298.76
}
},
"Risk engine version": "1.5.0"
}

Interpreting Results

  • PrMarginCall: The probability that your position will receive at least one margin call during the simulation period.
  • PrLiquidation: The probability that your position will be liquidated during the simulation period.
  • Roi: Return on investment distribution, showing potential profit/loss outcomes.
  • AccFunding: Accumulated funding payments distribution (positive values indicate receiving funding, negative values indicate paying funding).
  • MaxEquityDrawDown: Maximum equity drawdown distribution, showing the worst temporary loss of equity in each simulation.
  • Leverage: The distribution of median leverage observed across simulations.
  • FinalEquity: The distribution of final equity values at the end of the simulation period.
POST/isolated_perp_risk
curl -X POST "https://api.bitpulse.io/isolated_perp_risk" \
  -H "Content-Type: application/json" \
  -H "x-api-key: YOUR_API_KEY" \
  -d '{
    "model": "GBM",
    "market": "BTC",
    "model_lookback": 90,
    "trade_duration_hours": 24,
    "contract_type": "linear",
    "funding_method": "flat",
    "entry_price": 65000,
    "initial_margin": 1000,
    "position_size": 0.5,
    "funding_rate": 0.0001,
    "funding_interval_hour": 8,
    "contract_size": 1,
    "mc_iter": 1000
  }'