Site menu BS-12C calculator: instructions
e-mail icon
Site menu

BS-12C calculator: instructions

e-mail icon

These instructions are about the extra Black-Scholes functions present in the following software: Web BS-12C, Touch Fin Black-Scholes for Android and Black-Scholes flavor within Touch RPN for iPhone.

Black-Scholes features

First things first. The "apocryphal" Black-Scholes functions displace bond and depreciation functions, so the latter are not available in this layout. Some key combinations that are vacant in the original 12C are used as well.

Figure 1: Location of the new functions

The financial registers keep their original functions, but they have additional meanings for Black-Scholes functions:

There is a small grey label at bottom left of each financial key, with the symbols typically used in option literature: t, r, S, σ, K.

I put together a video skimming the usage of new functions:

BS-12C tutorial

Interest and volatility rates are entered and calculated as percentages. Black-Scholes literature tends to use decimal values, but we prefer % because that's the custom in 12C. Note that n, i and PMT should be expressed in same unit of time. Normally, rates are in %/year, so time should be expressed in (or converted to) years.

For example, if volatility and interest are expressed in %/year, a six-month expiration should be entered as 0.5. An expiration of thirty calendar days should be entered as 0.0822 (30÷365).

At the end of this section we show how to convert rates to different time units. By now, we'll stick to %/year.

Example: find the fair price (also called premium) of a call option, 60 days until expiration, strike is 100. Spot price of underlying asset is 98.50, volatility is 25%/year, interest is 11%:

(The last operation can be found at Yx.)

Result should be 4.12. To reach the C, P function, use the key sequence normally used for 12C's PRICE.

C, P also calculates the premium for put options, which is stored at register Y in the stack. For example, after executing the example above, you can press X<>Y and see that put premium is 3.83, given the same parameters.

Option's "greeks" occupy the keys neighbouring C, P in place of bond and depreciation. The exception is rho (ρ) that is located at CHS. The fCHS combination has no assigned function in the original 12C.

