Parity¶
The parity
package provides models and utilities based on put-call parity.
ImpliedRateModel ¶
Bases: BaseModel
Calculates the risk-free rate implied by put-call parity for European options.
This model solves for the risk-free rate r
that satisfies the equation:
C - P = Sexp(-qT) - Kexp(-rT)
Source code in src/optpricing/models/base/base_model.py
ParityModel ¶
Bases: BaseModel
A utility model providing calculations based on Put-Call Parity.
This class is not a traditional pricing model but uses the BaseModel
interface to provide parity-based calculations, such as finding a
complementary option price.
Source code in src/optpricing/models/base/base_model.py
lower_bound_rate ¶
lower_bound_rate(
*,
call_price: float,
put_price: float,
spot: float,
strike: float,
t: float,
) -> float
Calculates the minimum risk-free rate r
to avoid arbitrage.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
call_price
|
float
|
The price of the call option. |
required |
put_price
|
float
|
The price of the put option. |
required |
spot
|
float
|
The current price of the underlying asset. |
required |
strike
|
float
|
The strike price of the option. |
required |
t
|
float
|
The time to maturity. |
required |
Returns:
Type | Description |
---|---|
float
|
The minimum continuously compounded risk-free rate to avoid arbitrage. |
Raises:
Type | Description |
---|---|
ValueError
|
If an arbitrage opportunity already exists (S - C + P >= K). |
Source code in src/optpricing/parity/parity_model.py
price_bounds ¶
price_bounds(
*,
spot: float,
strike: float,
r: float,
t: float,
call: bool,
option_price: float,
) -> tuple[float, float]
Return absolute (lower, upper) no-arbitrage bounds for an option.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
spot
|
float
|
The current price of the underlying asset. |
required |
strike
|
float
|
The strike price of the option. |
required |
r
|
float
|
The risk-free rate. |
required |
t
|
float
|
The time to maturity. |
required |
call
|
bool
|
True if |
required |
option_price
|
float
|
The price of the known option. In this case it is a place holder. |
required |
Returns:
Type | Description |
---|---|
tuple[float, float]
|
A tuple containing the (lower_bound, upper_bound) for the option price. |