4. Modelo/Processo Vasicek - Compreendendo Finanças Quantitativas (2024)

O objetivo deste caderno é fornecer uma ilustração doVasicek Modelo/Processoe algumas de suas principais propriedades.

Antes de mergulhar na teoria, vamos começar carregando as bibliotecas

junto com a folha de estiloLuz de Quant-Pastel.

Essas ferramentas nos ajudarão a fazer visualizações perspicazes.

importar matplotlib.pyplot como pltmeu estilo = "https://raw.githubusercontent.com/quantgirluk/matplotlib-stylesheets/main/quant-pasl-leight.mplstyle"plt.estilo.usar(meu estilo)plt.rcparams[["Figura.FigSize"] = (12, Assim, 6)
de Aleatory.Processes importar Vilaprocesso = Vila(Theta=0,5, Assim, Mu=-10.0, Assim, Sigma=2.0, Assim, inicial=1.0, Assim, T=20.0)processo.empate(n=200, Assim, N=200, Assim, envelope=Falso, Assim, título='Processo Vasicek')plt.mostrar()

4. Modelo/Processo Vasicek - Compreendendo Finanças Quantitativas (1)

4.1.Definição#

O modelo Vasicek especifica que a taxa de juros instantânea é definida por um processo estocástico que pode ser definido pela seguinte equação diferencial estocástica (SDE)

(4.1)#\ [\ begin {equação} dx_t = \ theta (\ mu - x_t) dt + \ sigma dw_t, \ quad t> 0, \ end {equação} \]

com condição inicial\ (X_0 = x_0 \ em \ mathbb {r} \), e onde\ (W_t \)é um movimento browniano padrão e os três parâmetros são constantes:

  • \ (\ theta> 0 \): velocidade ou coeficiente de reversão média

  • \ (\ Mu \ mathb {r} \): média de longo prazo

  • \ (\ sigma> 0 \): volatilidade

Para encontrar a solução para este SDE, vamos definir a função\ (f (t, x) = x e^{\ theta t} \).Então, a fórmula de Ito implica

\ [\ Begin {align*} x_te^{\ theta t} & = x_0 + \ int_0^t x_s \ theta e^{\ theta s} ds + \ int_0^t e^{\ theta s} dx_s \\ & = = =x_0 + \ int_0^t \ esquerda [\ theta x_s e^{\ theta s} + \ theta e^{\ theta s} (\ mu - x_s) \ direita] ds + \ int_0^t e^{\ theta s}\ sigma dw_s \\ & = x_0 + \ int_0^t \ esquerda [\ theta e^{\ theta s} \ mu \ direita] ds + \ int_0^t e^{\ theta s} \ sigma dw_s \\ & x_0+ \ mu (e^{\ theta t} - 1) + \ int_0^t e^{\ theta s} \ sigma dw_s. \ end {align*} \]

Por isso

(4.2)#\ [\ begin {equação} x_t = x_0e^{-\ theta t} + \ mu (1- e^{-\ theta t}) + \ sigma \ int_0^t e^{-\ theta (t-s)} dw_s.\ end {equação} \]

Observação

📝 A última expressão implica que o processo pode levar valores positivos e negativos.

4.2.Distribuições marginais#

A equação (4.2) implica que para cada\ (t> 0 \), a variável\ (X_t \)segue adistribuição normal- Como pode ser expresso como a soma de uma parte determinística e a integral de uma função determinística em relação ao movimento browniano.

Além disso, usando as propriedades do movimento browniano, podemos obter as seguintes expressões por sua expectativa e variação.

4.2.1.Expectativa e variação#

Para cada\ (t> 0 \), o marginal condicional\ (X_t | x_0 \)de um processo Vacisek satisfaz

am ), \ end {equação*} \]

e

am 2 \ theta t}). \ End {equação*} \]

Para obter a expectativa, simplesmente usamos a linearidade da expectativa e o fato de que a integral da ITO na Equação (2) é um Martingale.Da mesma forma, para a variação, usamos propriedades básicas da variação e a propriedade de isometria da integral ITO.

Portanto, para cada\ (t> 0 \), Nós temos

am\ sqrt {2 \ theta}} \ sqrt {(1- e^{- 2 \ theta t})} \ right). \ end {equação*} \]

4.2.2.Covariância#

