Introdu˘c~ao a aspectos matem aticos e computacionais em ...

65
Introdu¸ ao a aspectos matem´ aticos e computacionais em Finan¸ cas 1 Alexandre L. Madureira Fundac ¸˜ ao Get´ ulio Vargas—FGV E-mail address : [email protected] Laborat´ orio Nacional de Computac ¸˜ ao Cient´ ıfica—LNCC E-mail address : [email protected] URL: http://www.lncc.br/alm 1 06 de mar¸ co de 2014

Transcript of Introdu˘c~ao a aspectos matem aticos e computacionais em ...

Page 1: Introdu˘c~ao a aspectos matem aticos e computacionais em ...

Introducao a aspectos matematicos e

computacionais em Financas 1

Alexandre L. Madureira

Fundacao Getulio Vargas—FGVE-mail address : [email protected]

Laboratorio Nacional de Computacao Cientıfica—LNCCE-mail address : [email protected]: http://www.lncc.br/∼alm

106 de marco de 2014

Page 2: Introdu˘c~ao a aspectos matem aticos e computacionais em ...

Prefacio. Estas notas de aula sao relativas ao curso de Metodos Computacionais em Fi-nancas da Escola de Pos-Graduacao em Financas da Fundacao Getulio Vargas (EPGE–FGV). Estas notas devem servir de apoio, e certamente nao eliminam a necessidade de seusar os ja classicos, aprimorados e varios livros didaticos, em particular [2, 6, 9].

A parte computacional do curso e baseada no programa Matlab. Os programas gratu-itos e semelhantes Octave e Scilab tambem podem ser utilizados. O Matlab e comumenteescolhido em livros didaticos como a linguagem basica a seu seguida [2, 5, 8]. Os meus mo-tivos para esta escolha sao: o Matlab e relativamente facil de aprender; e uma linguagempoderosa, com varios comandos de alto nıvel disponıveis; tem saıdas graficas bonitas e faceisde serem usadas; finalmente, o Matalab e confiavel do ponto de vista numerico.

Os comandos do Matlab serao introduzidos conforme o uso, nos programas do texto. Euma boa norma inserir comentarios explicativos nos proprios codigos, mas nada ajuda maisno entendimento do que ter que modificar programas.

E uma regra geral de programacao que clareza e rival da eficiencia, ou seja, em geral,quanto mais se modifica um codigo para torna-lo eficiente mais hermetico ele fica. Nestesentido comeco sempre por codigos simples, e se necessario o modifico para torna-lo eficiente.

Page 3: Introdu˘c~ao a aspectos matem aticos e computacionais em ...

Conteudo

Capıtulo 1. Precificacao e modelos binomiais 11.1. Um problema fundamental 11.2. Aspectos Computacionais 41.3. Exercıcios 16

Capıtulo 2. Introducao a probabilidade 192.1. Espacos de probabilidade 192.2. Variaveis aleatorias e esperancas 212.3. Esperanca condicional 232.4. Processos estocasticos, Martingales e o que esperar do futuro 252.5. Processos de Markov 262.6. Aspectos Computacionais 282.7. Exercıcios 31

Capıtulo 3. Precos de Estado 333.1. Mudancas de probabilidades 333.2. Processos de derivadas de Radon-Nikodym 353.3. Aspectos Computacionais 36

Capıtulo 4. Opcoes americanas 514.1. Introducao 514.2. Opcoes americanas independentes de caminhos 514.3. Aspectos Computacionais de opcoes americanas 55

Apendice A. Notacao 57Letras Romanas 57Letras Gregas 57Outros sımbolos 58

Apendice. Index 59

Apendice. Bibliography 61

iii

Page 4: Introdu˘c~ao a aspectos matem aticos e computacionais em ...
Page 5: Introdu˘c~ao a aspectos matem aticos e computacionais em ...

CAPITULO 1

Precificacao e modelos binomiais

1 Neste capıtulo, discutimos de forma introdutoria o problema de precificacao em modelosbinomiais. Comecando com aspectos mais matematicos, concluimos com um lado maiscomputacional, analisando possıveis algoritmos de precificacao.

1.1. Um problema fundamental

Considere um determinado estoque com preco S0 no instante zero, e dois possıveis precosno instante seguinte: S1(H) e S1(T ). As letras H e T sao associadas ao lancar de moedas,“Head” (cara) e “Tail” (coroa). Para facilitar a notacao definimos

(1.1.1) udef=S1(H)

S0

, ddef=S1(T )

S0

.

Temos entao o seguinte esquema:

S0

S1(H) = uS0

S1(T ) = dS0

Em geral, usaremos a letra r para denotar uma taxa de juros constante e portanto cadadolar investido num determinado momento valera 1 + r dolares no momento seguinte. Con-sidere o problema de precificacao, que busca determinar o valor no momento zero conhecendo-se os valores num tempo futuro de um derivativo. Consideraremos sempre que nao ha arbi-tragem, i.e., nao sera possıvel lucrar “com risco zero”. No primeiro exemplo, consideramoso caso de somente um perıodo, e a seguir consideramos o caso mais geral.

Exemplo 1.1. Buscamos aqui determinar o valor no momento zero de um derivativo que temos valores conhecidos V1(H) e V1(T ) no momento um. Se investimos V0 dolares e compramosa quantidade ∆0 de estoques, teremos ∆0S1(·) + (1 + r)(V0 −∆0S0) dolares no tempo um.Queremos entao descobrir V0 e ∆0 tais que

(1.1.2) V1(·) = ∆0S1(·) + (1 + r)(V0 −∆0S0).

Aqui, V1 e S1 sao funcoes, e r, V0, ∆0, S0 sao constantes. Formalizando um pouco mais,definimos o conjunto Ω = H,T, e as funcoes

V1 : Ω→ R, S1 : Ω→ R,1Ultima Atualizacao: 17/01/2014

1

Page 6: Introdu˘c~ao a aspectos matem aticos e computacionais em ...

2 1. PRECIFICACAO E MODELOS BINOMIAIS

onde R denota o conjunto dos numeros reais. No problema de precificacao, sao conhecidoso conjunto Ω, as constantes r ∈ R, S0 ∈ R, e a funcao S1, e sao incognitas as constantesV0 ∈ R, ∆0 ∈ R.

Devemos descobrir qual o capital V0 a ser investido, e a quantidade ∆0 de estoques a sercomprada para que a igualdade de funcoes (1.1.2) valha. Bom, duas funcoes sao iguais se esomente se tomam os mesmos valores. No caso de (1.1.2), queremos que

∆0S1(H) + (1 + r)(V0 −∆0S0) = V1(H)

∆0S1(T ) + (1 + r)(V0 −∆0S0) = V1(T )

Para satisfazer as duas equacoes temos as duas incognitas V0 e S0. Escrevendo em formamatricial,(1.1.3)

A

(V0

∆0

)=

(V1(H)

V1(T )

), A

def=

(1 + r S1(H)− (1 + r)S0

1 + r S1(T )− (1 + r)S0

)=

(1 + r S0q(u− d)

1 + r −S0p(u− d)

).

onde

(1.1.4) pdef=

1 + r − du− d

, qdef=u− 1− ru− d

= 1− p.

Uma identidade algebrica de futura utilidade e

(1.1.5) pu+ qd =u+ ru− du+ ud− d− rd

u− d= 1 + r.

O sistema em (1.1.3) tem solucao, e esta e unica, se e somente se detA 6= 0. Mas

detA = [S1(T )− S1(H)](1 + r) = S0(d− u)(1 + r).

Impomos agora duas exigencias matematicas para que o problema de precificacao tenhasempre solucao:

r 6= −1, S1(T ) 6= S1(H).

Note que a ultima restricao acima e equivalente a d 6= u. Supondo estas restricoes, temosque A e invertıvel, e que

(1.1.6) A−1 =1

S0(1 + r)(u− d)

(S0p(u− d) S0q(u− d)

1 + r −(1 + r)

)=

(p

1+rq

1+r1

S0(u−d)− 1S0(u−d)

).

Portanto, (V0

∆0

)= A−1

(V1(H)V1(T )

)=

(p

1+rq

1+r1

S0(u−d)− 1S0(u−d)

)(V1(H)V1(T )

).

Finalmente,

(1.1.7) V0 =pV1(H) + qV1(T )

1 + r, ∆0 =

V1(H)− V1(T )

(u− d)S0

.

Para que nao haja arbitragem, o valor de V1 no tempo zero e dado por (1.1.7).

Page 7: Introdu˘c~ao a aspectos matem aticos e computacionais em ...

1.1. UM PROBLEMA FUNDAMENTAL 3

Consideramos agora o caso de N perıodos de tempo. Supomos que os precos Si dosestoques no tempo 1 ≤ i ≤ N sejam dados pela funcao Si : Ωi → R, onde

(1.1.8) Ωi def= H,T × · · · × H,T︸ ︷︷ ︸

i vezes

=ω1 . . . ωi : ωj ∈ H,T para j = 1, . . . , i

.

Por exemplo,

Ω1 = H,T, Ω2 = HH,HT, TH, TT,Ω3 = HHH,HHT,HTH,HTT, THH, THT, TTH, TTT, . . . .

Por conveniencia, usamos por vezes Ω0 = ∅.Generalizando (1.1.1), suponha que a taxa de variacao de S seja sempre dada por d e u,

i.e.,

(1.1.9)Si(ω1ω2 . . . ωi−1H) = uSi−1(ω1ω2 . . . ωi−1),

Si(ω1ω2 . . . ωi−1, T ) = dSi−1(ω1ω2 . . . ωi−1),

para i = 1, . . . , N . Introduzindo a notacao ωi = (ω1ω2 . . . ωi) ∈ Ωi, reescrevemos (1.1.9)como

(1.1.10)Si(ωi−1H) = uSi−1(ωi−1),

Si(ωi−1T ) = dSi−1(ωi−1).

Observacao. Para i = 1, temos que interpretar ω0 de forma especial, como “se nao existis-sem”. Por exemplo, S0 e uma constante, e a interpretacao de (1.1.9, 1.1.10) e S1(H) = uS0 eS1(T ) = dS0, como em (1.1.1). Este tipo de “abuso de notacao” simplifica bastante a escritae sera utilizada ao longo deste texto, sem gerar dubiedades.

O esquema abaixo mostra o caso n = 3. Note que o valor S3(ω3) depende somente do

S0

S1(H) = uS0

S1(T ) = dS0

S2(HH) = u2S0

S2(HT ) = S2(TH)

= udS0

S2(TT ) = d2S0

S3(HHH) = u3S0

S3(HHT ) = S3(HTH)

= S3(THH) = u2dS0

S3(HTT ) = S3(THT )

= S3(TTH) = ud2S0

S3(TTT ) = d3S0

Fig. 1. Caso binomial com n = 3

numero de “Caras” (H) e “Coroas” (T) em ω3, e nao da forma especıfica de ω3, e nem daprobabilidade de H e T ocorrerem. Este resultado vem descrito abaixo com mais detalhes.

Lema 1.1.1. Seja i numero inteiro nao negativo, e ω = (ω1, . . . , ωi) ∈ Ωi. Seja #H(ω) o“numero” de “caras” em ω, e #T (ω) o “numero” de “coroas” em ω. Entao

(1.1.11) Si(ω) = S0u#H(ω)d#T (ω).

Page 8: Introdu˘c~ao a aspectos matem aticos e computacionais em ...

4 1. PRECIFICACAO E MODELOS BINOMIAIS

DEMONSTRACAO. Considere uma demonstracao por inducao. Para i = 0 o resultado everdadeiro pois #H(ω) = #T (ω) = 0. Suponha que (1.1.11) seja verdadeiro para umnumero inteiro i = ι. Sem perda de generalidade, suponha ωι+1 = (ωι, H) ∈ Ωι+1 (ascontas seriam quase as mesmas se ωι+1 = (ωι, T ) ). Entao #H(ωι+1) = #H(ωι) + 1 e#T (ωι+1) = #T (ωι), e portanto

Sι+1(ωι+1) = Sι+1(ωι, H) = uSι(ωι) = uS0u#H(ωι)d#T (ωι) = S0u

#H(ωι)+1d#T (ωι)

= S0u#H(ωι+1)d#T (ωι+1).

Portanto a formula (1.1.11) vale tambem para i = ι + 1, e portanto vale para todo inteironao negativo i.

Exemplo 1.2. Considere agora a generalizacao do problema discutido no Exemplo 1.1, istoe, dada uma funcao Vn : Ωn → R (representando o valor de um derivativo), qual e seu “precojusto” no instante inicial? Suponha a taxa de juros fixa em r.

Com investimento Vi−1 e comprando a quantidade ∆i−1 de estoques no instante i − 1,temos que

(1.1.12) Vi(ωi−1, ·) = ∆i−1(ωi−1)Si(ωi−1, ·) + (1 + r)[Vi−1(ωi−1)−∆i−1(ωi−1)Si−1(ωi−1)].

Compare com (1.1.2). Como em (1.1.3), temos que

Ai

(Vi−1(ωi−1)∆i−1(ωi−1)

)=

(Vi(ωi−1, H)

Vi(ωi−1, T )

), Ai

def=

(1 + r Si−1(ωi−1)q(u− d)

1 + r −Si−1(ωi−1)p(u− d)

).

Logo,

detAi = Si−1(ωi−1)(d− u)(1 + r), A−1i =

(p

1+rq

1+r1

Si−1(ωi−1)(u−d)− 1Si−1(ωi−1)(u−d)

),

e entao(1.1.13)

Vi−1(ωi−1) =pVi(ωi−1, H) + qVi(ωi−1, T )

1 + r, ∆i−1(ωi−1) =

Vi(ωi−1, H)− Vi(ωi−1, T )

(u− d)Si−1

.

Compare com (1.1.7).

Terminamos esta subsecao apontando uma relacao entre os valores de Si−1 e Si que segueexatamente a mesma relacao que Vi segue em (1.1.13). De (1.1.10) e (1.1.5) temos

(1.1.14) Si−1(ωi−1) =pu+ qd

1 + rSi−1(ωi−1) =

pSi(ωi−1, H) + qSi(ωi−1, T )

1 + r.

1.2. Aspectos Computacionais

A formula (1.1.13) fornece um algoritmo para calcular V0. Basta supor i = n e calcularVi−1(ωi−1) para todo ωi−1 ∈ Ωi−1. De posse destas informacoes, calculamos Vi−2(ωi−2) para

Page 9: Introdu˘c~ao a aspectos matem aticos e computacionais em ...

1.2. ASPECTOS COMPUTACIONAIS 5

todo ωi−2 ∈ Ωi−2, e assim sucessivamente ate descobrir V0. Em linhas gerais, o algoritmotem a seguinte forma:

entrada: u, d, r (numeros reais)entrada: N (numero inteiro)entrada: VN (vetor)saıda: V0 (numero real)iniciacao das variaveis;1

para i = N to 1 faca2

para todo ωi−1 ∈ Ωi−1 faca3

calcule Vi−1(ωi−1) e ∆i−1(ωi−1) usando (1.1.13)4

fim5

fim6

Algoritmo 1: Precificacao em modelos binomiais

