σμimplied vol · KKmax(S−K,0)udβρᵢⱼfat tailsPnL · drawdownyield · TdSₜ = μSₜ dt + σSₜ dWₜC = S·N(d₁) − K·e⁻ʳᵀ·N(d₂)σₚ² = wᵀΣwd₁ = [ln(S/K) + (r + σ²⁄2)T] ⁄ σ√T∂V/∂t + ½σ²S²·∂²V/∂S² + rS·∂V/∂S − rV = 0Sharpe = (Rₚ − R_f) ⁄ σₚVaR₉₉ = μ − 2.33σρ = Cov(X,Y) ⁄ σₓσᵧE[Rₚ] = Σ wᵢ·E[Rᵢ]φ(x) = e^(−x²/2) ⁄ √2πE[Rᵢ] = R_f + βᵢ(E[Rₘ] − R_f)dXₜ = θ(μ − Xₜ)dt + σ dWₜσ²ₜ = ω + α·ε²ₜ₋₁ + β·σ²ₜ₋₁C − P = S − K·e⁻ʳᵀΔ = ∂V/∂S Γ = ∂²V/∂S²p = (e^(rΔt) − d) ⁄ (u − d)rₜ = ln(Pₜ ⁄ Pₜ₋₁)E[Xₜ₊₁ | ℱₜ] = Xₜf* = (bp − q) ⁄ bz = (x − μ) ⁄ σP(N=k) = λᵏe^(−λ) ⁄ k!Θ = −∂V/∂Tν = S·φ(d₁)·√Tmin wᵀΣw s.t. wᵀμ = μ*∫Σ∂∞λ
uantCraft AcademyRoadmapsRoteiros
Ctrl K
AO
+1,2 mil alunos
EntrarParticipar ↗
RoadmapsRoteiros
AO
+1,2 mil alunos
Entrar
  • English
  • Français
  • Español
  • العربية
  • Português
  • Deutsch
  • 日本語
  • 中文
σμimplied vol · KKmax(S−K,0)udβρᵢⱼfat tailsPnL · drawdownyield · TdSₜ = μSₜ dt + σSₜ dWₜC = S·N(d₁) − K·e⁻ʳᵀ·N(d₂)σₚ² = wᵀΣwd₁ = [ln(S/K) + (r + σ²⁄2)T] ⁄ σ√T∂V/∂t + ½σ²S²·∂²V/∂S² + rS·∂V/∂S − rV = 0Sharpe = (Rₚ − R_f) ⁄ σₚVaR₉₉ = μ − 2.33σρ = Cov(X,Y) ⁄ σₓσᵧE[Rₚ] = Σ wᵢ·E[Rᵢ]φ(x) = e^(−x²/2) ⁄ √2πE[Rᵢ] = R_f + βᵢ(E[Rₘ] − R_f)dXₜ = θ(μ − Xₜ)dt + σ dWₜσ²ₜ = ω + α·ε²ₜ₋₁ + β·σ²ₜ₋₁C − P = S − K·e⁻ʳᵀΔ = ∂V/∂S Γ = ∂²V/∂S²p = (e^(rΔt) − d) ⁄ (u − d)rₜ = ln(Pₜ ⁄ Pₜ₋₁)E[Xₜ₊₁ | ℱₜ] = Xₜf* = (bp − q) ⁄ bz = (x − μ) ⁄ σP(N=k) = λᵏe^(−λ) ⁄ k!Θ = −∂V/∂Tν = S·φ(d₁)·√Tmin wᵀΣw s.t. wᵀμ = μ*∫Σ∂∞λ
uantCraft AcademyRoadmapsRoteiros
Ctrl K
AO
+1,2 mil alunos
EntrarParticipar ↗
RoadmapsRoteiros
AO
+1,2 mil alunos
Entrar
  • English
  • Français
  • Español
  • العربية
  • Português
  • Deutsch
  • 日本語
  • 中文
Roteiro de SciPy›Módulo 2 · Curvas e integrais›Tópico 2.3·~40 minIntermediário

Funções especiais na precificação de opções

Posição no roteiroMódulo 2 de 3 · Tópico 3 de 3
2.3 Funções especiais na precificação de opções
—Nota do lab— / 100XP total—Sequência—

As funções por trás das fórmulas