Além disso, podemos verificar isso

\ [Cov (x_t, x_s) = \ frac {\ sigma^2} {2 \ theta} e^{-\ theta (t+s)} (e^{2 \ theta \ min \ {t, s \}} -1), \]

para qualquer doação\ (t, s> 0. \)

4.2.3.Implementação de Python#

Então, para dado\ (x_0, \ theta> 0, \ mu, \ sigma> 0 \)e\ (t, s> 0 \)Podemos implementar as fórmulas acima para a expectativa, variação e covariância da seguinte maneira.

importar Numpy como NPx0 = 2.0Theta = 1.0Mu = 3.0Sigma = 0,5t= 10s = 5Exp = x0*NP.Exp(-1.0*Theta*t) + Mu*(1.0 - NP.Exp(-1.0*Theta*t))era = Sigma**2/(2.0*Theta)*(1 - NP.Exp(-2.0*Theta*t)) O = Sigma**2/(2.0*Theta)*NP.Exp(-1.0*(t+s))*(NP.Exp(2.0*Theta*(NP.min([t, Assim,s]))) - 1.0) imprimir(f'Para x_0 ={x0}' , Assim, f'Theta ={Theta}', Assim,f'IN ={Mu}', Assim, f'Sigma =.{Sigma}', Assim, f't ={t}', Assim, f's ={s}', Assim, set=",")imprimir(f'E [x_t] ={Exp:Fluxo}')imprimir(f'Var [x_t] ={era :.F}')imprimir(f'O [x_t, x_s] ={O :Fluxo}')
Para x_0 = 2.0, teta = 1,0, mu = 3,0, sigma = 0,0,5, t = 10, s = 5e [x_t] = 2.999955Var [x_t] = 0,12cov [x_t, x_s] = 0,000842

4.2.4.Distribuições marginais em Python#

Conhecer a distribuição - com seus parâmetros correspondentes - das distribuições marginais nos permitem reproduzi -los comPitão.

Uma maneira de fazer isso é usando o objetonormada Bibliotecascipy.stats.A próxima célula mostra como criar\ (X_1 \)usando este método.

de scipy.stats importar normaimportar Numpy como NP x0 = 2.0 Theta = 1.0Mu = 3.0Sigma = 0,5t =1.0 X_1 = norma(loc=(x0*NP.Exp(-1.0*Theta*t) + Mu*(1.0 - NP.Exp(-1.0*Theta*t)),,, escala= NP.sqrt( (Sigma**2/(2.0*Theta)*(1 - NP.Exp(-2.0*Theta*t)) )) )# Agora podemos calcular a média e a variação de x_1imprimir(X_1.significar()) imprimir(X_1.era())
2.632120558828555770.1080830895954234

Outra maneira de fazer isso é criar um objetoViladeAleatory.Processese chamando o métodoget_marginalnele.A próxima célula mostra como criar o marginal\ (X_1 \)usando este método.

de Aleatory.Processes importar Vilax0 = 2.0 Theta = 1.0Mu = 3.0Sigma = 0,5t =1.0 processo = Vila(Theta=Theta, Assim, Mu=Mu, Assim, Sigma=Sigma, Assim, inicial=x0)X_1 = processo.get_marginal(t=1)# Agora podemos calcular a média e a variação de x_1imprimir(X_1.significar())imprimir(X_1.era())
2.632120558828555770.1080830895954234

A seguir, usaremos o último método para criar distribuições marginais do processo Vacisek.

4.2.5.Funções de densidade de probabilidade#

A função de densidade de probabilidade (PDF) da distribuição marginal\ (X_t \)é dado pela seguinte expressão

\ [\ begin {equação*} f (x, t; \ theta, \ mu, \ sigma, x_0) = \ dfrac {1} {\ frac {\ sigma} {\ sqrt {2 \ theta}} \ sqrt {\ sqrt {2 \ theta}} \ \ sqrt {(1- e^{- 2 \ theta t})} \ sqrt {2 \ pi}} \ exp \ left \ {- \ dfrac {1} {2} \ esquerda (\ dfrac {x- [x_0e^{---\ theta t} + \ mu (1- e^{- \ theta t})]} {\ frac {\ sigma} {\ sqrt {2 \ theta}} \ sqrt {(1- e^{- 2 \ theta}t})}} \ right)^2 \ right \}, \ qquad \ forall x \ in \ mathbb {r}, t> 0. \ end {equação*} \]