Como dados de entrada para se calcular V0, temos os reais u, d, r, e o numero de perıodosdado pelo inteiro N . A saıda deste programa simplificado sera simplesmente V0. Seria naverdade muito simples tambem fornecer como dados de saıda os vetores VN−1, . . . , V1, queserao calculados, bem como ∆N−1, . . . ,∆1. O programa funciona de seguinte forma: a linha 1corresponde a entrada de dados, e as variaveis de sao “iniciadas”: as variaveis de entrada “re-cebem” os valores desejados via teclado, arquivo ou pelo proprio programa. Outras variaveis(como vetores e matrizes) podem ser apenas definidas (com zeros por exemplo) para ar-mazenar espaco em memoria. A seguir comecamos a calcular V : partindo do perıodo Ncalculamos o perıodo N−1 e assim por diante. Este retrocesso nos perıodos e implementadopelo loop da linha 2, que, note, “anda” para tras! No loop correspondente a linha 3, Vi−1 ecalculado para todas as combinacoes de lancamentos de moedas.

A seguir exploramos implementacoes diretas do algoritmo 1, dado um Vn arbitrario.Entretanto, rapidamente encontramos problemas com o armazenamento de Vn devido a seutamanho, e entao olhamos algoritmos que exploram caracterısticas de Vn permitindo umarmazenamento mais eficiente.

1.2.1. Algoritmos para Vn arbitrario. Para perceber melhor como o algoritmo 1funciona na pratica, considere a seguinte situacao [9, Exemplo 1.3.1].

Exemplo 1.3. Com N = 3, seja S0 = 4, u = 2, d = 1/2, r = 1/4. Entao, segundo oLema 1.1.1 temos os seguinte valores para S3:

S3(H,H,H) = 32, S3(H,H, T ) = S3(H,T,H) = 8, S3(H,T, T ) = 2,

S3(T,H,H) = 8, S3(T,H, T ) = S3(T, T,H) = 2, S3(T, T, T ) = 1/2.

Por (1.1.4), temos p = q = 1/2. Supondo uma “European put”, com “strike price” K = 5,expirando em N = 3, temos V3(ω) = (K − S3(ω))+, i.e.,

V3(H,H,H) = V3(H,H, T ) = V3(H,T,H) = 0, V3(H,T, T ) = 3,

V3(T,H,H) = 0, V3(T,H, T ) = V3(T, T,H) = 3, V3(T, T, T ) = 4.5.

Page 10: Introdu˘c~ao a aspectos matem aticos e computacionais em ...

6 1. PRECIFICACAO E MODELOS BINOMIAIS

Usando (1.1.13), obtemos

V2(H,H) = 0, V2(H,T ) = 1.2, V2(T,H) = 1.2, V2(T, T ) = 3,

V1(H) = 0.48, V1(T ) = 1.68,

V0 = 8.64.

Computacionalmente, podemos por exemplo definir uma matrix(2N × (N + 1)

)= 8 × 4

V0 = 8.64

V1(H) = 0.48

V1(T ) = 1.68

V2(HH) = 0

V2(HT ) = 1.2

V2(TH) = 1.2

V2(TT ) = 3

V3(HHH) = 0

V3(HHT ) = 0

V3(HTH) = 0

V3(HTT ) = 3

V3(THH) = 0

V3(THT ) = 3

V3(TTH) = 3

V3(TTT ) = 4.5

Fig. 2. Caso binomial com N = 3

que va armazenando os resultados conforme estes sejam calculados:

? ? ? 0X ? ? 0X X ? 0X X ? 3X X X 0X X X 3X X X 3X X X 4.5

−→

? ? 0 0X ? 1.2 0X X 1.2 0X X 3 3X X X 0X X X 3X X X 3X X X 4.5

−→

? 0.48 0 0X 1.68 1.2 0X X 1.2 0X X 3 3X X X 0X X X 3X X X 3X X X 4.5

−→

8.64 0.48 0 0X 1.68 1.2 0X X 1.2 0X X 3 3X X X 0X X X 3X X X 3X X X 4.5

A seguir apresentamos algumas implementacoes possıveis do Algoritmo 1.

Page 11: Introdu˘c~ao a aspectos matem aticos e computacionais em ...

1.2. ASPECTOS COMPUTACIONAIS 7

1.2.1.1. Primeira Implementacao: uma versao simples. Uma primeira implementacao emMatlab, denominada precifica1.m seria a seguinte:

%precifica1 precifica derivativos arbitrarios

%

%resolve o problema de precificacao

%do modelo binomial. Os dados sao definidos

%nos scripts exemplo1, etc. A matriz V

%desnecessariamente grande, esparsa. A coluna

%final e’ dada.

clear all;

%exemplopag3;

%exemplopag14;

exemplopag15;

%exemplobign;

ptilde=(1+r-d)/(u-d)

qtilde=(u-1-r)/(u-d)

tic

for i=n-1:-1:1 % loop nas colunas

for j=1:2^(i-1) % loop nas linhas

V(j,i)=( ptilde*V(2*j-1,i+1)+qtilde*V(2*j,i+1) )/(1+r);

end

end

disp(’preco pelo metodo tradicional:’)

V(1,1)

disp(’tempo de computacao:’)

toc

Para uma descricao dos comandos utilizados, basta usar o sistema de ajuda do matlab.Por exemplo, digitando-se

help clear

na janela de comando do Matlab, aparece uma descricao completa do comando clear.O script exemplopag15 nada mais e do que um arquivo (exemplopag15.m) com comandos,

e e listado abaixo:

% define os dados

n=4; % periodos a serem considerados, contando o inicial

r=1/4; % juros

u=2.0; % up factor

d=1/2; % down factor

V=zeros(2^(n-1),n); % zera a matriz V

Page 12: Introdu˘c~ao a aspectos matem aticos e computacionais em ...

8 1. PRECIFICACAO E MODELOS BINOMIAIS

V(:,n)=[0 0 0 3 0 3 3 4.5]

Digitando-se o comando

help clear

na janela de comando do Matlab, obtemos o resultado do programa. Para nao mostrar nomonitor o resultado do calculo de alguma expresso, basta acrescentar um “;” ao fim da linhade comando. Note que para que o valor de uma variavel seja mostrado no monitor, bastanao usar o “;”.

>> precifica1

V =

0 0 0 0

0 0 0 0

0 0 0 0

0 0 0 3.0000

0 0 0 0

0 0 0 3.0000

0 0 0 3.0000

0 0 0 4.5000

ptilde =

0.5000

qtilde =

0.5000

preco a ser pago pela opcao:

ans =

0.8640

tempo de computacao:

Elapsed time is 0.000041 seconds.

Note que os valores intermediarios de V nao sao mostrados no monitor, mas paravizualiza-los, basta digitar “V” na tela de comando do Matlab:

>> V

V =

Page 13: Introdu˘c~ao a aspectos matem aticos e computacionais em ...

1.2. ASPECTOS COMPUTACIONAIS 9

0.8640 0.4800 0 0

0 1.6800 1.2000 0

0 0 1.2000 0

0 0 3.0000 3.0000

0 0 0 0

0 0 0 3.0000

0 0 0 3.0000

0 0 0 4.5000

1.2.1.2. Segunda implementacao: otimizando o tempo de execucao. Um dos aspectos quepode e deve ser explorado quando se usa o programa Matlab e a possibilidade de se evitar“loops” (comandos for, while). Para ver como, note que no programa precifica1.m ha dois“loops” identados. O primeiro “loop” controla o perıodo em que os calculos sao feitos. Osegundo “loop” permite que os valores de V num determinado perıodo seja calculado emfuncao do perıodo seguinte, e este for que tentaremos eliminar.

Fixemos o perıodo “i”. Note que, na coluna i + 1 de V , a constante “ptilde” multiplicaos valores de V com ındices ımpares, e “qtilde” multiplica os valores de V com ındices pares.Podemos entao criar dois “subvetores” contendo os valores de V com ındices pares e ımpares,e usar estes vetores para calcular a i-esima coluna de V . Considere o exemplo abaixo, comos valores do Exemplo 1.3.

Exemplo 1.4. Como no Exemplo 1.3, armazenando V numa matriz 8 × 4 (que tambemchamaremos de V ), sua ultima coluna sera dada por

V (:, 4) =

0003033

4.5

.

Note queV (1, 3)V (2, 3)V (3, 3)V (4, 3)

=p

1 + r

V (1, 4)V (3, 4)V (5, 4)V (7, 4)

+q

1 + r

V (2, 4)V (4, 4)V (6, 4)V (8, 4)

=2

5

0003

+2

5

033

4.5

=

0

1.21.23

Continuando para o perıodo i = 2, temos(

V (1, 2)V (2, 2)

)=

p

1 + r

(V (1, 3)V (3, 3)

)+

q

1 + r

(V (2, 3)V (4, 3)

)=

2

5

(0

1.2

)+

2

5

(1.23

)=

(0.481.68

)Finalmente, para i = 1,

V (1, 1) =p

1 + r

(V (1, 2)

)+

q

1 + r

(V (2, 2)

)= 8.64

A implementacao em matlab das ideias acima vem a seguir, num programa denominadoprecifica1turbo.m.

Page 14: Introdu˘c~ao a aspectos matem aticos e computacionais em ...

10 1. PRECIFICACAO E MODELOS BINOMIAIS

%precifica1turbo precifica derivativos arbitrarios

%

%resolve o problema de precificacao

%do modelo binomial. Os dados sao definidos

%nos scripts exemplopag3, etc. A matriz V

%desnecessariamente grande, esparsa. A coluna

%final e’ dada.

clear all;

%exemplopag3;

%exemplopag14;

exemplopag15;

%exemplobign;

ptilde=(1+r-d)/(u-d)

qtilde=(u-1-r)/(u-d)

tic

for i=n-1:-1:1 % loop nas colunas

impar=1:2:2^i-1;

V([1:2^(i-1)],i)=( ptilde*V(impar,i+1)+qtilde*V(impar+1,i+1) )/(1+r);

end

disp(’preco a ser pago pela opcao:’)

V(1,1)

disp(’tempo de computacao:’)

toc

Os resultados obtidos computacionalmente sao exatamente os mesmos do programa pre-cifica1.m, e nao serao mostrados. O tempo computacional entretanto e reduzido a aproxi-madamente a metade se muitos perıodos sao considerados. Numa estimativa preliminar, ostempos para os dois programas foram, em segundos:

0.0009 0.0007 0.0030 0.0500 1.4000

e0.0009 0.0008 0.0020 0.0300 0.7000

para N = 5, 10, 15, 20, 25. Nota-se entao um acentuado ganho de performance pelo programaprecifica1turbo.m.

1.2.1.3. Terceira implementacao: otimizando o uso de memoria. Ve-se pelo exemploacima que grande parte da memoria alocada para armazenar V , de tamanho 2n−1 × n naoe utilizada. Modificamos entao um pouco o algoritmo para somente utilizar um vetor, detamanho 2n−1.

Para ver como isto e possıvel, considere o Exemplo 1.3. Observe que V3(HHH) eV3(HHT ) sao necessarios para o calculo de V2(HH), mas que apos isto, estes valores naosao mais utilizados. Podemos entao usar o espaco de memoria ocupado por V3(HHH) (aprimeira posicao do vetor V ) para armazenar o valor de V2(HH). A seguir, usamos V3(HTH)

Page 15: Introdu˘c~ao a aspectos matem aticos e computacionais em ...

1.2. ASPECTOS COMPUTACIONAIS 11

e V3(HTT ) para calcular V2(HT ), que e armazenado na segunda posicao do vetor V . A im-plementacao precifica2.m em Matlab vem a seguir:

%precifica2 precifica derivativos arbitrrios

%

%resolve o problema de precificacao

%do modelo binomial. Os dados sao definidos

%nos scripts exemplo1, etc. Os valores de V sao

%armazenados num vetor e’ atualizados a cada periodo.

%A coluna final e’ dada.

clear all;

%exemplopag3;

%exemplopag14;

exemplopag15;

%exemplobign;

ptilde=(1+r-d)/(u-d)

qtilde=(u-1-r)/(u-d)

tic

for i=n-1:-1:1 % loop nas colunas

for j=1:2^(i-1) % loop nas linhas

V(j)=( ptilde*V(2*j-1)+qtilde*V(2*j) )/(1+r);

end

V

end

disp(’preco a ser pago pela opcao:’)

V(1,1)

disp(’tempo de computacao:’)

toc

A saıda no monitor e a seguinte:

>> precifica2

V =

0

0

0

3.0000

0

3.0000

3.0000

Page 16: Introdu˘c~ao a aspectos matem aticos e computacionais em ...

12 1. PRECIFICACAO E MODELOS BINOMIAIS

4.5000

ptilde =

0.5000

qtilde =

0.5000

V =

0

1.2000

1.2000

3.0000

0

3.0000

3.0000

4.5000

V =

0.4800

1.6800

1.2000

3.0000

0

3.0000

3.0000

4.5000

V =

0.8640

1.6800

1.2000

3.0000

0

3.0000

Page 17: Introdu˘c~ao a aspectos matem aticos e computacionais em ...

1.2. ASPECTOS COMPUTACIONAIS 13

3.0000

4.5000

preco a ser pago pela opcao:

ans =

0.8640

tempo de computacao:

Elapsed time is 0.001545 seconds.

Na pratica, Vn e um vetor com 2n−1 entradas, e pode ser armazenado forma sequencial.Por exemplo, para n = 2, terıamos que armazenar os valores V2(H,H), V2(H,T ), V2(T,H)e V2(T, T ). Estes poderiam ser guardados num vetor V de tamanho 22 = 4:

V =[V2(H,H), V2(H,T ), V2(T,H), V2(T, T )

].

Para saber o valor de V2(T,H) por exemplo, basta transformar H em 0 e T em 1 e usar anumeracao binaria. Assim TH → 102, e 102 = 210 (aqui o sub-ındice indica a base sendousada). Para evitar o uso do ındice 0, somamos um ao numero encontrado. Assim, a alocacaodos valores de V2 no vetor V seria da seguinte forma:

Valores ındice binario posicao no vetorV2(H,H) 002 1V2(H,T ) 012 2V2(T,H) 102 3V2(T, T ) 112 4

A tabela para n = 3 seria a seguinte:

Valores ındice binario posicao no vetorV3(H,H,H) 0002 1V3(H,H, T ) 0012 2V3(H,T,H) 0102 3V3(H,T, T ) 0112 4V3(T,H,H) 1002 5V3(T,H, T ) 1012 6V3(T, T,H) 1102 7V3(T, T, T ) 1112 8

1.2.2. Algoritmos para Vn especiais. Uma limitacao dos algoritmos descritos naSubsecao 1.2.1 e o enorme custo computacional de armazenamento de matrizes e vetoresde tamanho 2n−1. E comum entretanto Vn depender somente de Sn, como nas opcoes “call”ou “put” europeias. Neste caso entao, existe uma funcao vn(·) que eu defino tal que

vn(Sn(ω)) = Vn(ω).

Page 18: Introdu˘c~ao a aspectos matem aticos e computacionais em ...

14 1. PRECIFICACAO E MODELOS BINOMIAIS

E quanto aos perıodos anteriores? Bom, supondo que exista funcao vi(Si(ω)) = Vi(ω) noperıodo i, entao, dado ω ∈ Ωi−1, defino s = Si−1(ω) e entao

(1.2.1) Vi−1(ω) =pVi(ω, H) + qVi(ω, T )

1 + r=pvi(us) + qvi(ds)

1 + r.

