The right (or option)
- to buy (call) or sell (put)
- a specific quantity
- of underlying asset or instrument
- at a specified strike price
- on (European style) or before a specified date
Call option is (normally) exercised only when the strike price is below the market price. Otherwise, you could simply buy it at the market price. Similarly, put option is (normally) exercised only when the strike price is above the market price.
The option could be sold at a fixed strike price or the spot price. If the former, it could be at a discount (does this happen?) or at a premium (price). Premium is income to the issuer regardless of whether the option is exercised.
The price can be split into 2 components:
-
intrinsic value (for the holder):
a. put : max(strike - spot, 0) b. call: max(spot - strike, 0)
-
extrinsic value (time value): premium - intrinsic
The extrinsic value is the risk that the writer takes on.
Factors affecting premium:
-
price of underlying
a. payment of dividends decreases price too
-
how far strike price is from spot price
-
volatility of underlying
- Weiner process
-
Geometric Brownian Motion (GBM): log follows Weiner process with drift
$\mu$ - Ito's drift-diffusion processes
- Exists at least one risky and one riskless asset
- Stock prices follow geometric Brownian motion with constant drift and volatility
- European options
- No dividends
- No arbitrage opportunities
- No fees
- Can buy/sell any amount, even fractional
-
t: time in years
-
r: annualized risk-free rate
-
S(t): price of underlying asset S at time t
-
$\mu$ : drift rate of S -
$\sigma$ : s.d. of stock's return -
V(t, S): price of option
-
T: Expiration time
-
$\tau$ : time till expiration -
K: Strike price
- Stock prices follow GBM.
- Use Ito's lemma to get
$dV$ . - Consider a delta neutral portfolio with one short option and
$\partial V \over \partial S$ long shares. Compute the value of the holdings$\Pi$ as sum of these 2 assets and the total profit/loss as changes in the value. - Plug in 1 and 2 into 3 and watch the
$W_t$ corresponding to the Weiner process vanish. There's no more uncertainty. - Our portfolio is riskless, so has risk-free rate of return.
- Use 3, 4 and 5 to eliminate
$\Pi$ and receive the BS equation.
Alternatively,
See pdf.
- Delta: partial derivative of V w.r.t S
- Gamma: second partial derivative of V w.r.t S
- Theta: partial derivative of V w.r.t t
- Vega (nu) : partial derivative of V w.r.t
$\sigma$ - Rho : partial derivative of V w.r.t r
Common for financial institutions to set risk limits on for each of the greeks. Delta and Gamma are the main ones for trading.
Consider a one-step binomial tree where with probability p, the underlying stock price goes up to S_u and with probability 1 - p, it goes down to S_d. We might be tempted to price this by the getting the expected payoff: p(S_u - S_0), but that would be incorrect.
Instead we price by replication. Consider a delta neutral portfolio with one short option and
Binomial model can be viewed as discrete version of Black-Scholes model. Consider n-step binomial tree. Now match the first two moments of
Binomial model can easily handle American option.
See papers Least-Square Policy Iteration and Learning Exercise Policies for American Options.
American option can be formulated as a finite-horizon optimal stopping problem (best time to exercise). LSPI solves this through policy iteration. It uses Least-Square Temporal Differencing Q-learning to improve the value which in turn is used to improve the policy, and this goes on until there's no change in policy. As for "least-square" part of LSPI, instead of using Q directly, we approximate Q as dot(w, phi(s, a)) where phi is the feature map. Writing the bellman equation in matrix form and plugging in approximate Q gives us a nice system of linear equations in the form Ax = b that we solve.
Once we have the policy, we can go ahead and calculate the expected payoff by simulating paths the spot price might take. For this we use GBM. Alternatives are GARCH and Heston model. The expected payoff is nothing but the fair value of the option.
To summarize the algorithm:
- Simulate price paths
- Solve optimal stopping problem using LSPI
- Calculate expected payoff using the optimal policy across numerous simulations.
LSPI:
pi <- initial policy
do:
pi' <- pi
pi <- LSTDQ(..., pi')
until pi' = pi
MC is great for pricing path dependent or exotic options. I did not implement any variance reduction methods like control variates, mode matching or cross entropy.
Black-scholes is the analytical solution of the PDE. Why not solve it numerically instead?
We may discretize S, but discretizing pricer/pde.py
is from QF5204 course I took. It uses local volatility.
I wrote my own pde-based pricer in notebooks/4.ipynb
to price double no touch option using crank-nicolson (CN) scheme. Other options are Douglas schema (instead of 0.5 like in CN, we use w
) and Euler implicit/explict.
- Add regression tests
- Improve LSPI variance: maybe average out multiple runs of LSPI?
- Use real world data to compare payoffs: Kaggle $SPY, Kaggle $AAPL
- Implement Longstaff-Schwartz least-squares method.
- Implement RNNs like LSTM or GRU.