Class DividendSchedule
java.lang.Object
com.quantfinlib.pricing.DividendSchedule
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
FieldsModifier and TypeFieldDescriptionstatic final DividendScheduleEmpty schedule (no dividends): forwards collapse to the yield-free case. -
Method Summary
Modifier and TypeMethodDescriptiondoubleadjustedSpot(double spot, double rate, double horizonYears) Escrowed spot: what actually diffuses once dividend PV is stripped.intcount()doubleeuropeanPrice(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.doubleforward(double spot, double rate, double borrow, double horizonYears) Equity forward with discrete dividends and a continuous borrow fee.static DividendScheduleof(double[] exTimesYears, double[] amounts) doublepresentValue(double rate, double horizonYears) Present value of all dividends with ex-dates on or beforehorizonYears.
-
Field Details
-
NONE
Empty schedule (no dividends): forwards collapse to the yield-free case.
-
-
Method Details
-
of
- Parameters:
exTimesYears- ex-dividend times in years from valuation, ascendingamounts- 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 beforehorizonYears. -
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()
-