TI-Basic Z80 Programming/Mathematical Finance Programming

TI-BASIC is a simple programming language used on Texas Instruments graphing calculators. This module shows you how to program some standard financial calculations:

Ito's lemma
Let's begin defining a stochastic process through its Ito's definition:

:Func :{t,x} :EndFunc

So for our TI-calculator, a diffusion process formally defined by:

$$dS = f(S,t) dt + g(S,t) dW$$

is defined by a set of two terms:

{ f(S,t), g(S,t) }

For an exponential brownian motion, we define:

defsto(m*s, sigma*s) &rarr; ds(s)

Now we want to use Ito's lemma on functions of $$S$$ and $$t$$:

:Func :{d(f,t)+ds[1]*d(f,x)+ds[2]^2*d(d(f,x),x)/2, ds[2]*d(f,x)} :EndFunc

This can now be used to apply Ito's lemma to $$\ln(S)$$:

dsto(ln(S),S,t,ds(S)) >> { m - sigma^2/2, sigma }

this tell us that:

$$d \ln(S) = \left(m-{1\over 2}\sigma^2\right) dt + \sigma dW, \;{\rm when}\; dS = m S dt + \sigma S dW$$

Black-Scholes Equation
Now we can try to prove the Black-Scholes equation.

Define a portfolio with an option and $$\Delta$$ shares of $$S$$:

V(S,t) - Delta * S &rarr; Pi

and apply Ito's lemma to obtain $$d \Pi$$:

dsto(Pi, S, t, ds(S)) &rarr; dPi

we now want to nullify the stochastic part of $$d \Pi$$ by chosing an appropriate value for $$\Delta$$:

solve( dPi[2]=0, Delta) >> Delta = d(V(S,t), S) or sigma S = 0

we now know that the correct value for $$\Delta$$ is:

$$\Delta = {\partial V(S,t)\over \partial S}$$

On another side, we have:

$$ d\Pi = r \Pi dt = r ( V(S,t)-\Delta\cdot S) dt$$

which leads us to the equation:

$$ (\partial_t V + {1\over 2}\sigma^2 S^2 \partial^2_S V) dt = r ( V(S,t)-\Delta S) dt$$

At first we need to replace $$\Delta$$ by its value into $$d\Pi$$, and then equalize with

solve( dPi[2]=0, Delta) | sigma > 0 and S > 9 &rarr; sol >> Delta = d(V(S,t), S) dPi | sol &rarr; dPi >> {sigma^2 d^2(V(S,t), S^2) S^2 /2 + d(V(S,t), t), 0 } dPi = defsto( r(V(S,t) - Delta S) ) | sol &rarr; BS >> { BS_equation, true }

and now we've got the Black-Schole Differential Equation into the variable BS_equation[1]!