Vamos dar uma olhada na função de densidade de\ (X_1 \)Para diferentes valores de\ (\ theta \), Assim,\ (\ em \), e\ (\ sigma \).

Primeiro consideramos o processoVasichka (teta = 1,0, em = 10,0, sigma = 0,5, inicial = 1.0)e plotar a densidade marginal de\ (X_1 \).Nota que a média ainda está longe da média de longo prazo\ (\ Mu = 10 \).

processo = Vila(Theta=1.0, Assim, Mu=10.0, Assim, Sigma=0,5, Assim, inicial=1.0)X_1 = processo.get_marginal(t=1)x = NP.Linspace(X_1.ppf(0,001), X_1.ppf(0,999), 100)plt.trama(x, Assim, X_1.pdf(x), '-', Assim, LW=1.5, Assim, alfa=0,75, Assim, rótulo=f'$ t $ ={1:.F}')plt.AXVLINE(x = X_1.significar(), cor='vermelho', Assim, rótulo='$ E [x_1] $')plt.título(f'$ X_1 $ pdf')plt.mostrar()

4. Modelo/Processo Vasicek - Compreendendo Finanças Quantitativas (2)

Em seguida, variamos o valor do parâmetro\ (\ theta \)(A velocidade da reversão)Vasicek (quea = thata, em = 10,0, sigma = 0,5, inicial = 1.0)E novamente plote as densidades de\ (X_1 \).Observe como o valor de\ (\ theta \)afeta a média e a variação da densidade.

Como\ (\ theta \)aumenta:

  • A expectativa deixa de estar perto do ponto inicial\ (x_0 = 1.0 \)estar perto da média de longo prazo\ (\ Mu = 10,0 \).

  • A variação diminui e a distribuição se concentra mais em torno da média.

