Class DividendSchedule

java.lang.Object
com.quantfinlib.pricing.DividendSchedule

public final class DividendSchedule extends Object
Discrete (cash) dividends for equity derivatives — the forward-looking counterpart to data.CorporateActions' historical back-adjustment.

A continuous dividend yield misprices single stocks: dividends arrive as dated cash amounts, and an option spanning an ex-date is worth measurably less (calls) or more (puts) than the yield approximation says. This class implements the escrowed dividend model: the PV of all dividends with ex-dates before expiry is stripped from spot, and the remainder diffuses lognormally,

   S* = S − Σ dᵢ·e^{−r·tᵢ}   (tᵢ ≤ T),   F = S*·e^{(r−borrow)T}
 

Borrow cost enters exactly like a continuous yield (carry in BlackScholes) — hard-to-borrow names price calls down and puts up the same way a dividend yield does. For American exercise, feed adjustedSpot(double, double, double) into pricing.BinomialTree the same way.

Instances are immutable; all queries are allocation-free.

  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    static final DividendSchedule
    Empty schedule (no dividends): forwards collapse to the yield-free case.
  • Method Summary

    Modifier and Type
    Method
    Description
    double
    adjustedSpot(double spot, double rate, double horizonYears)
    Escrowed spot: what actually diffuses once dividend PV is stripped.
    int
     
    double
    europeanPrice(BlackScholes.OptionType type, double spot, double strike, double rate, double borrow, double vol, double timeYears)
    European price under the escrowed model: Black-Scholes on the adjusted spot, with borrow as the carry.
    double
    forward(double spot, double rate, double borrow, double horizonYears)
    Equity forward with discrete dividends and a continuous borrow fee.
    of(double[] exTimesYears, double[] amounts)
     
    double
    presentValue(double rate, double horizonYears)
    Present value of all dividends with ex-dates on or before horizonYears.

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Field Details

    • NONE

      public static final DividendSchedule NONE
      Empty schedule (no dividends): forwards collapse to the yield-free case.
  • Method Details

    • of

      public static DividendSchedule of(double[] exTimesYears, double[] amounts)
      Parameters:
      exTimesYears - ex-dividend times in years from valuation, ascending
      amounts - cash amounts per share, aligned with the times
    • presentValue

      public double presentValue(double rate, double horizonYears)
      Present value of all dividends with ex-dates on or before horizonYears.
    • adjustedSpot

      public double adjustedSpot(double spot, double rate, double horizonYears)
      Escrowed spot: what actually diffuses once dividend PV is stripped.
    • forward

      public double forward(double spot, double rate, double borrow, double horizonYears)
      Equity forward with discrete dividends and a continuous borrow fee.
    • europeanPrice

      public double europeanPrice(BlackScholes.OptionType type, double spot, double strike, double rate, double borrow, double vol, double timeYears)
      European price under the escrowed model: Black-Scholes on the adjusted spot, with borrow as the carry. With no dividends and no borrow this is exactly the plain Black-Scholes price.
    • count

      public int count()