Forecasting e Otimização i de Carteiras com Matlab AULA 3
Guia de Estudo para Aula 03 Modelos Discretos Exercícios - Formulação de um modelo - Programação de modelos com for - A simulação de um modelo - Formas de apresentação do modelo - Simulação de modelos discretos Objetivos da Aula - Aprender function - Simular modelos discretos - uso de variáveis globais. - uso de modelos estocásticos. 2
Criar e salvar um programa em Matlab onde está a função. Programar o algoritmo principal do problema. Ligar o principal com a function usando type function Programa Principal 3
Function nome_da_function (parâmentro1,...,parâmetron) nome_da_function=...calculo da função... 4
A function do problema Nome no início obrigatório Nome da função e parâmetros de entrada Mesmo nome da função 5
Programa Principal Indicação do lin do programa com a function f Chamada da função para o cálculo 6
O que é uma Simulação? Em sistemas Dinâmicos é a resolução de dx dt x ( t ) = f (, t x) = x 0 0 7
A Diferenciabilidade e a Previsão de Eventos Futuros x PONTO DE TANGÊNCIA x dx dt TEMPO (t) 8
Sistemas Discretos Aproxima-se um sistema contínuo dx = f (, t x) dt x( t ) = x 0 0 Pelo sistema discreto dx dt = t 0 Lim x t = f (t, x) x = t f (t, x) x t + 1 x t + 1 = f (t, x ) Supondo tempo discreto de 1 unidade x + 1 x f (t, x ) x + 1 = x + f (t, x ) = 9
Problema Exemplo Simular o seguinte modelo no Matlab (usando function) x + 1 = x 0.1x 2 Com as condições iniciais: t(0) = 0 x(0) () = 1 tempo final = 15 10
A function do problema Modelo entra aqui na function 11
Programa Principal Chamada da function 12
Resultado da simulação 13
Método de Newton-Raphson Determina as raízes de um polinômio da seguinte forma: x + 1 = x f f ( x '( x ) ) Onde f() é o polinômio e f () a derivada. 14
Problema 2 Encontrar as raízes do polinômio abaixo no Matlab (usando function), pelo método de Newton: 2 f ( x ) = x 5 x + 6 15
Algoritmo 1- ht chutar a semente x 0. 2-chamar a function da função f(x). 3-chamar a function da derivada d f (x). 4- calcular lar o novo o x +1. 5- calcular a diferença entre o novo x eantigox +1. 6- fazer o antigo x igual ao novo. 16
Arquivo ff.m f ( x ) 2 = x 5x + 6 Arquivo ffl.m f ' ( x ) = 2x 5 17
Programa Principal Chute inicial 18
Com x0 = 0... Com x0 = 10... 19
Função do Matlab fsolve() Encontra as raízes de um polinômio pelo método de Newton. A sintaxe é: O símbolo @ chama a function ff.m Chute inicial 20
Dois chutes diferentes x(0) = 0 x(0) = 10 21
Problema 3 Simular o seguinte modelo no Matlab (usando function) x + 1 = 5sen(0.1x ) e 0.001 x Com as condições iniciais: t(0) = 0 x(0) () = 1 tempo final = 15 22
A function do problema 23
Programa Principal 24
Resultado da simulação 25
Simulando Modelos de ordem superiores Modelo x y + 1 + 1 = 1.875 + 0.25x = 10 2x + 0.5y x(0) = 2.5 y(0) = 15 + 0.375y 26
A function do sistema É vetor de variáveis do modelo 27
Programa Principal Comando para gerar nova janela de figura 28
Subplot(211) Subplot(212) Figure 2 29
Problema 4 x + 1 = 0.4x y + 1 = 0.4x x(0) = 2.5 y(0) = 15 0.5y 30
A function do sistema 31
Resultado da simulação 32
A estocasticidade entra em cena O matlab possui geradores de números aleatórios conforme a distribuição de probabilidade desejada. Distribuição i i Uniforme : rand Distribuição Gaussiana : randn Faz-se necessário antes a busca de uma semente para geração de números aleatórios. Antes do uso das funções, gera-se a semente da seguinte forma: Uniforme: rand( seed, d sum(100*cloc)) Gaussiana: randn( seed, sum(100*cloc)) 33
Processos Estocásticos Sinal no tempo Estatística tí ti (variável aleatória) 34
Busca da semente 35
A incerteza no modelo x y + 1 + 1 = 0.4x + w = 0.4x 0.5y x(0) = 2.5 y(0) = 15 Onde w ~N(0,0.4 2 ) Incerteza! 36
A function modificada Desvio-padrão dã Ruído branco gaussiano 37
O resultado 38
Variáveis Globais São Variáveis cujo valores são recebidos no programa principal, mas reconhecidos pelas subrotinas ou functions chamadas durante a execução. Comando é Global nome da variável 39
Um Modelo de terremoto para o mercado financeiro y(t) = A + B ( t t) c α + B C ( t c t ) ( t t) c α cos ( ω ln( t t) + φ) c Exemplo A = 20000; B = -6; C = 19; α = 1.33; ω = 20; φ = 5.9 t c =242 c 40
41
Usando Matlab Variáveis globais 42
Na Function As variáveis também são indicadas aqui 43
A realidade do Crash na Bovespa 25000 20000 15000 10000 5000 0 0 100 200 300 400 Dados reais da Bovespa- Ago/99 a Jun/00 Simulado 44
Caminho aleatório sem drift x = x + ε + 1 + 1 µ = 0 σ = desvio da série tamanho da série 45
Série histórica ( opções) PetrB28 Jan/2009 1.3 12 1.2 1.1 1 0.9 0.8 FUTURO U?????? 0.7 0.6 0 500 1000 1500 2000 2500 46
Intervalo de Confiança Lim sup( x 1 ) = estimativa + z. σ. + 1 Limsup( x + 1 ) = estimativa z. σ. z : indica o nível de confiança da distribuição normal z = 1 -- 69% de confiança z = 1,96 -- 95% de confiança z = 3 -- 99% de confiança 47
Forecasting 2.5 2 1.5 1 05 0.5 95% 68% 0-0.5 0 500 1000 1500 2000 2500 3000 48
Forecasting 1.6 1.4 1.2 1 0.8 0.6 Banda de confiança 0.4 para um desvio padrão (68% de confiança) 0.2 0 0 500 1000 1500 2000 2500 3000 49
Forecasting 1.05 1 0.95 0.9 Banda de confiança para 1.96 desvio padrão (95% de confiança) 0.85 08 0.8 0.75 1900 2000 2100 2200 2300 2400 2500 2600 2700 2800 2900 50
Comparação com valor real (verde) Deterioração da previsão 1.1 1.05 1 0.95 Banda de confiança para 3 desvio padrão (99% de confiança) 0.9 0.85 0.8 075 0.75 0.7 2000 2100 2200 2300 2400 2500 2600 2700 2800 2900 Tempo (minutos) 51
O Programa modelo superior inferior 52
Caminho aleatório com drift x = α + x + ε + 1 + 1 µ = α σ = desvio da série tamanho da série 53
O CASO BOVESPA REGIÃO DE INTERESSE 8 x 104 7 6 5 BOVESPA Supor α = 40 4 3 2 1 0 0 500 1000 1500 2000 2500 3000 54
Novo Intervalo de Confiança Lim sup( x 1) = x + z. σ. + 1) Limsup( x + 1 ) = x z. σ. Atenção: como existe drift ao invés da média (que é fixa), toma-se cada dado da iteração. 55
Cálculos errados do intervalo de confiança! 7 x 104 6 5 4 3 2 1 0 0 500 1000 1500 7 x 104 Feito pela média Limsup( x + 1 + z. σ. Lim sup( x 1 ) = xˆ z. σ. ) = xˆ + 1. 6 5 4 3 Escolhendo o último dado (fixo) existe uma tendência que o intervalo não acompanha. 2 Limsup( x + 1 ) = x( n) + z. σ. 1 0 0 500 1000 1500 Limsup( x + 1 ) = x( n) z. σ. 56
Intervalo de confiança iterativo É necessário o cálculo do valores máximos e mínimos para cada valor em cada simulação para a construção do intervalo. 9 x 104 8 =1 7 max(1),min(1) min(1) 6 5 4 3 2 1 0 0 500 1000 1500 57
Intervalo de confiança iterativo É necessário o cálculo do valores máximos e mínimos para cada valor em cada simulação para a construção do intervalo. 9 x 104 =2 max(2),min(2) 8 7 6 5 4 3 2 1 0 0 500 1000 1500 58
Intervalo de confiança iterativo É necessário o cálculo do valores máximos e mínimos para cada valor em cada simulação para a construção do intervalo. 9 x 104 =n max(n),min(n) 8 7 6 5 4 3 2 1 0 0 500 1000 1500 59
Borda dos Intervalos de confiança Após 20 iterações, a borda será: 4 9 x 104 8 7 6 5 4 3 2 1 0 0 500 1000 1500 60
Comparação com dados reais (bovespa) 8 x 104 7 6 INTERVALO DE CONFIANÇA DE 99% DADOS REAIS 5 4 3 2 1 0 0 500 1000 1500 61
O PROGRAMA 62
63