Figo, Assim, AXS = plt.subparcelas(1, Assim, 3, Assim, figSize=(18, Assim, 6))teta_values = ( [[0.1, Assim, 0,2, Assim, 0,3], [[1, Assim, 2, Assim, 3], [[10, Assim, 20, Assim, 30]))para (lugar, Assim, machado) em fecho eclair(teta_values, Assim, AXS): para Theta em lugar: processo = Vila(Theta=Theta, Assim, Mu=10.0, Assim, Sigma=0,5, Assim, inicial=1.0) X_t = processo.get_marginal(t=1.0) x = NP.Linspace(0, Assim, X_t.ppf(0,999), 100) machado.trama(x, Assim, X_t.pdf(x), '-', Assim, LW=1.5, Assim, alfa=0,75, Assim, rótulo=f'$\\teta $ ={Theta:.F}') machado.lenda()Figo.suptitle(r'$ X_1 $ pdf de um processo Vasicek com $ \ mu = 10,0, \ sigma = 0,5 $ e $ x_0 $ = 1,0')plt.mostrar()

4. Modelo/Processo Vasicek - Compreendendo Finanças Quantitativas (3)

Em seguida, variamos o valor do parâmetro\ (\ em \)(a média de longo prazo) emVasichka (teta = 1,0, Madeira = madeira, sigma = 0,5, inicial = 1.0)E novamente plote as densidades correspondentes a\ (X_1 \).Observe como o valor de\ (\ em \)impacta apenas a média da densidade.Podemos ver que a média da densidade segue a direção do parâmetro\ (\ em \)o que é esperado, pois será convergir para ele quando\ (t \)vai para o infinito.

Figo, Assim, AXS = plt.subparcelas(1, Assim, 2, Assim, figSize=(18, Assim, 6))mu_values = ([ 0, Assim, -1, Assim, -2,], [[0, Assim, 1, Assim, 2]))para (mus, Assim, machado) em fecho eclair(mu_values, Assim, AXS): para Mu em mus: processo = Vila(Theta=1.0, Assim, Mu=Mu, Assim, Sigma=0,5, Assim, inicial=1.0) X_t = processo.get_marginal(t=1.0) x = NP.Linspace(X_t.ppf(0,001), X_t.ppf(0,999), 100) machado.trama(x, Assim, X_t.pdf(x), '-', Assim, LW=1.5, Assim, alfa=0,75, Assim, rótulo=f'$ \ em $ ={Mu:.F}') machado.lenda()Figo.suptitle(r'$ X_1 $ pdf de um processo Vasicek com $ \ theta = 1,0, \ sigma = 0,5 $ e $ x_0 $ = 1,0')plt.mostrar()

4. Modelo/Processo Vasicek - Compreendendo Finanças Quantitativas (4)

Em seguida, variamos o valor do parâmetro\ (\ sigma \)(a volatilidade) emVasichka (teta = 1,0, em = 10,0, sigma = sigma, inicial = 1.0)E novamente plote as densidades de\ (X_1 \).Observe que o valor de\ (\ sigma \)impacta apenas a variação da densidade, enquanto a média permanece constante.Como\ (\ sigma \)aumenta a variação de\ (X_1 \)aumenta e a distribuição se torna mais ampla.Podemos ver isso olhando para o alcance no eixo x das parcelas.

Figo, Assim, AXS = plt.subparcelas(1, Assim, 3, Assim, figSize=(18, Assim, 6))sigma_values = ([0,01, Assim, 0,02, Assim, 0,05], [[0.1, Assim, 0,2, Assim, 0,5], [[1, Assim, 2, Assim, 3]))para (sigmate, Assim, machado) em fecho eclair(sigma_values, Assim, AXS): para Sigma em sigmate: processo = Vila(Theta=1.0, Assim, Mu=10.0, Assim, Sigma=Sigma, Assim, inicial=1.0) X_t = processo.get_marginal(t=1.0) x = NP.Linspace(X_t.ppf(0,001), X_t.ppf(0,999), 100) machado.trama(x, Assim, X_t.pdf(x), '-', Assim, LW=1.5, Assim, alfa=0,75, Assim, rótulo=f'$ \ sigma $ ={Sigma:.F}') machado.lenda()Figo.suptitle(r'$ X_1 $ pdf de um processo Vasicek com $ \ theta = 1,0, \ mu = 10,0 $ e $ x_0 $ = 1,0')plt.mostrar()

4. Modelo/Processo Vasicek - Compreendendo Finanças Quantitativas (5)

Finalmente, manteremos todos os parâmetros fixos emVasichka (teta = 1,0, em = 10,0, sigma = 0,5, inicial = 1.0)E agora plote as densidades de\ (X_t \)para vários valores de\ (t \).Observe como variável\ (t \)afetaria a média e a variação da densidade.

Como\ (t \)aumenta:

  • A expectativa deixa de estar perto do ponto inicial\ (x_0 = 1.0 \)estar perto da média de longo prazo\ (\ Mu = 10,0 \).

  • A variação também aumenta, mas observe que parece se estabilizar.Podemos ver isso especialmente no terceiro gráfico.

processo = Vila(Theta=1.0, Assim, Mu=10.0, Assim, Sigma=0,5, Assim, inicial=1.0)Figo, Assim, AXS = plt.subparcelas(1, Assim, 3, Assim, figSize=(18, Assim, 6))T_Values = ([0.1, Assim, 0,2, Assim, 0,3, Assim, 0,5], [[1, Assim, 2, Assim, 3], [[10, Assim, 20]))para (ts, Assim, machado) em fecho eclair(T_Values, Assim, AXS): para t em ts: X_t = processo.get_marginal(t=t) x = NP.Linspace(X_t.ppf(0,001), X_t.ppf(0,995), 100) machado.trama(x, Assim, X_t.pdf(x), '-', Assim, LW=1.5, Assim, alfa=0,75, Assim, rótulo=f'$ t $ ={t:.F}') machado.lenda()Figo.suptitle(r'$ X_t $ pdf de um processo Vasicek com $ \ theta = 1,0, \ mu = 10,0, \ sigma = 0,5 $ e $ x_0 $ = 1,0')plt.mostrar()

4. Modelo/Processo Vasicek - Compreendendo Finanças Quantitativas (6)

4.2.6.Amostragem#

Agora, vamos ver como obter uma amostra aleatória de\ (X_t \)para qualquer\ (t> 0 \).

A próxima célula mostra como obter uma amostra do tamanho 5 de\ (X_1 \).

# de Aleatory.processos Importar Vasicekprocesso = Vila(Theta=1.0, Assim, Mu=10.0, Assim, Sigma=0,5, Assim, inicial=1.0)X_1= processo.get_marginal(t=1.0)X_1.RVs(tamanho=5)
Array ([6.92652129, 6.39524409, 6.73077842, 6.65327447, 7.12773049])

Da mesma forma, podemos obter uma amostra de\ (X_ {10} \)

X_10 = processo.get_marginal(t=10)X_10.RVs(tamanho=5)
Array ([10.06590198, 9.56805405, 10.15120991, 9.44203325, 10.15908188])

4.3.Simulação#

Para simular caminhos de um processo estocástico, precisamos definir uma partição discreta em um intervalo para a simulação ocorrer.

Para simplificar, vamos considerar uma partição equidistante de tamanho\ (n \)sobre\ ([0, t] \), Ou seja:

am

Então, o objetivo é simular um caminho da forma\ (\ {X_ {t_i}, i = 0, \ cdots, n-1 \} \).Usaremos a aproximação de Euler-Maruyama.

4.3.1.Simulando e visualizando caminhos#

Podemos simular vários caminhos de um processo de Vasicek e visualizá -los, podemos usar o métodotramadeAleatorybiblioteca.

Vamos simular 10 caminhos ao longo do intervalo\ ([0,1] \)usando uma partição de 100 pontos.

Dica

Lembre -se de que o número de pontos na partição é definido pelo parâmetro\ (n \), enquanto o número de caminhos é determinado por\ (N \).

# de Aleatory.processos Importar Vasicekprocesso = Vila(Theta=1.0, Assim, Mu=10.0, Assim, Sigma=0,5, Assim, inicial=2.0)Figo = processo.trama(n=100, Assim, N=10, Assim, título='10 caminhos do processo Vasicek ')

4. Modelo/Processo Vasicek - Compreendendo Finanças Quantitativas (7)

Observação

Em todas as parcelas, estamos usando uma interpolação linear para desenhar as linhas entre os pontos simulados.

Da mesma forma, podemos definir o processo ao longo do intervalo\ ([0, 5] \)e simular 50 caminhos com uma partição do tamanho 100.

# de Aleatory.processos Importar Vasicekprocesso = Vila(Theta=1.0, Assim, Mu=10.0, Assim, Sigma=0,5, Assim, inicial=1.0, Assim, T=5.0)Figo = processo.trama(n=200, Assim, N=100, Assim, título='100 caminhos do processo Vasicek')

4. Modelo/Processo Vasicek - Compreendendo Finanças Quantitativas (8)

4.4.Comportamento de longa data#

4.4.1.Expectativa e variação#

Observe que quando\ (t \)vai para o infinito, temos

\ [\ begin {equação*} \ lim_ {t \ rightarrowow \ inf} \ mathbf {e} [x_t] = \ lim_ {t \ rightarrow \ inf} \ esquerda [x_0e^{-\ theta t} + \ mU ( 1- e^{- \ theta t}) \ direita] = \ mu. \ Mu. \ Mu. \ Mu. \ Mu. \ Mu.

e

am {-2 \ theta t}) = \ frac {\ sigma^2} {2 \ theta}. \ End {equação*} \]

Em seguida, ilustramos a convergência da média e da variação de\ (X_t \)como\ (t \)cresce.Observe que a velocidade da convergência é determinada por\ (\ theta \).

def draw_mean_variance(x0, Assim, Theta, Assim, Mu, Assim, Sigma, Assim, T=100): processo = Vila(Theta=Theta, Assim, Mu=Mu, Assim, Sigma=Sigma, Assim, inicial=x0, Assim, T=T) ts = NP.Linspace(0, Assim, T, Assim, T) significa = processo.marginal_expectation(ts) variações = processo.marginal_variância(ts) Figo, Assim, (AX1, Assim, AX2,) = plt.subparcelas(1, Assim, 2, Assim, figSize=(9, Assim, 4)) AX1.trama(ts, Assim, significa, Assim, LW=1.5, Assim, cor='preto', Assim, rótulo='$ E [x_t] $') AX1.set_xlabel('t') AX1.lenda() AX2.trama(ts, Assim, variações, Assim, LW=1.5, Assim, cor='vermelho', Assim, rótulo='$ Var [x_t] $') AX2.set_xlabel('t') AX2.lenda() Figo.suptitle( 'Expectativa e variação de $ x_t $ com' f'$ x_0 $ ={x0:.F}, $\\teta $ ={Theta:.F}, $ \ em $ ={Mu:.F}, $ \ sigma $ ={Sigma:.F}', Assim, tamanho=12) plt.mostrar()
draw_mean_variance(Theta=1.0, Assim, Mu=10.0, Assim, Sigma=0,5, Assim, x0=1.0, Assim, T=10)

4. Modelo/Processo Vasicek - Compreendendo Finanças Quantitativas (9)

draw_mean_variance(Theta=0.1, Assim, Mu=10.0, Assim, Sigma=0,5, Assim, x0=-2.0, Assim, T=10)

4. Modelo/Processo Vasicek - Compreendendo Finanças Quantitativas (10)

4.4.2.Marginal#

A distribuição marginal\ (X_t \)Dado um ponto inicial\ (x_0 \), converge para

\ [\ begin {equação*} x _ {\ infty} \ sim \ mathcal {n} \ esquerda (\ mu, \ frac {\ sigma} {\ sqrt {2 \ theta}} \ right), \ end {equação*} \]

como\ (t \)vai para o infinito.Vamos fazer algumas simulações para ilustrar essa convergência.

Primeiro, simulamos 1000 caminhos deVasichka (teta = 1,0, em = 10,0, sigma = 2,0, inicial = 1,0, T = 1,0)sobre o intervalo\ ([0,1] \).Aqui, podemos ver a distribuição de\ (X_1 \)tem significado em torno de 6,0.Isso significa que o processo não atingiu a convergência, já que não chegamos ao meio a longo prazo\ (\ Mu = 10,0 \).

# de Aleatory.processos Importar Vasicekprocesso = Vila(Theta=1.0, Assim, Mu=10.0, Assim, Sigma=2.0, Assim, inicial=1.0, Assim, T=1.0)Figo = processo.empate(n=100, Assim, N=100, Assim, título='Processo de Vasicek antes de atingir a convergência para a distribuição assintótica')

4. Modelo/Processo Vasicek - Compreendendo Finanças Quantitativas (11)

Agora, simulamos 1000 caminhos do mesmo processoVasichka (teta = 1,0, em = 10,0, sigma = 2,0, inicial = 1,0, T = 15)Mas desta vez durante o intervalo\ ([0,15] \).Na foto, podemos ver a distribuição de\ (X_ {15} \)tem significa igual à média de longo prazo\ (\ Mu = 10 \).O processo atingiu a convergência!

# de Aleatory.processos Importar Vasicekprocesso = Vila(Theta=1.0, Assim, Mu=10.0, Assim, Sigma=2.0, Assim, inicial=1.0, Assim, T=15.0)Figo = processo.empate(n=100, Assim, N=100, Assim, título='Processo de Vasicek atingindo a convergência para a distribuição assintótica')

4. Modelo/Processo Vasicek - Compreendendo Finanças Quantitativas (12)

4.4.2.1.O parâmetro\ (\ theta \)determina a velocidade da convergência#

# de Aleatory.processos Importar Vasicekprocesso = Vila(Theta=5.0, Assim, Mu=10.0, Assim, Sigma=2.0, Assim, inicial=1.0, Assim, T=1.0)Figo = processo.empate(n=100, Assim, N=100, Assim, título='Processo de Vasicek rapidamente atingindo a convergência na distribuição assintótica')

4. Modelo/Processo Vasicek - Compreendendo Finanças Quantitativas (13)

processo = Vila(Theta=0.1, Assim, Mu=10.0, Assim, Sigma=2.0, Assim, inicial=1.0, Assim, T=50.0)processo.empate(n=100, Assim, N=100, Assim, título='Processo de Vasicek, atingindo lentamente a convergência para a distribuição assintótica')plt.mostrar()

4. Modelo/Processo Vasicek - Compreendendo Finanças Quantitativas (14)

4.4.2.2.O parâmetro\ (\ sigma \)determina a volatilidade na simulação#

# de Aleatory.processos Importar Vasicekprocesso = Vila(Theta=1.0, Assim, Mu=10.0, Assim, Sigma=0,5, Assim, inicial=1.0, Assim, T=1.0)Figo = processo.empate(n=100, Assim, N=100, Assim, título='Processo Vasicek com baixa volatilidade')

4. Modelo/Processo Vasicek - Compreendendo Finanças Quantitativas (15)

# de Aleatory.processos Importar Vasicekprocesso = Vila(Theta=1.0, Assim, Mu=10.0, Assim, Sigma=5.0, Assim, inicial=1.0, Assim, T=1.0)Figo =processo.empate(n=100, Assim, N=100, Assim, título='Processo Vasicek com alta volatilidade')

4. Modelo/Processo Vasicek - Compreendendo Finanças Quantitativas (16)

4.5.Visualização#

Para terminar esta nota, vamos dar uma olhada final em algumas simulações do processo Vasicek.

# de Aleatory.processos Importar Vasicekprocesso = Vila(Theta=0,5, Assim, Mu=10.0, Assim, Sigma=2.0, Assim, inicial=-1.0, Assim, T=20.0)Figo = processo.empate(n=200, Assim, N=200, Assim, envelope=Verdadeiro)

4. Modelo/Processo Vasicek - Compreendendo Finanças Quantitativas (17)

# de Aleatory.processos Importar Vasicekprocesso = Vila(Theta=0,5, Assim, Mu=-10.0, Assim, Sigma=2.0, Assim, inicial=1.0, Assim, T=20.0)Figo = processo.empate(n=200, Assim, N=200, Assim, envelope=Verdadeiro, Assim, Colormap="legal", Assim, título='Processo Vasicek')

4. Modelo/Processo Vasicek - Compreendendo Finanças Quantitativas (18)

# de Aleatory.processos Importar Vasicek# Importar matplotlib.pyplot como PLT# importar numpy como npprocesso = Vila(Theta=1.0, Assim, Mu=-10.0, Assim, Sigma=NP.sqrt(2), inicial=0,0, Assim, T=12.0)caminho = processo.simular(n=1000, Assim, N=1)ts = processo.vezesExp = processo.marginal_expectation(ts)plt.trama(ts, Assim, caminho[[0], rótulo= f'$ X_0 $ = 0, $ \ nós $ = -10')plt.trama(ts, Assim, Exp, Assim, cor='cinza', Assim,espessura da linha=2)para x0 em [[-10.0, Assim, 0,0, Assim, 10.0]: processo = Vila(Theta=1.0, Assim, Mu=0,0, Assim, Sigma=NP.sqrt(2), inicial=x0, Assim, T=12.0) caminho = processo.simular(n=1000, Assim, N=1) plt.trama(ts, Assim, caminho[[0], rótulo= f'$ x_0 $ ={x0:.0f}, $ \ em $ = 0 ') Exp = processo.marginal_expectation(ts) plt.trama(ts, Assim, Exp, Assim, cor='cinza', Assim, espessura da linha=2)plt.trama(ts, Assim, Exp, Assim, cor='cinza', Assim, rótulo=f'$ E [x_t] $')plt.lenda()plt.título('Quatro caminhos do modelo Vasicek\ n$ dx_t =\\theta (\ mu - x_t) dt + \ sigma dw_t $\ ncom $\\teta = 1, \ sigma = \ sqrt{2}$ ')plt.mostrar()

4. Modelo/Processo Vasicek - Compreendendo Finanças Quantitativas (19)

4.6.Referências e leitura adicional#

  • Damiano Brigo, Fabio Mercurio (2001).Modelos de taxa de juros - teoria e prática com sorriso, inflação e crédito

  • Vasicek, O. (1977)."Uma caracterização de equilíbrio da estrutura do termo".Journal of Financial Economics.

4. Modelo/Processo Vasicek - Compreendendo Finanças Quantitativas (2024)

References

Top Articles
Latest Posts
Article information

Author: Cheryll Lueilwitz

Last Updated:

Views: 5413

Rating: 4.3 / 5 (54 voted)

Reviews: 93% of readers found this page helpful

Author information

Name: Cheryll Lueilwitz

Birthday: 1997-12-23

Address: 4653 O'Kon Hill, Lake Juanstad, AR 65469

Phone: +494124489301

Job: Marketing Representative

Hobby: Reading, Ice skating, Foraging, BASE jumping, Hiking, Skateboarding, Kayaking

Introduction: My name is Cheryll Lueilwitz, I am a sparkling, clean, super, lucky, joyous, outstanding, lucky person who loves writing and wants to share my knowledge and understanding with you.