Difference between revisions of "Programming/Kdb/Labs/Option pricing"
| Line 41: | Line 41: | ||
=Task 1: Implementing the standard normal cumulative distribution function= | =Task 1: Implementing the standard normal cumulative distribution function= | ||
<math>N(x)</math> can be approximated by | As mentioned in the <span class="plainlinks">[https://www.amazon.co.uk/Handbook-Mathematical-Functions-Formulas-Graphs/dp/161427617X/ Handbook of Mathematical Functions]</span>, <math>N(x)</math> can be approximated by | ||
<center><math> | <center><math> | ||
\left\{ | \left\{ | ||
| Line 55: | Line 55: | ||
</math><center> | </math><center> | ||
<math>k = 1 / (1 + 0.2316419x), c_1 = 0.319381530, c_2 = -0.356563782, c_3 = 1.781477937, c_4 = -1.821255978, c_5 = 1.330274429</math>. | <math>k = 1 / (1 + 0.2316419x), c_1 = 0.319381530, c_2 = -0.356563782, c_3 = 1.781477937, c_4 = -1.821255978, c_5 = 1.330274429</math>. | ||
Can you implement this function in q? | |||
Revision as of 23:18, 17 June 2021
Background: the Black-Scholes formulae
Recall the celebrated Black-Scholes equation
Here
- is a time in years; we generally use Failed to parse (MathML with SVG or PNG fallback (recommended for modern browsers and accessibility tools): Invalid response ("Math extension cannot connect to Restbase.") from server "https://wikimedia.org/api/rest_v1/":): {\displaystyle t = 0} as now;
- Failed to parse (MathML with SVG or PNG fallback (recommended for modern browsers and accessibility tools): Invalid response ("Math extension cannot connect to Restbase.") from server "https://wikimedia.org/api/rest_v1/":): {\displaystyle V(S, t)} is the value of the option;
- Failed to parse (MathML with SVG or PNG fallback (recommended for modern browsers and accessibility tools): Invalid response ("Math extension cannot connect to Restbase.") from server "https://wikimedia.org/api/rest_v1/":): {\displaystyle S(t)} is the price of the underlying asset at time Failed to parse (MathML with SVG or PNG fallback (recommended for modern browsers and accessibility tools): Invalid response ("Math extension cannot connect to Restbase.") from server "https://wikimedia.org/api/rest_v1/":): {\displaystyle t} ;
- Failed to parse (MathML with SVG or PNG fallback (recommended for modern browsers and accessibility tools): Invalid response ("Math extension cannot connect to Restbase.") from server "https://wikimedia.org/api/rest_v1/":): {\displaystyle \sigma} is the volatility — the standard deviation of the asset's returns;
- Failed to parse (MathML with SVG or PNG fallback (recommended for modern browsers and accessibility tools): Invalid response ("Math extension cannot connect to Restbase.") from server "https://wikimedia.org/api/rest_v1/":): {\displaystyle r} is the annualized risk-free interest rate, continuously compounded;
- Failed to parse (MathML with SVG or PNG fallback (recommended for modern browsers and accessibility tools): Invalid response ("Math extension cannot connect to Restbase.") from server "https://wikimedia.org/api/rest_v1/":): {\displaystyle q} is the annualized (continuous) dividend yield.
The solution of this equation depends on the payoff of the option — the terminal condition. In particular, if at the time of expiration, Failed to parse (MathML with SVG or PNG fallback (recommended for modern browsers and accessibility tools): Invalid response ("Math extension cannot connect to Restbase.") from server "https://wikimedia.org/api/rest_v1/":): {\displaystyle T} , the payoff is given by Failed to parse (MathML with SVG or PNG fallback (recommended for modern browsers and accessibility tools): Invalid response ("Math extension cannot connect to Restbase.") from server "https://wikimedia.org/api/rest_v1/":): {\displaystyle V(S, T) = C(S, T) =: \max\{S - K, 0\}} , in other words, the option is a European call option, then the value of the option at time Failed to parse (MathML with SVG or PNG fallback (recommended for modern browsers and accessibility tools): Invalid response ("Math extension cannot connect to Restbase.") from server "https://wikimedia.org/api/rest_v1/":): {\displaystyle t} is given by the Black-Scholes formula for the European call:
where Failed to parse (MathML with SVG or PNG fallback (recommended for modern browsers and accessibility tools): Invalid response ("Math extension cannot connect to Restbase.") from server "https://wikimedia.org/api/rest_v1/":): {\displaystyle \tau = T - t} is the time to maturity, Failed to parse (MathML with SVG or PNG fallback (recommended for modern browsers and accessibility tools): Invalid response ("Math extension cannot connect to Restbase.") from server "https://wikimedia.org/api/rest_v1/":): {\displaystyle F = S_t e^{(r - q)\tau}} is the forward price, and
and
Here we have used Failed to parse (MathML with SVG or PNG fallback (recommended for modern browsers and accessibility tools): Invalid response ("Math extension cannot connect to Restbase.") from server "https://wikimedia.org/api/rest_v1/":): {\displaystyle N(x)} to denote the standard normal cumulative distribution function,
Similarly, if the payoff is given by Failed to parse (MathML with SVG or PNG fallback (recommended for modern browsers and accessibility tools): Invalid response ("Math extension cannot connect to Restbase.") from server "https://wikimedia.org/api/rest_v1/":): {\displaystyle V(S, T) = P(S, T) =: \max\{K - S, 0\}} , in other words, the option is a European put option, then the value of the option at time Failed to parse (MathML with SVG or PNG fallback (recommended for modern browsers and accessibility tools): Invalid response ("Math extension cannot connect to Restbase.") from server "https://wikimedia.org/api/rest_v1/":): {\displaystyle t} is given by the Black-Scholes formula for the European put:
We will implement the formulae for the European call and European put in q. However, our first task is to implement Failed to parse (MathML with SVG or PNG fallback (recommended for modern browsers and accessibility tools): Invalid response ("Math extension cannot connect to Restbase.") from server "https://wikimedia.org/api/rest_v1/":): {\displaystyle N(x)} .
Task 1: Implementing the standard normal cumulative distribution function
As mentioned in the Handbook of Mathematical Functions, Failed to parse (MathML with SVG or PNG fallback (recommended for modern browsers and accessibility tools): Invalid response ("Math extension cannot connect to Restbase.") from server "https://wikimedia.org/api/rest_v1/":): {\displaystyle N(x)} can be approximated by
where
Failed to parse (MathML with SVG or PNG fallback (recommended for modern browsers and accessibility tools): Invalid response ("Math extension cannot connect to Restbase.") from server "https://wikimedia.org/api/rest_v1/":): {\displaystyle k = 1 / (1 + 0.2316419x), c_1 = 0.319381530, c_2 = -0.356563782, c_3 = 1.781477937, c_4 = -1.821255978, c_5 = 1.330274429} .
Can you implement this function in q?