Podemos concluir que Vi−1 tambem pode ser escrito como funcao de s, e entao definimos

(1.2.2) vi−1(s)def=pvi(us) + qvi(ds)

1 + r.

e entao vi−1(s) = vi−1(Si−1(ω)) = Vi−1(ω).Comparando (1.2.2) com (1.1.13), percebemos que uma simples modificacao do Algo-

ritmo 1 possibilita o calculo de vi. Para perceber melhor como o algoritmo funciona napratica, considere a novamente o caso [9, Exemplo 1.3.1].

Exemplo 1.5. Com n = 3, seja S0 = 4, u = 2, d = 1/2, r = 1/4. Entao temos os seguintevalores para Si:

S0 = 4

S1(H) = 8

S1(T ) = 2

S2(H,H) = 16

S2(H,T ) = S2(T,H)

= 4

S2(T, T ) = 1

S3(H,H,H) = 32

S3(H,H, T ) = S3(H,T,H)

= S3(T,H,H) = 8

S3(H,T, T ) = S3(T,H, T )

= S3(T, T,H) = 2

S3(T, T, T ) = 1/2

Fig. 3. Caso binomial com n = 3

Supondo uma “European put”, com “strike price” K = 5, expirando em n = 3, temosV3(ω) = (K − S3(ω))+, i.e.,

V3(H,H,H) = V3(H,H, T ) = V3(H,T,H) = V3(T,H,H) = 0,

V3(H,T, T ) = V3(T,H, T ) = V3(T, T,H) = 3, V3(T, T, T ) = 4.5.

Usando a notacao descrita no inıcio da Subsecao 1.2.2, temos

v3(32) = 0, v3(8) = 0, v3(2) = 3, v3(1/2) = 4.5.

Usando (1.2.2), obtemos

v2(16) = 0, v2(4) = 1.2, v2(1) = 3,

v1(8) = 0.48, v1(2) = 1.68,

v0(4) = 0.864.

Page 19: Introdu˘c~ao a aspectos matem aticos e computacionais em ...

1.2. ASPECTOS COMPUTACIONAIS 15

Computacionalmente, podemos por exemplo definir uma matrix 4× 4 que va armazenandoos resultados conforme estes sejam calculados:

? ? ? 0X ? ? 0X X ? 3X X X 4.5

−→

? ? 0 0X ? 1.2 0X X 3 3X X X 4.5

−→

? 0.48 0 0X 1.68 1.2 0X X 3 3X X X 4.5

−→

0.864 0.48 0 0X 1.68 1.2 0X X 3 3X X X 4.5

Uma implementacao em Matlab (precifica3.m) e descrita abaixo.

%resolve o problema de precificao

%do modelo binomial. Os dados so definidos

%nos scripts exemplo1, etc. A matriz V

%desnecessariamente grande, esparsa. A coluna

%final dada.

clear all;

%exemplopag3;

%exemplopag14;

%exemplopag15;

%exemplopag17;

exemplobign;

p=(1+r-d)/(u-d)

q=(u-1-r)/(u-d)

for i=n-1:-1:1 % loop nas colunas

for j=1:i % loop nas linhas

v(j,i)=( p*v(j,i+1)+q*v(j+1,i+1) )/(1+r);

end

end

n

v

p =

0.5000

q =

Page 20: Introdu˘c~ao a aspectos matem aticos e computacionais em ...

16 1. PRECIFICACAO E MODELOS BINOMIAIS

0.5000

n =

4

v =

0.8640 0.4800 0 0

0 1.6800 1.2000 0

0 0 3.0000 3.0000

0 0 0 4.5000

O script “exemplobign.m” vem abaixo:

% define os dados

n=4; % perodos a serem considerados, contando o inicial

r=1/4; % juros

u=2.0; % up factor

d=1/2; % down factor

Sinic=4; % preco inicial da ao

K=5

% Monta vetor S_n

v=zeros(n,n);

e=[1:n];

s=Sinic*u.^(n-e).*d.^(e-1);

v(:,n)=max(K-s,0);

As ideias acima podem ser generalizada para quando Vn depende nao somente de Sn,mas de S0, . . . , Sn. Existe entao funcao vn(·) tal que Vn(ω) = vn(S0(ω0), . . . , Sn(ωn)). Paradescobrir vi−1(s0, . . . , si−1), onde 1 ≤ i ≤ n, e sj = Sj(ωj) para algum ω ∈ Ωj, com0 ≤ j ≤ i− 1, note que

vi−1(s0, . . . , si−1) = vi−1(S0(ω0), . . . , Sn(ωn)) = Vi−1(ω) =pVi(ω, H) + qVi(ω, T )

1 + r,

e portanto

vi−1(s0, . . . , si−1) =pvi(s0, . . . , si−1, usi−1) + qvi(s0, . . . , si−1, dsi−1)

1 + r.

1.3. Exercıcios

Exercıcio 1.1. Defina #H usando recursividade.

Exercıcio 1.2. Proponha um algoritmo recursivo para o problema de precificacao com Vnarbitrario.

Page 21: Introdu˘c~ao a aspectos matem aticos e computacionais em ...

1.3. EXERCICIOS 17

Exercıcio 1.3. Modifique o programa precifica1.m para armazenar tambem todos os ∆i.Dica: calcule e armazene os valores de Sj.

Exercıcio 1.4. Modifique o programa precifica3.m para armazenar tambem todos os ∆i.

Exercıcio 1.5. Por que em (1.2.1) e tambem possıvel supor que Vi−1 tambem so dependede Si−1?

Exercıcio 1.6. Implemente um algoritmo para a “lookback option”.

Page 22: Introdu˘c~ao a aspectos matem aticos e computacionais em ...
Page 23: Introdu˘c~ao a aspectos matem aticos e computacionais em ...

CAPITULO 2

Introducao a probabilidade

1 Neste capıtulo introduzimos aspectos teoricos basicos da teoria de probabilidade, tendosempre em mente espacos finitos de probabilidade. O exemplo tıpico e o de tirar “cara oucoroa” finitas vezes.

Os topicos aqui discutidos incluem definicao de espacos finitos de probabilidade, variaveisaleatorias, esperancas, processos estocasticos, martingales e cadeias de Markov.

2.1. Espacos de probabilidade

Para lidar com problemas envolvendo probabilidade e necessaria a tripla (Ω,F ,P), cha-mada de espaco de probablidade, onde

• O espaco amostral Ω e um conjunto nao vazio. Consideraremos que Ω e finito.• O espaco dos eventos F e uma colecao “especial” de subconjuntos do Ω• A probabilidade P : F → R e uma funcao real “especial” definida em F .

Por colecao “especial”, queremos dizer que esta satisfaz algumas propriedades especıficas, aserem definidas. O mesmo comentario vale para funcao “especial”.

O conjunto Ω deve ser interpretado como o conjunto que contem “todos os resultados dospossıveis experimentos”. Por exemplo, usando a notacao (1.1.8), se o experimento consisteem tirar cara ou coroa uma vez, entao Ω = Ω1 = H,T, pois estes sao os unicos resultadospossıveis. Se entretanto o experimento consiste em tirar cara ou coroa duas vezes, teremos

(2.1.1) Ω = Ω2 = HH,HT, TH, TT.Alem de conter todos os resultados possıveis, a cada resultado deve corresponder um unicoelemento em Ω. Similarmente, a cada elemento de Ω deve corresponder somente um resultadode experimento.

Uma colecao F de subconjuntos de Ω pode ser por exemplo ∅,Ω. Ou no caso de (2.1.1),podemos tomar F como sendo a colecao contendo todos os 16 = 24 subconjuntos de Ω:

(2.1.2) F =∅, HH, HT, TH, TT,

HH,HT, HH,TH, HH,TT, HT, TH, HT, TT, TH, TT,HH,HT, TH, HH,HT, TT, HH,TH, TT, HT, TH, TT,Ω

.

Cada subconjunto de Ω que seja elemento de F e chamado de evento, e F contem eventosque queremos medir (associar uma probabilidade). A probabilidade P e uma funcao queassocia a cada conjunto A ∈ F , a probabilidade P(A) de um experimento pertencer a A.

E razoavel entao impor, por exemplo, que 0 ≤ P(A) ≤ 1. As propriedades que P tem quesatisfazer sao enumeradas abaixo.

1Ultima Atualizacao: 28/01/2014

19

Page 24: Introdu˘c~ao a aspectos matem aticos e computacionais em ...

20 2. INTRODUCAO A PROBABILIDADE

Propriedades 2.1.1.

(1) P(A) ≥ 0 para todo A ∈ F(2) P(Ω) = 1(3) P(A ∪B) = P(A) + P(B), se A e B sao disjuntos (i.e., A ∩B = ∅)

Note que com estas imposicoes, teremos sempre P(∅) = 0 pois

1 = P(Ω) = P(Ω ∪ ∅) = P(Ω) + P(∅) = 1 + P(∅).

Em geral suporemos que Ω e um conjunto finito, F contem todos os subconjuntos de Ω.Suponhamos ainda que P(ω) seja conhecido para todo ω ∈ Ω. Entao, dado um subconjuntoA de Ω, temos pelo ıtem (3) da propriedade 2.1.1 que

(2.1.3) P(A) = P(ω : ω ∈ A) = P(∪ω∈Aω) =∑ω∈A

P(ω).

Na ultima igualdade acima usamos o resultado proposto pelo Exercıcio 2.1. Para que aspropriedades (1), (2) e (3) acima sejam validas, precisamos apenas das duas propriedadesabaixo (ver Exercıcio 2.4):

(2.1.4)

P(ω) ≥ 0 para todo ω ∈ Ω,∑ω∈Ω

P(ω) = 1.

Consideraremos nestas notas o caso em que Ω = Ωi, ver (1.1.8). Em particular, parai = 1, temos Ω = H,T e F =

∅, H, T,Ω

. Suponha que a probabilidade de termos

cara seja p, i.e., P(H) = p, onde 0 ≤ p ≤ 1, e o de dar coroa e P(T ) = 1 − p (note quetemos aqui um abuso de notacao, pois deverıamos escrever P(H) e P(T). Manteremosentretanto este tipo de delito ao longo do texto). Resumidamente,

(2.1.5) P(H) = p, P(T ) = qdef= 1− p

Entao

P(Ω) = P(H,T) = P(H ∪ T) = P(H) + P(T ) = p+ q = 1,

como era de se esperar.Para i ≥ 2, temos que definir P(ω1, . . . , ωi) para (ω1, . . . , ωi) ∈ Ωi. Uma definicao razoavel

e

(2.1.6) P(ω1, . . . , ωi−1, H) = pP(ω1, . . . , ωi−1), P(ω1, . . . , ωi−1, T ) = qP(ω1, . . . , ωi−1).

E por que (2.1.6) define de forma unica a probabilidade P em Ωi? Bom, para i = 2 temosque P(ω,H) = pP(ω) e P(ω, T ) = qP(ω), onde ω ∈ H,T. Como P(ω) foi definido paraω ∈ H,T em (2.1.5), entao P fica bem definido para todo ω ∈ Ω2:

P(HH) = pP(H) = p2, P(HT ) = qP(H) = pq,

P(TH) = pP(T ) = pq, P(TT ) = qP(T ) = q2.

Page 25: Introdu˘c~ao a aspectos matem aticos e computacionais em ...

2.2. VARIAVEIS ALEATORIAS E ESPERANCAS 21

Baseado nas probabilidades acima, podemos calcular, por exemplo,

P(HH,HT) = P(HH) + P(HT ) = p2 + pq,

P(HH,HT, TH) = P(HH) + P(HT ) + P(TH) = p2 + 2pq,

P(Ω) = P(HH) + P(HT ) + P(TH) + P(TT ) = p2 + 2pq + q2 = (p+ q)2 = 1.

Uma outra pergunta possıvel e qual a probabilidade de se tirar duas caras ou duas coroasjogando-se a moeda duas vezes. Neste caso teremos

P(HH,TT) = P(HH) + P(TT ) = p2 + q2 = p2 + (1− p)2 = 2p2 + 1− 2p.

Ja a probabilidade de se tirar uma cara e uma coroa e

P(HT, TH) = P(HT ) + P(TH) = 2pq = 2p(1− p) = 1− P(HH,TT).Para ver que P esta definida em Ω3, basta usar (2.1.6), notando que (ω1, ωi−1) ∈ Ω2, e

que P ja esta definida em Ω2. Procedendo da mesma forma (indutivamente) para i = 4, . . . ,vemos que (2.1.6) define P em Ωi em geral.

Entretanto, apesar da relacao (2.1.6) ser suficiente para se definir P, esta nao e muitopratica. A relacao abaixo permite um calculo mais direto:

(2.1.7) P(ω) = p#H(ω)q#T (ω), para ω ∈ Ωi.

A notacao e a demonstracao do resultado acima seguem o Lema 1.1.1. Ver tambem oExercıcio 2.3.

Note que acima precisamos somente que p ∈ [0, 1] e que p + q = 1. Com o auxıliode (1.1.4), podemos introduzir as probabilidades (livres de risco)

P(H) = p, P(T ) = q,

o com elas definir uma probabilidade em Ωi via

(2.1.8) P(ω) = p#H(ω)q#T (ω).

2.2. Variaveis aleatorias e esperancas

Definimos uma variavel aleatoria como sendo uma funcao real definida no espaco amostralΩ, ou seja, a funcao X : Ω→ R e uma variavel aleatoria.

Considere o Exemplo 1.3, onde o espaco amostral e composto das combinacoes possıveisde tres lancamentos de moedas:

Ω = HHH,HHT,HTH,HTT, THH, THT, TTH, TTT.Entao Si e Vi sao variaveis aleatorias para i = 0, 1, 2, 3. De fato, por exemplo, V3 : Ω→ R edada por

V3(ω1ω2ω3) =

0 se ω1ω2ω3 ∈ HHH,HHT,HTH, THH,3 se ω1ω2ω3 ∈ HTT, THT, TTH,4.5 se ω1ω2ω3 ∈ TTT.

O mesmo pode ser feito para V2, apesar desta funcao so depender de ω1 e ω2:

V2(ω1ω2ω3) =

0 se ω1ω2ω3 ∈ HHH,HHT,1.2 se ω1ω2ω3 ∈ HTT,HTH, THT, THH,3 se ω1ω2ω3 ∈ TTT, TTH,

Page 26: Introdu˘c~ao a aspectos matem aticos e computacionais em ...

22 2. INTRODUCAO A PROBABILIDADE

Note que de fato, qualquer que seja ω3, o valor de V2 e o mesmo. Para V1 temos

V1(ω1ω2ω3) =

0.48 se ω1ω2ω3 ∈ HHH,HHT,HTT,HTH,1.68 se ω1ω2ω3 ∈ THT, THH, TTT, TTH.

Ou seja, V1 so depende mesmo de ω1. Finalmente,

V0(ω1ω2ω3) = 8.64 para todo ω1ω2ω3 ∈ Ω.

Outro conceito importante e o da distribuicao de uma variavel aleatoria, que diz a pro-babilidade da variavel aleatoria tomar certos valores. Por exemplo, no caso acima, qual aprobabilidade de V1 ser igual a 0.48? Se definirmos A como sendo o subconjunto de Ω dadopor

Adef= ω ∈ Ω : V1(ω) = 0.48 = HHH,HHT,HTT,HTH,