In order to calculate a greek, just enter the parameters in financial registers (if you hadn't already) then press f and the desired greek. Likewise C, P the call's greek goes to stack register X while the put's greek goes to register Y.

Given the same parameters, greeks "gamma" and "vega" have the same value for calls and puts. X and Y registers are filled with the same value for consistency.

Calculating the implied volatility is probably even more important than calculating premiums. The following example finds the implied volatility of a call when its market price is 5.15:

(The last operation can be found at Σ.)

The result should be 31.47%. This value is not automatically copied onto PMT but you can do it yourself, just press PMT right after the calculation.

Implied volatility calculation for puts is carried out by a separate function: f σ impl P (at + key).

The remaining new functions are all located at "apocryphal" positions, that is, they are accessible by key sequences that don't exist in HP-12C (likewise the "rho" greek).

Functions f d1 and g d2 are both located at ×. They calculate d1 and d2 intermediate results of the Black-Scholes classical formula. It is necessary to enter all five parameters in financial registers to get the correct results.

Functions f N'(x) (found at ) and g N(x) (found at +) calculate the normal distribution value and cummulative distribution, respectively. They are used like any other one-parameter function (like LN, square root, etc.).

These four functions are more of didactic value, for people that are geting acquainted with Black-Scholes model, but they are occasionaly useful. For example, the probability of call exercise is equal to N(d2):

The result should be 0.491, meaning that exercise probability of this call is 49,1%, almost a coin-toss.

The functions f 252÷ and g 365÷ both located at ÷ are shortcuts to convert a value in days to years and store it onto n in one stroke.

The function f ΔDYS 252 works like ΔDYS but it counts business days. It takes the eight holidays of the USA financial market into account.

Note that it correctly determines the moving holidays (e.g. Good Friday) for each year, but it does not consider when the holiday was created. Calculating the number of business days in year 850 A.D. won't yield a historically correct result.

ΔDYS 252 does not count the first day when the date difference is positive (X more into the future than Y). For example, it finds zero business days between 25 Apr 2014 (Friday) and 27 Apr 2014 (Sunday).

This behavior is inverted when the date difference is negative: it finds one business day between 27 Apr 2014 (Sunday) and 25 Apr 2014 (Friday). This keeps the symmetry and allows the calculator to support both day-counting conventions just by swapping the arguments.

All "apocryphal" functions can be used in programs, but naturally the program code just makes sense for this calculator version.

And that's it. What's left is to show how to convert rates for a different time unit, e.g. from %/year to %/day.

You are not forced to use years as unit of time. If you find more convenient to type n in days, just convert interest and volatility rates to %/day. Or maybe you prefer months, it's your call.

For interest rates, just divide. To convert %/year to %/day, divide by 365 (if you use calendar days) or 252 (if you use business days). Since the Black-Scholes formula uses continuous compounding (er), simple division is indeed correct.

In the case of volatility, divide by the square root. In order to convert a rate of 25%/year to %/day, using calendar days (365 per year), divide by the root of 365:

The result should be 1,308%. That's your daily volatility.

More extra features

Since engine version 32.0 (press RCL ON to get the version of your current engine) this version also supports two extra math operations.

First one is the gamma function in place of factorial. That is, n! works for non-integer and negative numbers, like in HP-11C. The result for integer numbers is not affected.

Second one is logarithm for complex numbers. In this case, we could not replace the original LN because it takes two registers. Type RCL gLN to calculate principal logarithm of a complex number. The real part should be in register X and the imaginary part in register Y. Likewise, X and Y are filled with real and imaginary parts of the result.

Suggestion: type real part ENTER imaginary part X<->YRCL g LN because it feels more natural to type the real part first.

Instructions in portuguese

As funções "apócrifas" Black-Scholes estão em posições originalmente ocupadas por títulos (bonds) e depreciação, bem como algumas posições extras sem uso na 12C original. Portanto, esta versão não tem os recursos de bonds e depreciação.

Os registradores financeiros, além de funcionarem da forma convencional, também são utilizados nas funções Black-Scholes:

Na face da calculadora, há um pequeno lembrete abaixo e à esquerda de cada uma das teclas financeiras, com as siglas comumente utilizadas em literatura de opções (t, r, S, σ, K).

Segue um vídeo com uma descrição resumida dos novos recursos:

Tutorial BS-12C

As taxas de juros e volatilidade são digitadas e calculadas como porcentagens. Na literatura a respeito do modelo Black-Scholes, é mais comum usar estes valores na forma decimal, mas preferimos usar % porque é mais consistente com a HP-12C original.

Note que n, i e PMT devem estar na mesma unidade de tempo. Normalmente as taxas de juros e volatilidade são expressas em %/ano, e assim o prazo também deve ser expresso em anos. Por exemplo, um prazo de seis meses deve ser digitado como 0,5. Já trinta dias corridos deve ser digitado como 0.0822 (30÷365).

Ao final deste texto vamos mostrar como converter taxas para diferentes unidades de tempo. Por ora, vamos adotar o ano como unidade de tempo.

Exemplo: calcule o valor (também denominado prêmio) de uma opção de compra, a 60 dias corridos do vencimento, cujo strike é 100. Cotação atual do ativo é igual a 98,50, volatilidade de 25% ao ano, taxa de juros de 11%:

(Nota: a última operação pode ser encontrada na tecla de potenciação.)

O resultado deve ser 4,12. A função C, P ocupa o lugar onde estava PRICE na calculadora original.

A função C, P também calcula o prêmio da opção de venda, que é armazenado no registrador Y da pilha. Por exemplo, após executar o cálculo acima, você pode pressionar X<>Y e constatar que o prêmio da opção de venda, dados os mesmos parâmetros, é 3,83.

As "gregas" do modelo Black-Scholes ocupam as teclas vizinhas a C, P onde havia as funções de depreciação. A exceção é a grega rho (ρ) acessada via f e CHS. A HP-12C original não atribuía nenhuma função a esta combinação de teclas.

Para calcular qualquer grega, basta entrar os parâmetros nos registradores financeiros (se já não tinham sido digitados, é claro) e acionar a grega. Da mesma forma que C, P, a grega para a opção de compra vai para o registrador X, enquanto a grega da opção de venda vai para o registrador Y.

As gregas gamma e vega têm sempre o mesmo valor para opções de compra e de venda. Os registradores X e Y são então preenchidos com o mesmo valor.

Tão importante quanto o prêmio é o cálculo da volatilidade implícita. Suponha que a opção do exemplo anterior esteja valendo agora 5,15 no mercado. Ache a volatilidade implícita:

(Nota: a última operação pode ser encontrada na tecla de estatística.)

O resultado deve ser 31,47%. Este resultado não é automaticamente copiado para PMT mas você pode fazer esta cópia facilmente, pressionando PMT em seguida ao cálculo.

O cálculo da volatilidade implícita para opções de venda é executado por uma função separada: f σ impl P localizada na tecla +.

As demais funções novas ocupam posições "apócrifas", ou seja, são acessíveis por combinações de teclas que não existiam na HP-12C, tal qual a grega "rho".

As funções f d1 e g d2 ambas acumuladas na tecla ×, servem para calcular os fatores d1 e d2 da fórmula Black-Scholes. É preciso informar todos os cinco parâmetros dos registradores financeiros para então executar estes cálculos.

As funções f N'(x) (acumulada na tecla ) e g N(x) (acumulada na tecla +) servem para calcular a distribuição normal e a distribuição normal acumulada, respectivamente. Estas funções pedem apenas um parâmetro e comportam-se similarmente a LN, raiz quadrada etc.

As quatro funções mostradas acima têm fins mais didáticos, para quem está aprendendo Black-Scholes, mas eventualmente elas podem ser úteis. Por exemplo, a probabilidade de exercício de uma opção de compra é igual a N(d2):

O resultado deve ser 0,491, significando que a probabilidade de exercício da nossa velha opção de compra de exemplo é de 49,1%.

As funções f 252÷ e g 365÷ ambas acumuladas na tecla ÷, são atalhos para armazenar um prazo em dias no registrador n já devidamente convertido para anos.

A função f ΔDYS 252 funciona tal qual ΔDYS mas conta apenas dias úteis. Ela desconta inclusive os oito feriados do mercado financeiro estadunidense. Desde já peço desculpas aos nacionalistas de plantão.

Note que alguns destes feriados são móveis, e.g. sexta-feira santa. A calculadora determina corretamente suas datas a cada ano, mas não leva em conta quando o feriado foi instituído. O número de dias úteis do ano 851 A.D. não será calculado de forma historicamente correta.

ΔDYS 252 não conta o primeiro dia quando a diferença de datas é positiva (X mais no futuro que Y). Por exemplo, ela considera que há zero dias úteis entre 25/04/2014 (sexta-feira) e 27/04/2014 (domingo).

Este comportamento é invertido quando a diferença de datas é negativa: por exemplo, ela conta um dia útil entre 27/04/2014 (domingo) e 25/04/2014 (sexta-feira). Isto mantém a simetria e permite à calculadora suportar ambas as convenções de contagem de dias pela simples inversão dos argumentos.

Todas as funções "apócrifas" podem ser utilizadas em programas. Naturalmente, o código do programa só faz sentido neste "sabor" de calculadora e não funcionaria numa HP-12C comum.

Então é isso. Faltou explicar como converter taxas para diferentes unidades de tempo, e.g. de %/ano para %/dia.

Nada obriga que os cálculos envolvendo opções usem prazos e taxas anuais. Se você achar mais conveniente digitar n em dias, basta converter as taxas para %/dia. Ou digitar o prazo em meses e usar %/mês... você escolhe.

No caso da taxa de juros, basta dividir. Para converter %/ano para %/dia, divida por 365 ou 252, conforme você tenha adotado dias úteis ou corridos como unidade de tempo.

Alguém poderia perguntar se a mera divisão não é incompatível com juros compostos. Como as fórmulas Black-Scholes usam capitalização contínua (ejuro), a divisão é realmente a forma correta de converter.

Já no caso da taxa de volatilidade é preciso dividir pela raiz quadrada. Para converter uma taxa de 25%/ano para %/dia, considerando 365 dias por ano, divida pela raiz de 365:

O resultado deve ser 1,308%. Esta é a volatilidade em % ao dia.

Mais recursos extras

Desde a versão 32.0 do motor (pressione RCL ON para obter a versão do motor da sua calculadora) a versão Black-Scholes possui dois operadores matemáticos adicionais.

O primeiro é a função gama, que substitui o fatorial. Isto é, n! passa a funcionar para argumentos não-inteiros ou negativos, tal qual em calculadoras científicas. O resultado para números inteiros não é afetado.

O segundo operador é o logaritmo para números complexos. Neste caso não foi possível simplesmente substituir o operador LN original porque a nova versão exige dois argumentos. Digite RCLgLN para calcular o logaritmo principal de um número complexo. A parte real deve estar no registrador X e a parte imaginária no registrador Y. Seguindo a forma, X e Y são preenchidos com as partes real e imaginária do resultado.

Sugestão de uso: digite parte real ENTER parte imaginária X<->YRCL g LN, já que parece mais "sensato" digitar primeiro a parte real do argumento.

e-mail icon