Black-Scholes on the HP 10bII+

This module shows how the HP 10bII+ financial calculator can be used to price a call option with the Black-Scholes (1973) model. A key feature of this calculator is the ability to return the normal lower tail probability for the value z. The alternative is often a probability table.

The HP 10bII+ financial calculator is approved for use in the GARP FRM exams, but not the CFA exams.

According to the the Black-Scholes (1973) model, the theoretical price \(C\) for European call option on a non dividend paying stock is $$\begin{equation} C=S_0 N(d_1)-Xe^{-rT}N(d_2) \end{equation}$$ where
$$d_1=\frac {log \left( \frac{S_0}{X} \right) + \left( r+ \frac {\sigma^2} {2} \right )T}{\sigma \sqrt{T}} $$ $$d_2=\frac {log \left( \frac{S_0}{X} \right) + \left( r – \frac {\sigma^2} {2} \right )T}{\sigma \sqrt{T}} = d_1 – \sigma \sqrt{T}$$

In equation 1, \(S_0\) is the stock price at time 0, \(X\) is the exercise price of the option, \(r\) is the risk free interest rate, \(\sigma\) represents the annual volatility of the underlying asset, and \(T\) is the time to expiration of the option. Further discussion and examples in Excel can be found at: Black-Scholes option pricing

The Black-Scholes model in the HP 10bII+

Example: The stock price at time 0, six months before expiration date of the option is $42.00, option exerise price is $40.00, the rate of interest on a government bond with 6 months to expiration is 5%, and the annual volatility of the underlying stock is 20%.

Calculation of the the call price can be completed as a 5 step process. Step 1. d1; 2. d2; 3. N(d1); 4. N(d2); and step 5, C. To point the way, the call price from equation 1 is $4.08.

We need some planning first, because intermediate results are assigned to memory registers in the calculator.

The order of calculation is influenced by my exposure to the HP 12C (reverse polish notation) calculator. It uses a memory stack, so numbered registers can be reduced, but it does not have a normal lower tail probability function.

    Replacing the variable names with their values will help in performing the calculation. The numbers in this list refer to the major sections of the steps in the calculations shown below.

    1. \(d_1=\frac {log \left( \frac{42.00}{40.00} \right) + \left( 0.05+ \frac {0.2^2} {2} \right )0.5}{0.2 \sqrt{0.5}}\). This is equation 1 with values from the example.

    2. Calculates the numerator of d1
    3. Calculates the denominator of d1 – stored in register 3 at step 12
    4. Calculates the value of d1 – stored in register 0 at step 15
  1. \(N(d_1)\) from the normal lower tail probability – stored in register 1 at step 17
  2. \(d_2= d_1 – 0.2 \sqrt{0.5}\)
  3. \(N(d_2)\) from the normal lower tail probability – stored in register 2 at step 22
  4. \(C=42 N(d_1)-40e^{-0.05 \times 0.5}N(d_2)\) – the value to the right of the minus sign (40e…) is stored in register 4 at step 26

Calculator mode: Chain

Display digits: 4

1 a. d1 numerator

# HP 10bII+ Keystrokes Comment Display reads
1. 0.2 [Orange SHIFT down] [x2] sigma2 [0.0400]
2. [\(\div\)] 2 Divide by 2
3. [+] 0.05 Add the rate
4. [x] 0.5 [=] Multiply by time and display the result [0.0350]
5. [Orange SHIFT down] [STO] 0 Store the displayed value in register 0
6. 42 [\(\div\)] 40 [=] Divide the stock price by the exercise price, and display result [1.0500]
7. [Orange SHIFT down] [LN] Take the natural log of the value in the display [0.04879]
8. [+] [RCL] 0 [=] Add the displayed value to recalled value from register 0 [0.08379]
9. [Orange SHIFT down] [STO] 0 Store the displayed value in register 0 [0.08379]

1 b. d1 denominator

# HP 10bII+ Keystrokes Comment Display reads
10. 0.5 [Orange SHIFT down] [√x] Take the square root of time [0.7071]
11. [x] 0.2 [=] Multiple by 0.2 and display result

[0.1414]

12. [Orange SHIFT down] [STO] 3 Store the displayed value in register 3
(For use later in d2)

[0.1414]

1 c. d1

# HP 10bII+ Keystrokes Comment Display reads
13. [Orange SHIFT down] [1/x] Take the reciprocal of the value in the display

[7.0711]

14. [x] [Recall] 0 [=] Multiply the recalled value from register 0 [0.5925]
15. [Orange SHIFT down] [STO] 0 Store the displayed value d1 in register 0
(For use later in d2)
[0.5925]

2. N(d1)

# HP 10bII+ Keystrokes Comment Display reads
16. [Blue SHIFT up] [Z⇆P] Calculate the cumulative normal probability for the value in the display

[0.7232]

17. [Orange SHIFT down] [STO] 1 Store the displayed value N(d1) in register 1
(For use later in C)
[0.7232]

3. d2

# HP 10bII+ Keystrokes Comment Display reads
18. [RCL] 0 Recall d1 from register 0

[0.5925]

19. [-] [RCL] 3 Subtract the value of d1 recalled from register 3 [0.1414]
20. [=] Display the value of d2 [0.4511]

4. N(d2)

# HP 10bII+ Keystrokes Comment Display reads
21. [Blue SHIFT up] [Z⇆P] Calculate the cumulative normal probability for the value in the display

[0.6740]

22. [Orange SHIFT down] [STO] 2 Store the displayed value N(d2) in register 2
(For use later in C)
[0.6740]

5. C

# HP 10bII+ Keystrokes Comment Display reads
23. 0.05 [+/-] [x] 0.5 [=] Calculate the exponent: multiply the negative rate by time [-0.02500]
24. [Orange SHIFT down] [ex] Base e to negative rate x time [0.9753]
25. [x] [RCL] 2 [x] 40 [=] Multiply the displayed value by the recalled value from register 2, then multiply by the exercise price and display the result [26.2955]
26. [Orange SHIFT down] 4 Store the intermediate result in register 4
(For use in step 28)
[26.2955]
27. 42 [x] [RCL] 1 [=] Multiply the stock price by the value in register 1 [30.3760]
28. [-] [RCL] 4 [=] From the displayed value subtract the recalled value from register 4 [4.0805]