entao a probabilidade de V1 ser igual a 0.48 e dada por P(A):

P(A) = P(HHH,HHT,HTT,HTH) = P(HHH) + P(HHT ) + P(HTT ) + P(HTH)

= p3 + 2p2q + pq2.

Por outro lado,P(ω ∈ Ω : V1(ω) = 1.68) = 1− (p3 + 2p2q + pq2).

A distribuicao de V1 e definida pelos dois valores calculados acima. Se p = q = 1/2, entao asprobabilidades acima sao de 1/2. Uma observacao interessante e que podemos definir umafuncao µV1 : 0.48, 1.68 → R por µV1(0.48) = 1/2 e µV1(1.68) = 1/2 . Abusando um poucoda notacao, vemos que na vedade µX define um probabilidade no conjunto 0.48, 1.68.

Para encurtar a notacao, escreveremos P(X = a) no lugar de P(ω ∈ Ω : X(ω) = a)para designar a probabilidade do subconjunto de Ω onde a variavel aleatoria X toma ovalor a. E importante observar que duas variaveis aleatorias diferentes podem ter a mesmadistribuicao, e a mesma variavel aleatoria pode ter distribuicoes diferentes, para diferentesprobabilidades. Isto pode ser observado no exemplo abaixo, ou em [9, Exemplo 2.2.3].

Exemplo 2.1. Considere Ω = H,T, e as variaveis aleatorias X e Y dadas por

X(H) = 1, X(T ) = 0, Y (H) = 0, X(T ) = 1.

Claramente, X e Y sao diferentes entre si. Supondo agora que P(H) = P(T ) = 1/2, temosas seguintes distribuicoes:

P(X = 0) = P(T ) =1

2, P(X = 1) = P(H) =

1

2,(2.2.1)

P(Y = 0) = P(H) =1

2, P(Y = 1) = P(T ) =

1

2.

Portanto, apesar de serem variaveis aleatorias diferentes, X e Y tem a mesma distribuicao,pois P(X = 0) = P(Y = 0) e P(X = 1) = P(Y = 1). Por outro lado, mudando-se a

probabilidade para P, onde

P(H) =1

4, P(T ) =

3

4,

obtemos uma nova distribuicao para X:

P(X = 0) = P(T ) =3

4, P(X = 1) = P(H) =

1

4.

Page 27: Introdu˘c~ao a aspectos matem aticos e computacionais em ...

2.3. ESPERANCA CONDICIONAL 23

Concluindo, duas variaveis aleatorias diferentes podem ter a mesma distribuicao, e umamesma varaiavel aleatoria pode ter varias distribuicoes, dependendo da probabilidade usada.

Uma outra nocao importante e o de esperanca de uma variavel aleatoria X, dada por

(2.2.2) EX def=∑ω∈Ω

P(ω)X(ω).

Quando usarmos a probabilidade livre de riscos P no calculo da esperanca, escreveremos

EX def=∑ω∈Ω

P(ω)X(ω).

A esperanca e tambem conhecida por media ou valor esperado de X. A variancia de X e

dada por varXdef= E[(X − EX)2].

Note que E e um funcional linear, pois se X e Y sao variaveis aleatorias, e α e umaconstante, entao

E(X + αY ) = E(X) + αE(Y ).

De fato,

E(X+αY ) =∑ω∈Ω

[X(ω)+αY (ω)]P(ω) =∑ω∈Ω

X(ω)P(ω)+α∑ω∈Ω

Y (ω)P(ω) = E(X)+αE(Y ).

O proximo resultado relaciona E e funcoes convexas. Ver [9, Teorema 2.2.5] para umademonstracao.

Teorema 2.2.1 (Desigualdade de Jensen). Seja φ : R → R funcao convexa, e X variavelaleatoria. Entao

φ(EX) ≤ Eφ(X).

2.3. Esperanca condicional

Duas nocoes importantes em probabilidade sao a probabilidade condicional (qual a pro-babilidade de B ocorrer dado que A ocorreu?), e a esperanca condicional (como “aproximar”uma variavel aleatoria tendo informacoes limitadas?).

Tratamos aqui de esperanca condicional. Dada uma variavel aleatoria X : Ω→ R, ondeΩ = ΩN (ver a definicao em (1.1.8)), e supondo que ω1, . . . , ωi “sao conhecidos”, qual seriauma “boa aproximacao” para X(ω1 . . . ωiωi+1 . . . ωN)? Uma resposta seria a esperanca “emrelacao a ωi+1 . . . ωN”, que definimos a seguir, denotamos por Ei[X](ω1, . . . , ωi), e chamamosde esperanca condicional.

Page 28: Introdu˘c~ao a aspectos matem aticos e computacionais em ...

24 2. INTRODUCAO A PROBABILIDADE

Para i ≥ 0, definimos

E0[X] =∑

ω1...ωN∈ΩN

P(ω1 . . . ωN)X(ω1ω2 . . . ωN) = E[X].

E1[X](ω1) =∑

ω2...ωN∈ΩN−1

P(ω2 . . . ωN)X(ω1ω2 . . . ωN) onde ω1 ∈ Ω1 = H,T,

...

Ei[X](ω1 . . . ωi) =∑

ωi+1...ωN∈ΩN−i

P(ωi+1 . . . ωN)X(ω1 . . . ωiωi+1 . . . ωN) onde ω1 . . . ωi ∈ Ωi.

...

EN−1[X](ω1 . . . ωN−1) =∑ωN∈Ω1

P(ωN)X(ω1 . . . ωN−1ωN) onde ω1 . . . ωN−1 ∈ ΩN−1.

EN [X](ω1 . . . ωN) = X(ω1 . . . ωN) onde ω1 . . . ωN ∈ ΩN .

Note que a esperanca condicional Ei[X] e uma variavel aleatoria, pois seu valor depende deω1 . . . ωi ∈ Ωi.

Algumas propriedades da esperanca condicional sao enunciadas abaixo.

Lema 2.3.1. Dadas as variaveis aleatorias X e Y definidas em ΩN , e 0 ≤ i ≤ N , temos asseguintes propriedades

(1) Linearidade: Ei[X + αY ] = Ei[X] + αEi[Y ] para todo α ∈ R(2) Ei[Ej[X]]] = Ei[X] se 0 ≤ i ≤ j(3) Se X depende somente de ω1 . . . ωi, entao Ei[XY ] = XEi[Y ](4) Se X depende somente de ωi+1 . . . ωN , entao Ei[X] = E[X](5) Se φ e funcao convexa, entao φ(Ei[X]) ≤ Ei[φ(X)]

DEMONSTRACAO. Mostramos abaixo o ıtem (2). As outras demonstracoes sao analogas(e mais faceis!). Seja 0 ≤ i ≤ j. Entao

Ei[Ej[X]](ω1 . . . ωi) =∑

ωi+1...ωN∈ΩN−i

P(ωi+1 . . . ωN)Ej[X](ω1 . . . ωj)

=∑

ωi+1...ωj∈Ωj−i

∑ωj+1...ωN∈ΩN−j

P(ωi+1 . . . ωj)P(ωj+1 . . . ωN)Ej[X](ω1 . . . ωj)

=∑

ωi+1...ωj∈Ωj−i

P(ωi+1 . . . ωj)Ej[X](ω1 . . . ωj)∑

ωj+1...ωN∈ΩN−j

P(ωj+1 . . . ωN)

=∑

ωi+1...ωj∈Ωj−i

P(ωi+1 . . . ωj)Ej[X](ω1 . . . ωj)

=∑

ωi+1...ωj∈Ωj−i

P(ωi+1 . . . ωj)∑

ωj+1...ωN∈ΩN−j

P(ωj+1 . . . ωN)X(ω1 . . . ωjωj+1 . . . ωN)

=∑

ωi+1...ωN∈ΩN−i

P(ωi+1 . . . ωN)X(ω1 . . . ωN) = Ei[X](ω1 . . . ωi),

Page 29: Introdu˘c~ao a aspectos matem aticos e computacionais em ...

2.4. PROCESSOS ESTOCASTICOS, MARTINGALES E O QUE ESPERAR DO FUTURO 25

onde usamos na terceira linha que∑

ωj+1...ωN∈ΩN−j P(ωj+1 . . . ωN) = 1.

Como anteriormente, denotamos por Ei a esperanca condicional usando a probabilidadeP. Por exemplo, reescrevemos a primeira igualdade em (1.1.13), e a igualdade (1.1.14) como

(2.3.1) Vi−1(ωi−1) =Ei−1[Vi](ωi−1)

1 + r, Si−1(ωi−1) =

Ei−1[Si](ωi−1)

1 + r.

Note tambem que, por (2.1.8),

Ei[X](ω1 . . . ωi) =∑

ωi+1...ωN∈ΩN−i

p#H(ωi+1...ωN )q#T (ωi+1...ωN )X(ω1 . . . ωiωi+1 . . . ωN),

onde ω1 . . . ωi ∈ Ωi.

2.4. Processos estocasticos, Martingales e o que esperar do futuro

Nas aplicacoes que temos em mente, o “tempo” e um fator importante, e no nosso caso otempo e discreto, i.e., temos os tempos 0, 1, . . . . Como exemplo, temos a variavel aleatoriaS0, associada ao valor de um estoque no tempo zero, e assim por diante: S1, S2, . . . , SN .De forma geral, chamamos de processo estocastico a uma sequencia de variaveis aleatoriasXi, i = 0, 1, . . . . Tanto (Si)i≥0 como (Vi)i≥0 sao processos estocasticos. Note que, dadauma variavel aleatoria X, as esperancas condicionais Ei[X] tambem geram um processoestocastico.

Consideraremos agora um tipo especial de processo estocastico, chamado de adaptadoe definido por Mi : Ω → R, para i = 0, 1, . . . , N , e Ω = ΩN , mas onde na verdade Mi sodepende de ω1, . . . , ωi (e M0 e constante). Exemplos de processos estocasticos adaptados sao∆i, Si e Vi. Note tambem que, dada uma varavel aleatoria Y qualquer, Ei[Y ] e um processoestocastico adaptado (ver Exercıcio 2.8)

Dizemos entao que um processo estocastico adaptado (Mi)Ni=0 e um martingale se

(2.4.1) Mi = Ei[Mi+1] para i = 0, . . . , N − 1.

Caso Mi ≥ Ei[Mi+1], entao chamamos Mi de super-martingale. Caso Mi ≤ Ei[Mi+1], entaoMi sera um sub-martingale.

Algumas propriedades dos martingales seguem imediatamente da definicao. Por exemplo,se Mi e martingale, entao

(2.4.2) Mi = Ei[Mj] para todo j ≥ i+ 1.

Por exemplo, para j = i+ 2 temos

Mi = Ei[Mi+1] = Ei[Ei+1[Mi+2]] = Ei[Mi+2],

onde usamos a propriedade (2) de Lema 2.3.1. O caso geral e demonstrado abaixo.

Lema 2.4.1. Se Mn e um martingale, entao (2.4.2) vale.

DEMONSTRACAO. A demonstracao pode ser feita por inducao. Para simplificar a notacao,mostraremos que

(2.4.3) Mi = Ei[Mi+j] para todo j ≥ 1.

Page 30: Introdu˘c~ao a aspectos matem aticos e computacionais em ...

26 2. INTRODUCAO A PROBABILIDADE

Para j = 1, entao (2.4.3) vale por definicao de martingale. Suponha que (2.4.3) valha para

algum j = J . Entao

Mi = Ei[Mi+J ] = Ei[Ei+J [Mi+J+1]] = Ei[Mi+J+1],

por (2) do Lema 2.3.1. Portanto, se (2.4.3) vale para j = J , entao vale para j = J + 1, e apropriedade esta demonstrada por inducao.

Uma consequencia imediata do lema acima e que martingales tem esperancas constantes,como enunciado no corolario abaixo.

Corolario 2.4.2.M0 = E[M0] = E[M1] = E[M2] = · · · = E[MN ].

DEMONSTRACAO. Para ver isto, basta tomar i = 0 em (2.4.2), e lembrar que M0 e con-stante.

Exemplo 2.2. Dois exemplos de martingales, sob a probabilidade P, sao os processos es-tocasticos Si/(1 + r)i e Vi/(1 + r)i. Tome por exemplo, o caso Mi = Si/(1 + r)i. Por (2.3.1),temos

Mi =Si

(1 + r)i=

Ei[Si+1]

(1 + r)i+1= Ei[Mi+1],

e portanto Si/(1 + r)i e um martingale. As mesmas contas mostram que Vi/(1 + r)i tambeme martingale.

O resultado descrito no Corolario 2.4.2 e o fato do processo Vi/(1+r)i ser um martingale,permite o calculo abaixo:

V0 =E[VN ]

(1 + r)N=

1

(1 + r)N

∑ω∈Ω

P(ω)VN(ω) =1

(1 + r)N

∑ω∈Ω

p#H(ω)q#T (ω)VN(ω).

Fazendo o somatorio em #H(ω), temos que

(2.4.4) V0 =1

(1 + r)N

N∑i=0

piqN−i∑ω∈Ci

VN(ω),

onde Ci = ω ∈ Ω : #H(ω) = i. No caso em que p = q = 1/2, temos #H(ω)+#T (ω) = Ne entao

V0 =1

(1 + r)N2N

∑ω∈Ω

VN(ω).

2.5. Processos de Markov

Um tipo de processo estocastico que guarda algumas semelhancas aos Martingales saoos processos de Markov. Dizemos que um processo adaptado Yi e de Markov se para todafuncao f existir outra funcao g tal que

(2.5.1) En[f(Yn+1)] = g(Yn).

Observe a diferenca para a definicao de Martingale (2.4.1), onde a identidade vale para umafuncao em particular (f(x) = x e g(x) = x em (2.5.1)), mas nao necessariamente para umafuncaof mais geral. Portanto, nem todo Martingale sera um processo de Markov. Por outro

Page 31: Introdu˘c~ao a aspectos matem aticos e computacionais em ...

2.5. PROCESSOS DE MARKOV 27

lado, nem todo processo de Markov e Martingale pois (2.5.1) vale para f(x) = x, mas nadagarante que g(x) = x. Mais abaixo veremos exemplos de Martingales que nao sao de Markov,e vice-versa.

Exemplo 2.3. Precos de estoque no modelo binomial formam um processo de Markov, semserem Martingales. De fato, por construcao,

Sn+1(ωn, ωn+1) =

uSn(ωn) se ωn+1 = H,

dSn(ωn) se ωn+1 = T.

Portanto, dada uma funcao f qualquer,

En[f(Sn+1)](ω) = pf(Sn+1(ω, H)) + qf(Sn+1(ω, T )) = pf(uSn(ωn)) + qf(dSn(ωn))

= g(Sn(ωn)).

onde g(x) = pf(ux) + qf(dx). Logo Sn e de Markov, e observe que basta trocar p e q por p

e q para mostrar que Sn e de Markov tambem sob a probabilidade “livre de risco” En.

Exemplo 2.4. Considere agora o caso de um derivativo cujo valor no tempo N so dependedo valor de SN . Entao esta mesma propriedade tambem vale para VN−1, VN−2,. . . , V0, i.e.,para j = 1, . . . , N existe funcao vj tal que

(2.5.2) Vj = vj(Sj).

Para ver isto suponha que exista uma funcao vN tal que VN(ω) = vN(SN(ω)). Note entaoque