O scipy.special reúne as funções com nome que aparecem sempre nas fórmulas. A mais útil em finanças é a função de distribuição normal Φ(x)\Phi(x)Φ(x), disponível como special.ndtr. Ela se liga à função erro por Φ(x)=12(1+erf⁡(x/2))\Phi(x)=\tfrac12\big(1+\operatorname{erf}(x/\sqrt2)\big)Φ(x)=21​(1+erf(x/2​)). O preço de Black–Scholes de uma call com spot SSS, exercício KKK, taxa rrr, volatilidade σ\sigmaσ e prazo TTT a usa duas vezes: C=S Φ(d1)−Ke−rTΦ(d2)C=S\,\Phi(d_1)-K e^{-rT}\Phi(d_2)C=SΦ(d1​)−Ke−rTΦ(d2​), em que d1=ln⁡(S/K)+(r+σ2/2)TσTd_1=\dfrac{\ln(S/K)+(r+\sigma^2/2)T}{\sigma\sqrt T}d1​=σT​ln(S/K)+(r+σ2/2)T​ e d2=d1−σTd_2=d_1-\sigma\sqrt Td2​=d1​−σT​. A sensibilidade do preço à volatilidade chama-se vega e vale S φ(d1)TS\,\varphi(d_1)\sqrt TSφ(d1​)T​, em que φ\varphiφ é a densidade normal. A vega é o que um solucionador de Newton precisa para achar uma volatilidade implícita.

O outro grupo de funções especiais trata de números grandes ou pequenos demais. Um fatorial cresce tão rápido que 171!171!171! já estoura um número decimal comum no computador, mas ln⁡n!\ln n!lnn! é fácil: special.gammaln(n+1). special.comb(n, k) conta os caminhos com kkk altas numa árvore de nnn passos. special.logsumexp calcula ln⁡∑exi\ln\sum e^{x_i}ln∑exi​ com segurança tirando o maior xxx, de modo que ln⁡(e1000+e1000)=1000+ln⁡2\ln(e^{1000}+e^{1000})=1000+\ln2ln(e1000+e1000)=1000+ln2 não estoura. special.expit(x)=1/(1+e^{-x}) transforma qualquer pontuação em probabilidade entre 0 e 1, como num modelo logístico. A regra: trabalhe em logaritmos quando um número pode ser enorme ou minúsculo e só exponencie no fim.

Φ(x)=12(1+erf⁡(x2)),C=SΦ(d1)−Ke−rTΦ(d2),vega=S φ(d1)T,ln⁡∑exi=m+ln⁡∑exi−m\Phi(x)=\tfrac12\Big(1+\operatorname{erf}\Big(\frac{x}{\sqrt2}\Big)\Big),\qquad C=S\Phi(d_1)-Ke^{-rT}\Phi(d_2),\qquad \text{vega}=S\,\varphi(d_1)\sqrt T,\qquad \ln\sum e^{x_i}=m+\ln\sum e^{x_i-m}Φ(x)=21​(1+erf(2​x​)),C=SΦ(d1​)−Ke−rTΦ(d2​),vega=Sφ(d1​)T​,ln∑exi​=m+ln∑exi​−m(1)
Um preço de call e um passo de volatilidade implícitaTome S=K=100S=K=100S=K=100, r=0r=0r=0, σ=0,2\sigma=0{,}2σ=0,2 e T=1T=1T=1. Então d1=0,1d_1=0{,}1d1​=0,1 e d2=−0,1d_2=-0{,}1d2​=−0,1, e Φ(0,1)=0,5398\Phi(0{,}1)=0{,}5398Φ(0,1)=0,5398, Φ(−0,1)=0,4602\Phi(-0{,}1)=0{,}4602Φ(−0,1)=0,4602. Logo C=100⋅(0,5398−0,4602)=7,97C=100\cdot(0{,}5398-0{,}4602)=7{,}97C=100⋅(0,5398−0,4602)=7,97. A densidade normal em 0,10{,}10,1 é 0,39700{,}39700,3970, então a vega é 100⋅0,3970⋅1=39,70100\cdot0{,}3970\cdot1=39{,}70100⋅0,3970⋅1=39,70. Se o preço de mercado é 9,009{,}009,00, o preço está baixo por 1,031{,}031,03, e um passo de Newton eleva a volatilidade para 0,2+1,03/39,70=0,22610{,}2+1{,}03/39{,}70=0{,}22610,2+1,03/39,70=0,2261. Para Φ(1)\Phi(1)Φ(1) pode-se usar erf⁡(0,7071)=0,6827\operatorname{erf}(0{,}7071)=0{,}6827erf(0,7071)=0,6827, então Φ(1)=12(1+0,6827)=0,8413\Phi(1)=\tfrac12(1+0{,}6827)=0{,}8413Φ(1)=21​(1+0,6827)=0,8413. Nas ferramentas pequenas, expit⁡(2)=0,8808\operatorname{expit}(2)=0{,}8808expit(2)=0,8808, ln⁡4!=3,178\ln 4!=3{,}178ln4!=3,178 e (103)=120\binom{10}{3}=120(310​)=120. Em dados reais, o retorno diário do SPY tem desvio-padrão de 1,196%1{,}196\%1,196%. Uma queda de 5%5\%5% é z=−4,21z=-4{,}21z=−4,21 desvios, e Φ(−4,21)=1,26⋅10−5\Phi(-4{,}21)=1{,}26\cdot10^{-5}Φ(−4,21)=1,26⋅10−5, que um modelo normal diz acontecer uma vez a cada cerca de 315315315 anos. Nos 5 4035\,4035403 dias de dados, aconteceu em 202020 dias.
  • Dê nome à função: ndtr, erf, expit, gammaln, comb e logsumexp substituem páginas de matemática escrita à mão.
  • Trabalhe em logaritmos com extremos: use gammaln e logsumexp em vez de um fatorial ou de uma soma de exponenciais enormes.
  • A vega conduz o solucionador: um passo de Newton para a volatilidade implícita é a diferença de preço dividida pela vega.

