Menu Close

JavaScript Finance: Profit probability calculator for iron condor

This function calculates the profit or loss for an iron condor option strategy at a given stock price and returns the probability of achieving the maximum profit or loss. It uses the stock price, strike price, and short and long call and put strike prices as inputs, and it assumes that the volatility and time to expiration of the options are known constants.

function ironCondorProfitProbability(stockPrice, strikePrice, shortCallStrike, longCallStrike, shortPutStrike, longPutStrike, volatility, timeToExpiration) {
  // Calculate the profit or loss for the iron condor option strategy at the given stock price
  const maxProfit = Math.min(shortCallStrike, longPutStrike) - Math.max(longCallStrike, shortPutStrike);
  const maxLoss = Math.max(longCallStrike, shortPutStrike) - Math.min(shortCallStrike, longPutStrike) - 2 * (longCallStrike - shortCallStrike);
  const profit = Math.max(0, Math.min(maxProfit, stockPrice - Math.max(longCallStrike, shortPutStrike)))
                - Math.max(0, Math.min(maxLoss, Math.max(longCallStrike, shortPutStrike) - stockPrice));

  // Calculate the probability of achieving the maximum profit or loss
  const d1 = (Math.log(stockPrice / strikePrice) + (0.5 * Math.pow(volatility, 2)) * timeToExpiration) / (volatility * Math.sqrt(timeToExpiration));
  const d2 = d1 - volatility * Math.sqrt(timeToExpiration);
  const profitProbability = cdf(d1) - cdf(-d2);

  return {
    profit,
    profitProbability,
  };
}

The function first calculates the maximum profit and maximum loss for the iron condor strategy, based on the positions of the short and long call and put options. It then calculates the profit or loss at the given stock price, taking into account the maximum profit and loss and the positions of the options.

Finally, the function calculates the probability of achieving the maximum profit or loss by using the normal distribution and the cumulative distribution function (cdf). This probability is then returned as the output of the function.

Leave a Reply

Your email address will not be published. Required fields are marked *