VN−1 =1

1 + rEN−1(VN) =

1

1 + rEN−1(vN(SN)).

Mas como Sn e de Markov, entao existe funcao gN−1 tal que EN−1(vN(SN)) = gN−1(Sn−1).Logo VN−1 = vN−1(SN−1), se definirmos vN−1(SN−1) = gN−1(Sn−1)/(1 + r). Note que pode-mos repetir o mesmo procedimento para N − 2,N − 3, etc, e concluir que (2.5.2) vale.

Com o resultado acima, podemos justificar as tecnicas computacionais de 1.2.2. De fato,no perıodo j e s = Sj(ω) temos que

(2.5.3) vj(s) = Vj(ω) =1

1 + rEj[Vj+1](ω) =

1

1 + r[pVj+1(ωH) + qVj+1(ωT )]

=1

1 + r[pvj+1(us) + qvj+1(ds)].

Infelizmente nem sempre podemos aplicar diretamente as ideias do Exemplo 2.4, pois nemtodo processo e de Markov (ver Exemplo [9, Exemplo 2.5.4]). Entretanto, uma generalizacaoda definicao pode contornar esta dificuldade. Dizemos que um processo K-dimensionaladaptado (Y 1

i , . . . , YKi ) e de Markov se para toda funcao f : RK → R existir outra funcao

g : RK → R tal que

(2.5.4) En[f(Y 1n+1, . . . , Y

Kn+1)] = g(Y 1

n , . . . , YKn ).

Por exemplo, considere considere o processo bidimensional (Sj,Mj), onde Sj e o precodo estoque, e Mj = maxS1, . . . , Sj. O processo Mj nao e de Markov, mas (Sj,Mj) o e.De fato, seja Y = Sj+1/Sj. Note que Y : H,T → u, d nao e um processo estocastico,

Page 32: Introdu˘c~ao a aspectos matem aticos e computacionais em ...

28 2. INTRODUCAO A PROBABILIDADE

mas sim uma variavel aleatoria. Definindo a funcao ∨ por x ∨ y def= maxx, y, temos que

Mj+1 = Mj ∨ Sj+1 = Mj ∨ (Y Sj). Seja agora uma funcao f arbitraria. Entao

Ej[f(Sj+1,Mj+1)] = Ej[f(Y Sj,Mj ∨ (Y Sj))].

Definindo-se g(s,m) = E[f(Y s,m ∨ (Y s))], temos que

Ej[f(Sj+1,Mj+1)] = g(Sj,Mj).

Portanto, (Sj,Mj) e de Markov.Podemos agora generalizar o exemplo 2.4.

Exemplo 2.5. Supondo agora que VN depende de SN e MN , queremos mostrar que estamesma propriedade tambem vale para todos os perıodos anteriores. Seja entao vN tal queVN(ω) = vN(SN(ω),MN(ω)). Note entao que

VN−1 =1

1 + rEN−1(VN) =

1

1 + rEN−1(vN(SN ,MN)).

Mas como (Sj,Mj) e de Markov, entao existe funcao gN−1 tal que EN−1(vN(SN ,MN)) =gN−1(SN−1,MN−1). Logo VN−1 = vN−1(SN−1,MN−1), onde

vN−1(SN−1,MN−1)def= gN−1(Sn−1,MN−1)/(1 + r).

Repetindo o mesmo procedimento para N − 2, N − 3, etc, concluimos que para j = 1, . . . , Nexiste funcao vj tal que

(2.5.5) Vj = vj(Sj,Mj).

Em termos computacionais, no perıodo j, com s = Sj(ω) e m = Mj(ω) temos

vj(s,m) = Vj(ω) =1

1 + rEj[Vj+1](ω) =

1

1 + r[pVj+1(ωH) + qVj+1(ωT )]

=1

1 + r[pvj+1(us, us ∨m) + qvj+1(ds,m)].

Procedimentos como acima podem ser generalizados para quando, dado algum processomarkoviano Xj, VN depende somente de XN . Ver exercıcio 2.12.

2.6. Aspectos Computacionais

Exploramos aqui dois aspectos desenvolvidos nesta capıtulo. O primeiro e o fato de queSi/(1 + r)i e Vi/(1 + r)i sao martingales, sob a probabilidade P. Isto permitira calcular V0

via calculo de esperancas. Em seguida, exploramos caracterısticas de processos markovianos,que faz com que Vj possa ser mais facilmente calculado em algumas situacoes.

2.6.1. Precificando via esperancas. Uma forma de se calcular V0 e simplesmenteusar o fato de que Si/(1 + r)i e Vi/(1 + r)i sao Martingales sob a probabilidade P, como foidescrito no Exemplo 2.2. Mais especificamente, exploraremos a formula (2.4.4). Comecamos

dividindo o somatorio em duas partes, calculando primeiro a soma sidef=∑

ω∈Ci V (ω), lem-brando da definicao Ci = ω ∈ Ω : #H(ω) = i. Depois basta calcular o somatorio

(1 + r)−N∑N

i=0 sipiqN−i. O calculo de si, para VN arbitrario, nao e muito trivial. Basica-

mente para cada 0 ≤ i ≤ N , representamos i na base binaria, e contamos o numero de

Page 33: Introdu˘c~ao a aspectos matem aticos e computacionais em ...

2.6. ASPECTOS COMPUTACIONAIS 29

dıgitos zeros presentes. Tais contas sao executadas pela function martingal, armazenada noarquivo martingal.m.

function e=martingal(n,ptilde,qtilde,r,X)

%calcula a esperanca de X/(1+r)^n

s=zeros(1,n); % zera o vetor s

for i=1:2^(n-1)

a=dec2bin(i-1); % transforma i em binario

j=sum(bin2dec(a(:))); % conta quantos ’1’s tem

s(j+1)=s(j+1)+X(i); % acumula o valor em s(j)

end

% Faz o segundo somatorio

a=0;

for i=1:n

a=a+ptilde^(n-i)*qtilde^(i-1)*s(i);

end

e=a/((1+r)^(n-1));

end %fim da funcao esperanca

Para chamar a funcao esperanca, basta usar

% define os dados

n=3; % perodos a serem considerados, contando o inicial

r=1/4; % juros

u=2.0; % up factor

d=1/2; % down factor

ptilde=(1+r-d)/(u-d)

qtilde=(u-1-r)/(u-d)

% Calcula V_N

V=zeros(2^(n-1),n); % zera a matriz V

V(:,n)=[1:2^(n-1)];

esperanca(n,ptilde,qtilde,r,V(:,n))

A implementacao acima tem o grave defeito de ser lenta devido as contas necessariasnas manipulacoes com decimais e binarios. Uma possıvel economia aparece quando VN sodepende do preco final. Note que neste caso, para ω ∈ Ci, tem-se V (ω) dependendo somentede i, mas nao de ω. O motivo e que SN(ω) = S0u

idN−i independe de ω.Portanto,

∑ω∈Ci VN(ω) = VN(S0u

idN−i)#Ci, onde #Ci e o numero de elementos de Ci.E este numero e exatamente o valor do coeficiente binomial

#Ci =N !

i!(N − i)!.

Page 34: Introdu˘c~ao a aspectos matem aticos e computacionais em ...

30 2. INTRODUCAO A PROBABILIDADE

Em Matlab, tal valor e dado pela funcao nchoosek(N,i).

Observacao. Em geral e bom se tomar um certo cuidado na utilizacao de coeficientesbinomiais, pois estes tomam valores extremamente altos, que podem levar a instabilidadesnumericas [4].

Finalmente, temos que

V0 =1

(1 + r)NS0

N∑i=0

piqN−iVN(S0uidN−i)

N !

i!(N − i)!.

A implementacao deste somatorio vem a seguir.

%precificamart precifica derivativos tal que V no tempo final

%dependa somente do preco final do estoque

%

%resolve o problema de precificao

%do modelo binomial.

clear all;

% define os dados

n=3; % perodos a serem considerados, contando o inicial

r=1/4; % juros

u=2.0; % up factor

d=1/2; % down factor

Sinic=4; % preco inicial da ao

K=5 % strike price

ptilde=(1+r-d)/(u-d)

qtilde=(u-1-r)/(u-d)

tic

e=[0:n];

s=Sinic*u.^(n-e).*d.^e;

v=max(K-s,0) % European put option

%v=max(s-K,0) % European call option

Vsum=0;

for i=0:n % loop nos periodos

Vsum=Vsum+ptilde^i*qtilde^(n-i)*v(i+1)*nchoosek(n,i);

end

V=Vsum/(1+r)^n;

disp(’preo da opcao no tempo inicial:’)

V

disp(’tempo de computacao:’)

toc

2.6.2. Explorando padroes de Vj. Ver Subsecao 1.2.2.

Page 35: Introdu˘c~ao a aspectos matem aticos e computacionais em ...

2.7. EXERCICIOS 31

2.7. Exercıcios

Exercıcio 2.1. Mostre que o ıtem (3) da Propriedade 2.1.1 vale nao somente para doisconjuntos disjuntos, mas para um numero finito de conjuntos disjuntos.

Exercıcio 2.2. Mostre que se as Propriedades 2.1.1 valem, entao 0 ≤ P(A) ≤ 1 para todoconjunto A ∈ F .

Exercıcio 2.3. Usando (2.1.6), demonstre a relacao (2.1.7).

Exercıcio 2.4. Mostre que os ıtens (1), (2) e (3) das Propriedades 2.1.1 valem se P satis-fizer (2.1.3) e (2.1.4).

Exercıcio 2.5. Mostre que e possıvel usar µV1 dado na pagina 22, para definir uma proba-bilidade em 0.48, 1.68.

Exercıcio 2.6. Seja Ω um espaco finito de probabilidade, e X uma variavel aleatoria. Mostreque a distribuicao de X define uma probabilidade no espaco X(ω) : ω ∈ Ω.

Exercıcio 2.7. Mostre que varX = E[X2]− (E[X])2.

Exercıcio 2.8. Dada uma variavel aleatoria Y qualquer, mostre que Ei[Y ] e um processoestocastico adaptado.

Exercıcio 2.9. Demonstre os ıtens (1) e (3-5) do Lema 2.3.1.

Exercıcio 2.10. Justifique cada passo da demonstracao de (2) do Lema 2.3.1.

Exercıcio 2.11. Mostre que se X e variavel aleatoria, entao Ei[X] e um martingale.

Exercıcio 2.12. Mostre que se Xj e um processo markoviano e VN depende somente de XN ,entao para j = 1, . . . , N existe funcao vj tal que

Vj = vj(Xj).

Mostre que o mesmo e verdade substituindo Xj pelo seu equivalente (X1j , . . . , x

Kj ), em di-

mensao K.

Page 36: Introdu˘c~ao a aspectos matem aticos e computacionais em ...
Page 37: Introdu˘c~ao a aspectos matem aticos e computacionais em ...

CAPITULO 3

Precos de Estado

1

Neste capıtulo introduzimos a nocao de derivada de Radon-Nikodym, que permite “me-dir” a relacao entre duas probabilidade, e a de preco de estado, que mede o “valor” de umadeterminada combinacao de moedas ocorrer.

3.1. Mudancas de probabilidades

Lembrando que no modelo binomial visto ate aqui, duas probabilidades distintas foramutilizadas, P e P, buscamos interpretar como elas se relacionam e como podemos mudar deuma para outra.

Em geral, dado um espco amostral finito Ω, e duas probabilidades P e P a ele associadas,podemos, supondo que ambas probabilidades nao se anulam para nenhum elemento de Ω,definir a derivada de Radon-Nikodym de P em relacao a P por

(3.1.1) Z(ω) =P(ω)

P(ω).

Note que Z e uma variavel aleatoria. Observe tambem que

(1) P(Z > 0) = 1(2) E[Z] = 1

(3) E[Y ] = E[ZY ] para toda variavel aleatoria Y

Para mostrar as propriedades acima, comece notando que P(Z > 0) = P(ω ∈ Ω : Z(ω) >0) = P(Ω) = 1, e portanto (1) vale. A identidadade (2) segue de

E[Z] =∑ω∈Ω

Z(ω)P(ω) =∑ω∈Ω

P(ω) = P(Ω) = 1.

Finalmente, (3) segue de

E[ZY ] =∑ω∈Ω

Z(ω)Y (ω)P(ω) =∑ω∈Ω

Y (ω)P(ω) = E[Y ].

Particularizando a discussao acima para o caso binomial com probabilidade real P e livrede risco P, temos que

Z(ω) =P(ω)

P(ω)=

(p

p

)#H(ω)(q

q

)#T (ω)

.

Observe que Z “mede” o quanto P dista de P. De fato, se p e p sao proximos, entao nao soq = 1 − p e q = 1 − p serao proximos, mas Z sera sempre proximo da unidade. Por outrolado, se p for bem menor que p, entao p/p sera aproximadamente zero e q/q tomara valores

1Ultima Atualizacao: 06/03/2014

33

Page 38: Introdu˘c~ao a aspectos matem aticos e computacionais em ...

34 3. PRECOS DE ESTADO

maiores que um. Para eventos ω em que #H(ω) for alto, Z sera pequeno, e quando #T (ω)for alto, Z sera alto.

Considere o exemplo abaixo.

Exemplo 3.1. Seja

Ω = HHH,HHT,HTH,HTT, THH, THT, TTH, TTT.Considerando p = 2/3 e q = 1/3, e calculando as probabilidades livres de risco usando-ser = 1/4 teremos p = q = 1/2. Usando a formula (2.1.7), temos

P(HHH) =8

27, P(HHT ) = P(HTH) = P(THH) =

4

27,

P(HTT ) = P(THT ) = P(TTH) =2

27, P(TTT ) =

1

27.

O calculo de P e mais simples pois P(ω1ω2ω3) = 1/8 para todos lancamentos ω1ω2ω3 ∈ Ω.Usando (3.1.1), temos

Z(HHH) =27

64, Z(HHT ) = Z(HTH) = Z(THH) =

27

32,

Z(HTT ) = Z(THT ) = Z(TTH) =27

16, Z(TTT ) =

27

8.

Note que, como p > p, Z tomara valores mais baixos em lancamentos com numero decaras mais alto, e mais altos quando o numero de caras for mais baixo. Por exemplo,Z(HHH) ≈ 0, 4 e Z(TTT ) ≈ 3, 4.

Usando agora os dados de [9, Exemplo 1.2.4] temos que

V3(HHH) = 0, V3(HHT ) = 8, V3(HTH) = 0, V3(HTT ) = 6,

V3(THH) = 0, V3(THT ) = 2, V3(TTH) = 2, V3(TTT ) = 3, 5.

Como Vi/(1 + r)i e um Martingale sob a probabilidade P (ver Exemplo 2.2), entao

V0 = EV3

(1 + r)3=

43

53

∑ω1ω2ω3∈Ω

P(ω1ω2ω3)V3(ω1ω2ω3) =23

5321, 5 = 1, 376.

Este mesmo calculo pode ser executado usando-se somente a probabilidade real

V0 = EZV3

(1 + r)3=

43

53

∑ω1ω2ω3∈Ω

P(ω1ω2ω3)Z(ω1ω2ω3)V3(ω1ω2ω3)

=43

53

(1 +

3

4+

1

4+

1

4+

7

16

)=

43

53

43

16= 1, 376.