Lab: o que é avaliado

  • A função normal a partir de erf10 pts
  • Uma call de Black–Scholes20 pts
  • A vega10 pts
  • Um passo de volatilidade implícita15 pts
  • Para que serve cada função15 pts
  • A forma segura de somar10 pts
  • Por que calcular fatoriais por logaritmos20 pts
0/ 7 respondidas
Tarefas
1Resposta numérica10 ptsSem resposta

Sabendo que erf⁡(0,7071)=0,6827\operatorname{erf}(0{,}7071)=0{,}6827erf(0,7071)=0,6827, calcule Φ(1)=12(1+erf⁡(1/2))\Phi(1)=\tfrac12\big(1+\operatorname{erf}(1/\sqrt2)\big)Φ(1)=21​(1+erf(1/2​)). Dê quatro casas decimais.

p=p =p=aceito: ± 0.0005
2Resposta numérica20 ptsSem resposta

Com S=K=100S=K=100S=K=100, r=0r=0r=0, σ=0,2\sigma=0{,}2σ=0,2, T=1T=1T=1 obtém-se d1=0,1d_1=0{,}1d1​=0,1, d2=−0,1d_2=-0{,}1d2​=−0,1, Φ(0,1)=0,5398\Phi(0{,}1)=0{,}5398Φ(0,1)=0,5398 e Φ(−0,1)=0,4602\Phi(-0{,}1)=0{,}4602Φ(−0,1)=0,4602. Quanto vale C=SΦ(d1)−KΦ(d2)C=S\Phi(d_1)-K\Phi(d_2)C=SΦ(d1​)−KΦ(d2​)? Dê duas casas decimais.

c=c =c=aceito: ± 0.03
3Resposta numérica10 ptsSem resposta

A densidade normal em d1=0,1d_1=0{,}1d1​=0,1 é φ(0,1)=0,3970\varphi(0{,}1)=0{,}3970φ(0,1)=0,3970. Com S=100S=100S=100 e T=1T=1T=1, quanto vale a vega =S φ(d1)T=S\,\varphi(d_1)\sqrt T=Sφ(d1​)T​? Dê duas casas decimais.

v=v =v=aceito: ± 0.1
4Resposta numérica15 ptsSem resposta

O preço de mercado é 9,009{,}009,00 e o preço do modelo com σ=0,2\sigma=0{,}2σ=0,2 é 7,96567{,}96567,9656, com vega 39,7039{,}7039,70. Qual é a nova volatilidade σ+(mercado−modelo)/vega\sigma+(\text{mercado}-\text{modelo})/\text{vega}σ+(mercado−modelo)/vega? Dê quatro casas decimais.

s=s =s=aceito: ± 0.0005
5Associar15 ptsSem resposta

Associe cada função do scipy.special à sua tarefa.

Escolha o par de cada item da esquerda.

ndtr
expit
gammaln
logsumexp
comb
6Escolha10 ptsSem resposta

Você precisa de ln⁡(e1000+e1002)\ln(e^{1000}+e^{1002})ln(e1000+e1002) num computador. Qual forma é segura?

7Explicar com palavras20 ptsSem resposta

Uma probabilidade binomial para uma árvore de 200 passos contém 200!200!200!. Em uma ou duas frases, explique por que ela deve ser calculada com gammaln e logaritmos.

Modo matemáticaEntrada por teclado ou LaTeXTarefa 1 de 7 · Ctrl ⏎ para verificar

Entre para executar o seu código.

Todas as aulas são gratuitas para ler. Crie uma conta ou entre para executar código, rodar os testes e enviar este lab.

  • IDE no navegador com terminal bash — nada para instalar
  • Correção instantânea, XP e o seu lugar no roteiro
Criar uma contaEntrar
OU
Continuar com o GitHub