Note que a derivada de Radon-Nikodym nos permite calcular V0 sem fazer referencias aP, com o auxılio da variavel aleatoria Z. Em geral podemos escrever

V0 = E[VNζ]

onde a variavel aleatoria

ζdef=

Z(ω)

(1 + r)N

Page 39: Introdu˘c~ao a aspectos matem aticos e computacionais em ...

3.2. PROCESSOS DE DERIVADAS DE RADON-NIKODYM 35

e chamada de densidade de preco de estado, e ζP e denominada de preco de estado. Amotivacao e a seguinte. Considere ω ∈ Ω, e um derivativo tal que

VN(ω) =

1 se ω = ω,

0 caso contrario.

Entao

V0 = E[VNζ] =∑ω∈Ω

VN(ω)ζ(ω)P(ω) = ζ(ω)P(ω),

que e o preco de estado. Portanto o preco de estado Z(ω)P(ω)/(1 + r)N nada mais e doque o valor no tempo inicial de um derivativo que paga uma unidade somente se ω ocorrer.Note que este valor leva em conta alguns fatores: o “custo do tempo” (seu valor diminuiquanto maior for o valor da espera, i.e., (1 + r)N) e a probabilidade de ganho (seu valorvaria com P(ω)). O terceiro fator levado em conta e o risco, modelado por Z(ω). De

fato, considere P(ω) < P(ω). Entao P(ω)/(1 + r)N e maior do que o preco que preclude

arbitragem, P(ω)/(1 + r)N . Esta distorcao e corrigida empregando-se a variavel Z(ω) < 1.Em geral,

V0 = E[VNζ] =∑ω∈Ω

VN(ω)ζ(ω)P(ω),

e uma combinacao dos valores dos precos de estado ponderados por VN(ω).

3.2. Processos de derivadas de Radon-Nikodym

Considere agora a derivada de Radon-Nikodym Z, e o processo estocastico determinadopor

(3.2.1) Zjdef= Ej[Z].

Segundo o Exercıcio 2.11, Zj e um Martingale. Note que ZN = Z e Z0 = 1.

Lembre-se que se Y e uma variavel aleatoria, entao E[Y ] = E[ZY ]. Entretanto, se Ydepende somente de ω1 . . . ωj, temos que

(3.2.2) E[Y ] = E[ZjY ].

Para mostrar a igualdade acima, comecamos lembrando que E[Y ] = E[ZY ] = E[Ej[ZY ]].Mas Ej[ZY ] = Y Ej[Z] = Y Zj, e portanto a formula (3.2.2) vale.

Uma aplicacao interessante de (3.2.2) e dada no exemplo abaixo.

Exemplo 3.2. Seja a sequencia de lancamentos (ω1 . . . ωj) fixada, com j ≤ N , e seja avariavel aleatoria Y dada por

Y (ω1 . . . ωj . . . ωN) =

1 se ω1 = ω1, . . . , ωj = ωj,

0 caso contrario.

Entao E[Y ] = p#H(ω1...ωj)q#T (ω1...ωj). Por outro lado,

E[Y Zj] = Y (ω1 . . . ωj)P(ω1 . . . ωj)Zj(ω1 . . . ωj) = P(ω1 . . . ωj)Zj(ω1 . . . ωj)

= p#H(ω1...ωj)q#T (ω1...ωj)Zj(ω1 . . . ωj).

Page 40: Introdu˘c~ao a aspectos matem aticos e computacionais em ...

36 3. PRECOS DE ESTADO

Como E[Y ] = E[Y Zj], entao,

p#H(ω1...ωj)q#T (ω1...ωj)Zj(ω1 . . . ωj) =

(p

p

)#H(ω1...ωj)( qq

)#T (ω1...ωj)

.

Definimos a seguir o processo estocastico densidade de preco de estado

ζjdef=

Zj(1 + r)j

.

Queremos mostrar entao que

(3.2.3) Vj =(1 + r)j

ZjEj

ZNVN(1 + r)N

=1

ζjEjζNVN para j = 0, . . . , N.

Note que a segunda identidade e somente uma questao de substituir a definicao de ζj. Paramostrar a primeira igualdade, basta mostrar que

EjVN =1

ZjEj[ZNVN ].

De fato, se esta igualdade for verdadeira, entao (3.2.3) segue de Vj = Ej[VN/(1+r)N−j], pois

Ej/(1 + r)j e Martingale na probabilidade P. Mas a identidade acima segue diretamente doseguinte resultado.

Lema 3.2.1. Seja 0 ≤ j ≤ m ≤ N , e Y variavel aleatoria dependendo de ω1 . . . ωm. Entao

Ej[Y ] =1

ZjEj[ZmY ]

DEMONSTRACAO. Note que

Ej[Y ](ω1 . . . ωj) =∑

ωj+1...ωm

p#H(ωj+1...ωm)q#T (ωj+1...ωm)Y (ω1 . . . ωm)

=

(p

p

)#H(ω1...ωj)(qp

)#T (ω1...ωj)

∑ωj+1...ωm

(p

p

)#H(ω1...ωm)(p

q

)#T (ω1...ωm)

p#H(ωj+1...ωm)q#H(ωj+1...ωm)Y (ω1 . . . ωm)

=1

Zj(ω1 . . . ωj)

∑ωj+1...ωm

Zm(ω1 . . . ωm)p#H(ωj+1...ωm)q#H(ωj+1...ωm)Y (ω1 . . . ωm)

=1

Zj(ω1 . . . ωj)Ej[Y Zm](ω1 . . . ωj).

3.3. Aspectos Computacionais

Nesta secao consideramos possıveis solucoes para resolver computacionalmente tres prob-lemas relacionados a otimizacao da funcao utilidade U . Apenas por simplicidade, tomaremossempre U(x) = log(x), mas a implementacao para outras funcoes e identica. Os problemassao os seguintes:

Page 41: Introdu˘c~ao a aspectos matem aticos e computacionais em ...

3.3. ASPECTOS COMPUTACIONAIS 37

Problema 1: Dado X0 ∈ R, achar processo estocastico ∆i que maximize

E(U(XN)),

onde (vide formula (1.1.12))

(3.3.1) Xi = ∆i−1Si + (1 + r)[Xi−1 −∆i−1Si−1] para i = 2, . . . , N.

Problema 2: Dado X0 ∈ R, achar variavel aleatoria XN que maximize

E(U(XN)) tal que E(XN) = X0(1 + r)N .

Problema 3: Dado X0 ∈ R, achar variavel aleatoria XN e λ ∈ R tal que

(3.3.2)E[ZNXN ]

(1 + r)N= X0, U ′(XN) =

λZ

(1 + r)N,

onde a derivada de Radon-Nicodym Z e o processo e Zj sao definidos em (3.1.1)e (3.2.1).

O Problema 1 e um problema de minimizacao sem restricao, e sera resolvido computa-cionalmente com o uso da funcao Matlab chamada fminsearch. O Problema 2 e de mini-mizacao com restricao, e como tal sera tratado, com a ajuda da funcao Matlab fminimax.Ja o Problema 3 e um problema algebrico, i.e., tenta-se achar uma solucao de um conjuntode equacoes. Devido a restricoes do Matlab, este problema sera transformado tambem numproblema de minimizacao sem restricoes, e a funcao fminsearch do Matlab sera novamenteutilizada.

Para resolver estes problemas, novas estruturas de programacao tem que ser usadas, emparticular o uso de funcoes sera bastante explorado. Portanto comecamos por identificarcomo se usa funcoes no Matlab, antes de aplicar nos problemas de interesse.

3.3.1. Funcoes em Matlab. Uma funcao em Matlab tem como objetivo “receber”parametros e “retornar” valores de interesse. Por exemplo, a funcao sin recebe um numeroreal como parametro e devolve seu seno. Por exemplo:

>> sin(2*pi)

ans =

-2.4493e-16

Como o Matlab e muito flexıvel, e possıvel tambem passar uma Matriz de valores paraser calculada:

>> sin(X)

ans =

1.0e-15 *

0.1225 -0.2449 0.3674

>> Y=[1 2 3; 4 5 6]*pi

Page 42: Introdu˘c~ao a aspectos matem aticos e computacionais em ...

38 3. PRECOS DE ESTADO

Y =

3.1416 6.2832 9.4248

12.5664 15.7080 18.8496

>> sin(Y)

ans =

1.0e-15 *

0.1225 -0.2449 0.3674

-0.4899 0.6123 -0.7348

Uma diferenca fundamental entre funcoes e os outros M-files chamados “scripts” sao que estesultimos nao recebem nem retornam valores. Exemplos de scritps aparecem nas paginas 7, 9,11, 15, 16 e 30. Um exemplo de funcao Matlab aparece na pagina 29. Outra diferenca e queos scripts tem acesso a todas as variaveis do Workspace, equanto as variaveis das funcoessao a princıpio “locais”. Retornaremos a este ponto mais tarde.

3.3.1.1. Criando sua propria funcao. Alem das funcoes ja existentes em Matlab, o usuariopode criar suas proprias funcoes. Considere por exemplo a funcao esperanca, incluida noarquivo esperanca.m (e uma boa norma de programacao Matlab que o arquivo que contemuma funcao receba o mesmo nome que a funcao):

function e = esperanca(prob, Xaux)

%ESPERANCA calcula esperancas.

% ESPERANCA(prob, Xaux) retorna a esperanca do vetor Xaux

% usando probabilidades armazenadas em prob.

%

e=prob*Xaux;

end

A primeira linha do M-file acima apenas indica que esperanca e uma funcao (indicada pelapalavra-chave function) que recebe dois parametros (a probabilidade prob e a variavelaleatoria Xaux), e que ira retornar o valor e, a ser calculado. As linhas seguintes, quecomecam com % sao comentarios explicando o que faz o programa. Estes comentarios apare-cem caso o comando help esperanca seja digitado no espaco de trabalho:

>> help esperanca

esperanca calcula esperancas.

esperanca(prob, Xaux) retorna a esperanca do vetor Xaux

usando probabilidades armazenadas em prob.

A seguir, a funcao comeca a executar os comandos. Neste caso, so tem uma linha deprogramacao:

e=prob*Xaux;

Page 43: Introdu˘c~ao a aspectos matem aticos e computacionais em ...

3.3. ASPECTOS COMPUTACIONAIS 39

Ou seja, se prob e um vetor-linha e Xaux e um vetor-coluna, ambos de tamanho n, entao e

recebe o valor

e =n∑i=1

prob(i) ∗ Xaux(i)

Se prob(i) contiver a probabilidade P do i-esimo lancamento de moeda, entao e recebera ovalor E(Xaux). Caso prob(i) contenha a probabilidade P do i-esimo lancamento, entao e

recebera o valor E(Xaux).Notamos entao uma grande vantagem no uso de funcoes. A mesma rotina serve para

calcular esperancas para qualquer probabilidade, basta passa-las como parametro. Considereo seguinte exemplo.

Exemplo 3.3. Se duas moedas sao jogadas em sequencia, com probabilidade de cara p = 1/3e coroa q = 2/3, entao

P(HH) = p2 = 1/9 = 0.111 . . . , P(HT ) = P(TH) = pq = 2/9 = 0.222 . . . ,

P(TT ) = q2 = 4/9 = 0.444 . . . .

Se X for uma variavel aleatoria tal que

X(HH) = 1, X(HT ) = 2 X(TH) = 3, P(TT ) = 4,

Entao

E[X] = 1 · 1/9 + 2 · 2/9 + 3 · 2/9 + 4 · 4/9 =27

9= 3.

Computacionalmente, calculamos e armazenamos os valores [1/9, 2/9, 2/9, 4/9] num vetore [1, 2, 3 , 4] em outro, e depois fazemos o produto escalar (tambem chamado de interno)entre os dois. A funcao em Matlab calcprob se encarrega de computar as probabilidades,e a funcao esperanca descrita acima faz o produto entre os dois vetores (a funcao Matlabcalcprob sera descrita em 3.3.2). Veja o exemplo a seguir.

>> probab=calcprob(3,1/3,2/3)

probab =

0.1111 0.2222 0.2222 0.4444

>> X=[1 2 3 4]’

X =

1

2

3

4

>> esperanca(probab,X)

ans =

Page 44: Introdu˘c~ao a aspectos matem aticos e computacionais em ...

40 3. PRECOS DE ESTADO

3

Por outro lado, se escolhemos a probabilidade dada por p = q = 1/2, temos que E[X] = 2, 5.Testando em Matlab:

>> probab=calcprob(3,1/2,1/2)

probab =

0.2500 0.2500 0.2500 0.2500

>> X=[1 2 3 4]’

X =

1

2

3

4

>> esperanca(probab,X)

ans =

2.5000

Como era previsto, mudando-se as probabilidades, muda-se tambem a esperanca da variavelaleatoria.

3.3.1.2. Escopo das variaveis. Uma caracterıstica de funcoes e a localidade de suas varia-veis internas. Considere o problema de somar dois numeros, a=1 e b=2 a um terceiro numeroc=3, descrito no script exemplo.m abaixo:

clear all;

a=1

b=2

s=soma(b)

A funcao soma e a seguinte:

function total = soma(x)

%SOMA calcula soma de dois numeros

c=3;

total=a+x+c;

end

Observe os seguintes pontos:

• A variavel a so esta definida no script exemplo.m, mas nao foi passada como para-metro para a funcao soma.• A variavel b e passada para a funcao soma, e armazenada na nova variavel x.

Page 45: Introdu˘c~ao a aspectos matem aticos e computacionais em ...

3.3. ASPECTOS COMPUTACIONAIS 41

• A variavel c e definida internamente na funcao soma.

Apesar do valor de a ser conhecido antes de soma.m ser chamada, o programa da erro:

>> exemplo

a =

1

b =

2

Undefined function or variable ’a’.

Error in soma (line 4)

total=a+x+c;

Error in exemplo (line 4)

s=soma(b)

O motivo e que funcoes no Matlab nao tem acesso a variaveis que nao sejam definidasinternamente, globais ou passadas como parametro. E o valor de a nao foi definido emsoma.m, nao foi passado como parametro, nem e variavel global.

A primeira solucao possıvel e definir a dentro de soma.m, como foi feito com c. Umasegunda solucao e reescrever soma de forma a receber dois parametros, como abaixo.

function total = soma2(x,y)

%SOMA2 calcula soma de dois numeros

c=3;

total=x+y+c;

end

Esta nova rotina poderia ser chamada como no segundo exemplo abaixo:

clear all;

a=1

b=2

s=soma2(a,b)

Uma terceira opcao e definir a como variavel global, como no terceiro exemplo abaixo:

clear all;

global a

a=1

b=2

s=soma3(b)

A funcao soma3 tambem tem que declarar a variavel como global:

Page 46: Introdu˘c~ao a aspectos matem aticos e computacionais em ...

42 3. PRECOS DE ESTADO

function total = soma3(x)

%SOMA3 calcula soma de dois numeros

global a

c=3;

total=a+x+c;

end

3.3.1.3. Passando funcoes como parametros. Assim como e necessario passar numeroscomo parametros a funcoes, as vezes e necessario passar uma funcao como parametro. Con-sidere por exemplo a funcao fminsearch do Matlab. Esta funcao busca achar o mınimo deuma dada funcao, “partindo” de algum ponto. Ela necessita entao de ao menos dois valorescomo parametros, a funcao a ser minimizada e o ponto de partida. As primeiras linhas dohelp fminsearch:

help fminsearch

fminsearch Multidimensional unconstrained nonlinear minimization (Nelder-Mead).

X = fminsearch(FUN,X0) starts at X0 and attempts to find a local minimizer

X of the function FUN. FUN is a function handle. FUN accepts input X and

returns a scalar function value F evaluated at X. X0 can be a scalar, vector

or matrix.

A forma de se passar a funcao a ser minimizada e atraves de um “handle”. Por exemplo,querendo-se achar um mınimo da funcao cos(x) proximo a x = 0, basta usar

>> fminsearch(@cos,0)

ans =

3.1416

e descobrimos que 3.1416 ≈ π foi o valor descoberto. Para ver qual o valor que cos(3.1416)atinge, basta usar a seguinte sintaxe:

>> [x val] = fminsearch(@cos,0)

x =

3.1416

val =

-1.0000

Outro exemplo de uso de handle e no desenho de funcoes. O comando ezplot(@cos) gerao grafico 1.

O mesmo procedimento vale para funcoes criadas por usuarios. Se existe um M-fileutilidade.m definindo uma funcao chamada utilidade, entao o handle e @utilidade.

3.3.2. O calculo das esperancas. Observe que nos problemas 1, 2 e 3, e necessarioo calculo de esperancas E e E. Antes de podermos calcular esperancas, precisamos saber

Page 47: Introdu˘c~ao a aspectos matem aticos e computacionais em ...

3.3. ASPECTOS COMPUTACIONAIS 43

Fig. 1. cos(x) tem pontos de mınimo em x = −π e x = π

qual a probabilidade associada a cada lancamento de moeda. Este e um primeiro passo quedescrevemos abaixo.

Para calcular probabilidades usamos o truque de associar aos numeros 0, 1, 2, 3, 4, . . .seus correspondentes em binario 000, 001, 010, 011, 100, . . . , e a estes seus correspondentes em“lancamentos de moedas” HHH,HHT,HTH,HTT, THH, . . . . Estas ideias ja apareceramem 1.2.1.3. Com tres lancamentos de moedas, e usando a probabilidade p para H e q paraT , obtemos

Posicao no vetor ındice binario Lancamento Probabilidade1 0002 HHH p3

2 0012 HHT p2q3 0102 HTH p2q4 0112 HTT pq2

5 1002 THH p2q6 1012 THT pq2

7 1102 TTH pq2

8 1112 TTT q3

O algoritmo para gerar as probabilidades e relativamente simples. Dado um ındice i, usamosa funcao dec2bin para transformar i em binario. A dificuldade e que a resposta desta funcaoe uma “string”, isto e, uma sequencia de caracteres (e nao um numero). Entao usamos afuncao bin2dec para transformar cada caracter da string em numero decimal, armazenadosnum vetor, e depois somamos a quantidade de dıgitos um presente, e esta e a quantidade decoroas correspondente. Veja como isto e feito no exemplo abaixo:

>> a=5

a =

5

Page 48: Introdu˘c~ao a aspectos matem aticos e computacionais em ...

44 3. PRECOS DE ESTADO

>> b=dec2bin(a)

b =

101

>> c=bin2dec(b(:))

c =

1

0

1

>> sum(c)

ans =

2

Depois de associar a cada numero decimal a quantidade de coroas, fica facil calcular aprobabilidade. A funcao Matlab completa vem abaixo.

function pqprob=calcprob(n,p,q)

%calcula a probabilidade do i-esimo lancamento de moeda

%n=length(X);

pqprob=zeros(1,2^(n-1)); % zera o vetor pqprob

for i=1:2^(n-1)

a=dec2bin(i-1); % transforma i em binario

j=sum(bin2dec(a(:))); % conta quantos ’1’s tem

pqprob(i)=p^(n-j-1)*q^j; % acumula o valor em s(i)

end

end %fim da funcao calcprob

Finalmente, para o calculo de esperancas, procedemos como no Exemplo 3.3.

3.3.3. Problema 1 e minimizacao sem restricao. Para resolver o Problema 1,primeiro notamos que, segundo a formula (3.3.1), XN e funcao de ∆ = (∆1, . . . ,∆N−1). Pre-cisamos entao de uma rotina que receba como parametro ∆ e retorne o valor E(U(XN(∆))).Sao entao precisas tres funcoes em Matlab:

• riqueza.m: recebe como parametros uma riqueza inicial, valor dos juros, o numerode perıodos N , precos das acoes (matriz S de tamanho 2N−1×N−1) e um portifolio(matriz ∆ de tamanho 2N−1×N−1) devolve riqueza (matriz X de tamanho 2N−1×N − 1) no periodo N.

Page 49: Introdu˘c~ao a aspectos matem aticos e computacionais em ...

3.3. ASPECTOS COMPUTACIONAIS 45

• esper utilidade.m: dado X=riqueza(∆) e depois U(X(:, N)), onde X(:, N) e aultima coluna da matrizX. Finalmente usa a funcao esperanca passando U(X(:, N))como parametro.• esperanca.m: recebe um vetor contendo probabilidades de cada lancamento de

moedas e outro vetor (de mesmo tamanho) contendo os valores de uma variavelaleatoria. A funcao retorna a esperanca desta variavel aleatoria segundo a proba-bilidade escolhida.

A funcao esper utilidade.m e bastante simples, e vem listada abaixo.

function resposta = esper_util(deltaaux)

%ESPER_UTIL calcula a esperanca da funcao utilidade

global probpq Xinit S r N;

Y=riqueza(Xinit, deltaaux, S, r, N);

resposta=-esperanca(probpq,log(Y(:,N)));

end

Um aspecto importante e que a funcao a ser minimizada depende do calculo da esperancaE. A funcao que realiza este calculo ja foi apresentada em 3.3.1.1, mas esta depende dacomputacao das probabilidades, que deve ser feito logo no inıcio do programa, numa fase depre-processamento.

A funcao riqueza implementa de forma direta a formula (3.3.1): Considere a seguintefuncao:

function X = riqueza(Xinit, delta, S, r, N)

%RIQUEZA calcula riqueza para um dado portifolio.

% RIQUEZA(Xinit, delta, S, r, N) devolve riqueza no periodo N, para dada

% riqueza inicial Xinit, portifolio delta, precos S, juros r.

X=zeros(2^(N-1),N); % monta e zera a matriz X

X(1,1)=Xinit;

for j=2:N

for i=1:2^(j-2)

X(2*i-1,j)=delta(i,j-1)*S(2*i-1,j)+...

(1+r)*(X(i,j-1)-delta(i,j-1)*S(i,j-1));

X(2*i,j)=delta(i,j-1)*S(2*i,j)+...

(1+r)*(X(i,j-1)-delta(i,j-1)*S(i,j-1));

end;

end;

Note que a funcao riqueza se utiliza de S1, . . . , SN , que devem ser pre-processados, i.e.,calculados antes do processo de otimizacao ser iniciado.

Page 50: Introdu˘c~ao a aspectos matem aticos e computacionais em ...

46 3. PRECOS DE ESTADO

O algoritmo abaixo apresenta os passos do programa principal:entrada: u, d, r, p, S0, X0 (numeros reais)entrada: N (numero inteiro)saıda: ∆ (matriz 2N−2 ×N − 1)iniciacao das variaveis (le valores de u, d, r, p, S0, X0; cria S (tamanho 2N−1 ×N) e1

∆ (tamanho 2N−1 ×N − 1));calcula S;2

probpq=calcprob(N , p, q);3

probtilpq=calcprob(N , p, q);4

minimiza -E[utilidade(∆)];5

Algoritmo 2: Maximizacao da esperanca da utilidade.

Resumidamente, o algoritmo acima faz o seguinte: na linha 1, as variaveis u, d, r, p, S0,X0 recebem valores, e q, p, q sao calculadas. Alem disto, as matrizes S e ∆ sao criadas. Naslinhas seguintes (2, 3, 4), a matriz S e as probabilidades reais e livres de risco sao calculadas.Estas computacoes sao importantes para o calculo da funcao utilidade. Finalmente, nalinha 5, o algoritmo de minimizacao e chamado. Observe que gostarıamos de maximizar aesperanca da utilidade, mas como o algoritmo de otimizacao em Matlab e de minimizacao,resolvemos este problema minimizando menos a esperanca da utilidade (−E[U ]).

Uma implementacao Matlab deste algoritmo vem a seguir:

%INVEST calcula investimento otimo conforme secao 3.3

%do livro do Shreve, Stochastic calculus for finance, vol I

clear all;

global probpq probtilpq Xinit S r N Z;

entradados;

probpq=calcprob(N,p,q);

probtilpq=calcprob(N,ptilde,qtilde);

calculaS;

% Problema 3.3.1

tic

[delta,fval]=fminsearch(@esper_util,delta)

X=riqueza(Xinit, delta, S, r, N)

toc

A execucao desta rotina vem a seguir:

>> invest

delta =

0.5555 0.4629

-2.5667 0.9259

Page 51: Introdu˘c~ao a aspectos matem aticos e computacionais em ...

3.3. ASPECTOS COMPUTACIONAIS 47

fval =

-1.9458

X =

4.0000 6.6666 11.1109

0 3.3334 5.5557

0 0 5.5556

0 0 2.7778

Elapsed time is 0.097388 seconds.

3.3.4. Problema 2 e minimizacao com restricao. Em termos de implementacao, osegundo problema e muito semelhante ao primeiro. As grandes diferencas sao que, agora,a minimizacao ’e com restricao, e nao buscamos mais o mınimo em ∆, mas sim em X.Para resolver este problema de minimizacao com restricao em Matlab, nao utilizamos mais afuncao fminsearch, mas sim a funcao fminimax, que descrevemos com mais detalhes abaixo.

A funcao fminimax serve para minimizar problemas com restricoes, que podem ser noformato de igualdades (nosso caso) e desigualdades. E uma funcao bastante flexıvel, e nosrestringiremos ao nosso caso de interesse. Usando a sintaxe

fminimax(fun,x0,A,b,Aeq,beq)

onde A e Aeq sao matrizes e b e beq sao vetores, tenta minimizar a funcao fun a partir doponto x0 e com as restricoes A*x≤b e Aeq*x=beq. Tendo somente restricoes de igualdade,como e no nosso caso, basta usar a sintaxe

fminimax(fun,x0,[],[],Aeq,beq)

onde substituımos A e b por [].O restante do programa entretanto e quase identico ao caso anterior, e uma listagem vem

abaixo.

%%INVEST calcula investimento otimo conforme secao 3.3

%do livro do Shreve, Stochastic calculus for finance, vol I

clear all;

global probpq probtilpq Xinit S r N Z;

entradados;

probpq=calcprob(N,p,q);

probtilpq=calcprob(N,ptilde,qtilde);

calculaS;

Xzero=[1:2^(N-1)]’;

Page 52: Introdu˘c~ao a aspectos matem aticos e computacionais em ...

48 3. PRECOS DE ESTADO

% Problema 3.3.3

tic

[X,fval]=fminimax(@esper_util2,Xzero,[],[],probtilpq,Xinit*(1+r)^(N-1))

disp([’erro na restricao: ’,num2str(probtilpq*X-Xinit*(1+r)^(N-1))])

toc

Note que a funcao a ser minimizada nao e mais a esper_util, mas sim a esper_util2.A listagem desta vem abaixo.

function resposta = esper_util2(Xaux)

%utilidade calcula funcao utilidade

global probpq Xinit S r n;

resposta=-esperanca(probpq,log(Xaux));

end

A diferenca e que a funcao esper_util dependia de ∆ que era usado para calcular X, seulog, e depois o valor da esperanca era retornado. Agora, o valor de X e passado diretamentecomo parametro, seu log e depois a esperanca sao calculados diretamente.

Outra observacao importante e que a restricao matematica dada por E(X) = X0(1 + r)N

foi primeiro transformada na forma equivalente P ·X = X0(1+r)N , onde o vetor P armazena

as probabilidades de cada lancamento de moedas, usando P. Com o comando

disp([’erro na restricao: ’,num2str(probtilpq*X-Xinit*(1+r)^(N-1))])

mostramos na tela o quanto a solucao encontrada pelo Matlab deixa de satisfazer a restricao.Finalmente, a execucao deste metodo vem a seguir.

>> invest

Local minimum possible. Constraints satisfied.

fminimax stopped because the predicted change in the objective function

is less than the default value of the function tolerance and constraints

are satisfied to within the default value of the constraint tolerance.

<stopping criteria details>

X =

11.1120

5.5380

5.5738

2.7762

fval =

Page 53: Introdu˘c~ao a aspectos matem aticos e computacionais em ...

3.3. ASPECTOS COMPUTACIONAIS 49

-1.9458

erro na restricao: 0

Elapsed time is 0.840108 seconds.

3.3.5. Problema 3 e um problema algebrico. O Problema 3 tem um carater com-pletamente diferente, pois envolve a resolucao de duas equacoes, descritas em (3.3.2). Aprimeira equacao e uma igualdade escalar, e a segunda e vetorial. Entretanto, o Matlab naotem rotina para achar raızes de equacoes que dependam de varias variaveis (a funcao fzeroacha raızes de equacoes definidas na reta). Temos entao que improvisar...

Uma saıda e tornar o problema de achar solucoes para (3.3.2) num problema de mini-mizacao, buscando vetor X e escalar λ que minimizem∥∥∥∥U ′(X)− λZ

(1 + r)N

∥∥∥∥2

+∣∣E[ZNX]− (1 + r)NX0

∣∣2.Note que o mınimos que a funcao acima pode atingir e zero, e este valor so e atingido pelasraızes de (3.3.2). Chamamos esta funcao de restricao.m, e a implementamos como abaixopara o caso U(x) = log(x).

function val = restricao(Xaux)

%RESTRICAO transforma problema do lagrangiano em minimizacao

global probpq probtilpq Xinit S r N Z;

lambda=Xaux(N+2);

aux=1./(Xaux(1:N+1))-lambda*Z/(1+r)^(N-1);

val=norm(aux)^2+(probtilpq*Xaux(1:N+1)’-Xinit*(1+r)^(N-1))^2;

end

Uma primeira observacao e que como agora a funcao a ser minimizada e funcao de X (quetem dimensao 2N−1) e λ (que e um numero), o vetor a ser passado como parametro temdimensao 2N−1 + 1, onde armazenamos λ na ultima posicao do vetor. Note ainda queusamos a identidade E[ZNXN ] = E[XN ].

A listagem do programa principal vem a seguir.

%%INVEST calcula investimento otimo conforme secao 3.3

%do livro do Shreve, Stochastic calculus for finance, vol I

clear all;

global probpq probtilpq Xinit S r N Z;

entradados;

probpq=calcprob(N,p,q);

probtilpq=calcprob(N,ptilde,qtilde);

calculaS;

Xzero=[1:2^(N-1)]’;

Page 54: Introdu˘c~ao a aspectos matem aticos e computacionais em ...

50 3. PRECOS DE ESTADO

% Problema 3.3.5 (para o caso em que U’ e’ conhecido)

tic

Z=probtilpq./probpq;

X=[Xzero’ 1];

[Xresp,fval]=fminsearch(@restricao,X);

XN=Xresp(1:2^(N-1))

esper_util2(XN’)

disp([’erro na restricao: ’,num2str(probtilpq*XN’-Xinit*(1+r)^(N-1))])

toc

A execucao em Matlab deu o seguinte resultado.

>> invest

XN =

11.0798 5.5400 5.5399 2.7700

ans =

-1.9430

erro na restricao: -0.017577

Elapsed time is 0.176784 seconds.

Ja da para perceber que a restricao nao e muito bem satisfeita, e este problema se agrava seaumenta-se N .

Page 55: Introdu˘c~ao a aspectos matem aticos e computacionais em ...

CAPITULO 4

Opcoes americanas

1

4.1. Introducao

Ao contrario das opcoes europeias, as americanas possibilita a quem as possui exerce-lasa qualquer momento. Esta flexibilidade as faz valer mais do que as opcoes europeias, e queo payoff obtido caso ela seja executada imediatamente.

Para precificar uma opcao americana deve-se levar em conta que qualquer estrategia dehedging deve estar pronta para “cobrir” o valor da opcao a qualquer momento, inclusive noperıodo de exercıcio otimo.

Na secao seguinte investigamos estrategias de Hedging no caso em que a opcao dependesomente do preco momentaneo dos ativos (e no de caminhos).

4.2. Opcoes americanas independentes de caminhos

Suponha que exista funcao nao negativa g(Sj) correspondendo ao payoff caso uma opcaoseja executada. O portifolio de Hedge tem que ser tal que

Xj ≥ g(Sj) para j = 1, . . . , N.

“Trocando” Xj por vj, temos a seguinte formula:

(4.2.1)

vN(s) = g(s),

vj(s) = maxg(s),

1

1 + r[pvj+1(us) + qvj+1(ds)]

para j = 1, . . . , N − 1,

e onde s = Sj(ω) para algum ω ∈ Ω, isto e s e algum preco no perıodo j de algum estoque.Note que a formula (4.2.1) e bastante semelhante a sua equivalente da opcao europeia (2.5.3),com a diferenca de que para se calcular vj e preciso tirar um maximo entre g(s) e o valor docaso europeu.

O motivo desta mudanca de calculo e que o valor dado pela formula anterior (2.5.3) podeficar abaixo do payoff, o que invalidaria a estrategia de hedge. Na verdade, para o agentedetentor da opcao, o momento de exercıcio otimo e quando g(s) se torna estritamente maiorque a = [pvj+1(us) + qvj+1(ds)]/(1 + r). Nesta situacao, o agente pode executar a opcao,com payoff g(s) e ainda replicar o restante do processo com investimento “inicial” a.

Considere o seguinte exemplo, semelhante ao Exemplo 1.3, mas com somente dois perıodos.

Exemplo 4.1. Seja N = 2, S0 = 4, u = 2, d = 1/2, r = 1/4. Entao, por (1.1.4), temosp = q = 1/2, e os precos sao dados como na arvore de precos abaixo.

1Ultima Atualizacao: 07/02/2014

51

Page 56: Introdu˘c~ao a aspectos matem aticos e computacionais em ...

52 4. OPCOES AMERICANAS

S0 = 4

S1(H) = 8

S1(T ) = 2

S2(HH) = 16

S2(HT ) = S2(TH) = 4

S2(TT ) = 1

Fig. 1. Precos no caso binomial com N = 2

Supondo uma put europeia, com strike K = 5, definimos g(s) = (K − s)+, obtendo aseguinte arvore de payoffs.

g(4) = 1

g(8) = 0

g(2) = 3

g(16) = 0

g(4) = 1

g(1) = 4

Fig. 2. Payoff (g(s)) para opcao americana

Executando agora o algoritmo da opcao europeia (2.5.3), obtemos a seguinte arvore.Usamos vj no lugar de vj, e usamos a cor vermelha para denotar valores errados, i.e., quenao correspondem a uma estrategia de hedge adequada.

v0(4) = 0, 96

v1(8) = 0, 4

v1(2) = 2

v2(16) = 0

v2(4) = 1

v2(1) = 4

Fig. 3. Precificacao via algoritmo opcao europeia

Note que no caso de um lancamento de moeda no perıodo zero resultando em T , temosque o detentor da opcao pode (e deve!) exerce-la no momento um, seu payoff seria maiorque v1(2), mostrando que a estrategia nao funciona. A solucao neste caso, e simplesmentetomar o valor g(2) = 3 no lugar de v1(2), e prosseguir com os calculos para achar o valorno momento zero de forma correta. E e exatamente isto que faz o algoritmo dado pelaformula (4.2.1).

Seguindo agora o algoritmo dado por (4.2.1), obtemos a arvore correta, dada na Figura 4.

Page 57: Introdu˘c~ao a aspectos matem aticos e computacionais em ...

4.2. OPCOES AMERICANAS INDEPENDENTES DE CAMINHOS 53

v0(4) = 1, 36

v1(8) = 0, 4

v1(2) = 3

v2(16) = 0

v2(4) = 1

v2(1) = 4

Fig. 4. Precificacao via algoritmo opcao americana

Note que agora os valores calculados erroneamente pelo “algoritmo europeu” foram modi-ficados (estao em azul), e permitem um hedge adequado. Note que apenas no ultimo perıodo,os valores de g sao exatamente replicados. Nos perıodos anteriores, obtemos vj(s) ≥ g(s),o que e suficiente para nossos objetivos. Observe em particular que v0 = 1, 36 e maior queo payoff no momento inicial (que e igual a 1). Alem disto, o algoritmo americano retornav0 > v0, i.e., o valor a ser investido inicialmente na opcao americana e maior que o da opcaoeuropeia.

E quanto aos deltas? Bom, estes podem ser calculados usando a formula abaixo, que ebaseada em (1.1.13):

∆i(s) =vi+1(us)− vi+1(ds)

(u− d)spara i = 1, . . . , N = 1.

Entao

∆0 =0, 4− 3

6≈ −4, 3, ∆1(H) = ∆1(8) =

−1

12, ∆1(T ) = ∆1(2) =

1− 4

3= −1.

Calculados os deltas, suponha agora que o primeiro lancamento de moedas tenha sido T .Entao o valor do portifolio e X1(T ) = 3, e podemos calcular seu valor no segundo perıodo(compare com (1.1.12)):

X2(TH) = 4∆1(T ) + (1 + r)[X1(T )− 2∆1(T )] = −4 +5

4(3 + 2) =

9

4> 1 = v2(4),

X2(TT ) = ∆1(T ) + (1 + r)[X1(T )− 2∆1(T )] = −1 +5

4(3 + 2) =

21

4> 4 = v2(1).

Notamos que o valor X1(T ) = 3 que seria usado para hedge no caso acima e maior doque necessario. Na verdade, ja foi calculado pela precificacao europeia que para se obterv2(4) = 1 e v2(1) = 4, o valor a ser investido no perıodo um e 2, com ∆(T ) = −1. Portanto,a diferenca X1(T )− 2 = 3− 2 = 1 pode ser consumida, sem prejudicar o portifolio.

Em geral definimos uma nova variavel aleatoria que mede o quanto pode ser consumidosem prejudicar a acao de hedge:

Cj(s) = vj(s)−1

1 + r[pvj+1(us) + qvj+1(ds)].

Portanto, o valor do portifolio no instante j + 1 tem que ser calculado por (novamente,compare com (1.1.12)):

Xj+1 = ∆jSj+1 + (1 + r)[Xj − Cj −∆jSj].

Page 58: Introdu˘c~ao a aspectos matem aticos e computacionais em ...

54 4. OPCOES AMERICANAS

O valor do portifolio em j + 1 e entao dado pelo quantidade de acoes possuida (∆j) vezesseu valor atual (Sj+1), mais o que foi aplicado ou emprestado (Xj −Cj −∆jSj) no mercadofinanceiro, corrigido pelos juros (1 + r).

No caso deste exemplo, temos a seguinte situacao:

C0(4) = 0

C1(8) = 0

C1(2) = 1

C2(16) = 0

C2(4) = 0

C2(1) = 0

Fig. 5. Consumo com opcao americana

Fazendo novamente o calculo:

X2(TH) = 4∆1(T ) + (1 + r)[X1(T )− C1(TH)− 2∆1(T )] = −4 +5

4(3− 1 + 2) = 1,

X2(TT ) = ∆1(T ) + (1 + r)[X1(T )− C1(TT )− 2∆1(T )] = −1 +5

4(3− 1 + 2) = 4.

Obtemos assim exatamente os valores corretos para uma operacao de hedge.Uma observacao final e a respeito da propriedade do valor descontado ser um martingale

sob a probabilidade livre de risco. Em particular, com a opcao europeia tınhamos quevi/(1 + r)i era martingale sob P, e neste exemplo a precificacao europeia descontada seriadada pela arvore da Figura 6 (ver Figura 3 para os precos sem desconto). Note que de fato

v0(4) = 0, 96

45 v1(8) = 0, 32

45 v1(2) = 1, 6

1625 v2(16) = 0

1625 v2(4) = 0, 64

1625 v2(1) = 2, 56

Fig. 6. Precificacao descontada via algoritmo opcao europeia

temos que vi/(1 + r)i = E[vi+1/(1 + r)i+1] e martingale.Entretanto, a arvore com precos descontados baseada no algoritmo de precificacao amer-

icana (ver Figure 4) nos da a arvore da Figura 7. Nota-se que

2, 4 =v1(2)

1 + r≥ 1

(1 + r)2[pv2(1) + qv2(4)] =

16

25· 1

25 = 1, 6.

Nos demais nos da arvore, temos que de fato vi/(1 + r)i = E[vi+1/(1 + r)i+1]. Portanto oprocesso nao e um martingale, mas sim um super-martingale.

Page 59: Introdu˘c~ao a aspectos matem aticos e computacionais em ...

4.3. ASPECTOS COMPUTACIONAIS DE OPCOES AMERICANAS 55

Isto e uma caracterıstica geral da opcao americana, indicando a tendencia de queda dovalor das opcoes.

v0(4) = 1, 36

45v1(8) = 0, 32

45v1(2) = 2, 4

1625v2(16) = 0

1625v2(4) = 0, 64

1625v2(1) = 2, 56

Fig. 7. Precos descontados — algoritmo da opcao americana

4.3. Aspectos Computacionais de opcoes americanas

Analisamos aqui como modificar para opcoes americanas, os algoritmos para opcoes eu-ropeias que foram apresentados na Secao 1.2. Na subsecao vemos como tratar o caso daSecao 4.2, em que o payoff depende somente do preco das acoes.

4.3.1. Caso de payoff independente de caminho. A implementacao computacionalda formula (4.2.1) e quase imediata, pois basta uma pequena modificacao do programaprecifica3.m da pagina 15.

Page 60: Introdu˘c~ao a aspectos matem aticos e computacionais em ...
Page 61: Introdu˘c~ao a aspectos matem aticos e computacionais em ...

APENDICE A

Notacao

1

Letras Romanas

d (constante real positiva): taxa de descida do valor de estoques; pagina 1

E (funcional): esperanca, associa um numero a cada variavel aleatoria, e e dada pelaformula (2.2.2); pagina 23

Ei (variavel aleatoria): esperanca condicional; pagina 23

F (colecao de conjuntos): e formado por subconjuntos de Ω; pagina 19

H (variavel do espaco amostral): cara; pagina 1

Mi (processo estocastico): ; pagina 25

p (constante entre zero e um): probabilidade sem risco; pagina 2

P (funcao): e uma probabilidade P : F → R definida em F ; pagina 19

q (constante entre zero e um): probabilidade sem risco; pagina 2

r (constante real positiva): taxa de juros; pagina 1

Si (variavel aleatoria): preco de estoque no “i-esimo” momento; pagina 1

T (variavel do espaco amostral): coroa; pagina 1

u (constante real positiva): taxa de subida do valor de estoques; pagina 1

Vi (variavel aleatoria): valor de um derivativo no tempo i; pagina 1

Z (variavel aleatoria): derivada de Radon-Nikodym; pagina 33

Letras Gregas

∆i (Delta - variavel aleatoria): quantidade de estoques no tempo i; pagina 1

ωj (omega - variavel do espaco amostral): assume os valores H ou T ; pagina 3

ωi (omega - elemento do espaco amostral Ωi): tem a forma ωi = (ω1, ω2, . . . , ωi); pagina 3

Ω (Omega - conjunto): espaco amostral; paginas 1, 19

Ωi (Omega - conjunto): espaco amostral; pagina 3

1Ultima Atualizacao: 18/11/2013

57

Page 62: Introdu˘c~ao a aspectos matem aticos e computacionais em ...

58 A. NOTACAO

ζ (zeta - variavel aleatoria): densidade de preco de estado 35

Outros sımbolos

#H(ω) e #T (ω) (funcoes): “numero” de “caras” e de “coroas” em ω; pagina 3

Page 63: Introdu˘c~ao a aspectos matem aticos e computacionais em ...

Index

Desigualdade de Jensen 23

Derivada de Radon-Nikodym 33

Densidade de preco de estado 35

Espaco

amostral 19

de probabilidade 19

de eventos 19

Esperanca 23

condicional 23

Evento 19

Jensen, Desigualdade 23

Martingale 25

Media 23

Preco de estado 35

Probabilidade 19

Processo estocastico 25

adaptado 25

de Markov 26

Sub-martingale 25

Super-martingale 25

Valor esperado 23

Variancia 23

Variavel aleatoria 21

59

Page 64: Introdu˘c~ao a aspectos matem aticos e computacionais em ...
Page 65: Introdu˘c~ao a aspectos matem aticos e computacionais em ...

Bibliography

[1] Tom M. Apostol, Calculus. Vol. II: Multi-variable calculus and linear algebra, with applications to dif-ferential equations and probability, Second edition, Blaisdell Publishing Co. Ginn and Co., Waltham,Mass.-Toronto, Ont.-London, 1969. MR0248290 (40 #1542)

[2] Paolo Brandimarte, Numerical methods in finance and economics, 2nd ed., Statistics in Practice, Wiley-Interscience [John Wiley & Sons], Hoboken, NJ, 2006. A MATLABr-based introduction. MR2255817(2007d:91001)

[3] Paul R. Halmos, Measure Theory, Graduate Texts in Mathematics, vol. 18, Springer-Verlag, New York,N. Y., 1974.

[4] Desmond J. Higham, Nine ways to implement the binomial method for option valuation in MATLAB,SIAM Rev. 44 (2002), no. 4, 661–677 (electronic) (2003), DOI 10.1137/S0036144501393266. MR1980448(2004d:65170)

[5] , An introduction to financial option valuation, Cambridge University Press, Cambridge, 2004.Mathematics, stochastics and computation. MR2064042 (2005b:91002)

[6] John C. Hull, Options, Futures and Other Derivatives, 8. ed., Pearson Prentice Hall, 2012.[7] Barry R. James, Probabilidade: um curso em nıvel intermediario, Projeto Euclides [Euclid Project],

vol. 12, Instituto de Matematica Pura e Aplicada, Rio de Janeiro, 2002 (Portuguese).[8] A. J. Roberts, Elementary calculus of financial mathematics, Mathematical Modeling and Computation,

vol. 15, Society for Industrial and Applied Mathematics (SIAM), Philadelphia, PA, 2009. MR2468516(2010a:91002)

[9] Steven E. Shreve, Stochastic calculus for finance. I, Springer Finance, Springer-Verlag, New York, 2004.The binomial asset pricing model. MR2049045 (2004m:91003)

61