суббота, 16 июня 2018 г.

Estratégia de reversão média matlab


MatlabTrading.


Blog para MATLAB & # 174; usuários interessados ​​em estratégias de negociação algorítmica, backtesting, pares de negociação, arbitragem estatística etc.


Terça-feira, 1 de janeiro de 2013.


Reversão média intradiária.


As regras são simples e semelhantes à estratégia que testei no último post:


Se o retorno da barra do par exceder 1 na pontuação z, troque a próxima barra.


O resultado parece muito bonito:


Se você acha que este gráfico é bom demais para ser verdade, infelizmente é realmente o caso. Nenhum custo de transação ou spread bid-ask foi considerado. Na verdade, duvido que restaria algum lucro depois de subtrair todos os custos de negociação.


Ainda assim, esse tipo de gráfico é a cenoura pendurada na frente do meu nariz, me fazendo continuar.


6 comentários:


Seria interessante ver o mesmo teste feito em dados horários - isso também poderia ser resistente a custos de transação, Jozef.


30 seg. - esta resolução é pequena, pois você demora com a rejeição Bid-Ask, os dados não sincronizados e todos os outros ruídos do micromarket. Uma maneira mais razoável seria de diário a horário em um primeiro passo.


De acordo com Epps Effect, sabe-se que os pares têm baixa correlação se o prazo for curto (pequeno). Eu acho que seu resultado é baseado em algum tipo de ambiente caótico como o uso de um cronograma de tempo muito curto, que tem tantas reversões. Na verdade eu tenho o bom resultado quieto que faz lucro com inclusão de custo de negociação no mercado de câmbio. O teste foi realizado com dados de 1 hora e a estratégia baseia-se na distribuição neutra do mercado.


Olá, Hyojun Moon,


É difícil explicar com texto. Talvez você possa procurar arbitragem estatística com base na dissertação de propagação de média de spread ou alternativa.


você pode fazer uma distribuição neutra do mercado selecionando pares como gbpusd e eurusd. Eles são altamente correlacionados (ainda liitle bit cointegrated) em ponto fundamental ou ponto estatístico. pode ser bom escolher não pares correlacionados muito altos, como index etf-index, mas altamente correlacionados ao comércio seguro e cointegrado, o que significa que os pares estão vibrando entre a linha de tendência linear. Você pode precisar de negociação de margem forex, pois precisa de alavancagem para obter lucro real.


MatlabTrading.


Blog para MATLAB & # 174; usuários interessados ​​em estratégias de negociação algorítmica, backtesting, pares de negociação, arbitragem estatística etc.


Quarta-feira, 7 de dezembro de 2016.


Teste e Análise de Estratégias de Negociação Algorítmica no MATLAB (Parte 4) & # 8211; Algorítmos genéticos.


Otimização de Algoritmos Genéticos.


Apesar do fato de que o princípio do algoritmo genético (evolucionário) é muito bem explicado nos webinars do MathWorks, nos exemplos, no entanto, ele é usado apenas para otimização da escolha de um grupo de estratégia de um conjunto. Este é um bom exemplo do uso desses algoritmos, no entanto, acontece que há uma necessidade de definir muitas variáveis ​​com intervalos significativos para uma estratégia, você não consegue com uma iteração e a paralelização de processos & # 8211; cálculos podem levar vários dias. Certamente, existem estratégias no estágio final de otimização, quando quase certamente sabemos que a estratégia de negociação é bem-sucedida, podemos esperar vários dias ou alugar todo o cluster - o resultado pode valer a pena. No entanto, se precisamos "estimar" os resultados de uma estratégia "volumosa" e decidir se vale a pena gastar o tempo, então os algoritmos genéticos podem ser perfeitamente adequados.


Método linear & # 8211; é um modo usual de ordenação no qual você verá todos os resultados intermediários (sub-ótimos). Dá máxima precisão. Método paralelo & # 8211; todos os kernels da sua CPU serão usados. Não permite ver resultados intermediários, mas acelera significativamente a operação. Dá máxima precisão durante o aumento da velocidade de cálculo. Método genético & # 8211; ele usa o algoritmo de otimização evolutiva. Permite ver valores sub-ótimos, mas dá o resultado próximo ao melhor. Não é um método muito preciso, mas é preciso o suficiente para a "execução" inicial da estratégia. Muito rápido.


Segunda-feira, 5 de dezembro de 2016.


Teste e Análise de Estratégias de Negociação Algorítmica no MATLAB (Parte 3) & # 8211; Visualização do Processo.


Visualização do processo de teste.


Em minha experiência de trabalho, muitas vezes analisei outras plataformas populares para testes de estratégia de negociação, como TradeStation, MetaStock, Multicharts etc. e sempre fiquei surpreso com a pouca atenção dada à visualização do processo de teste. O problema é que, quando não vemos os resultados dos valores intermediários e sub-ótimos dos parâmetros otimizados, muitas vezes jogamos fora o ouro junto com a sujeira. A questão é por causa de uma amostragem excessivamente ampla, a estratégia ajusta os parâmetros da maneira como vemos uma "estratégia perfeita" que falha na vida real ou vê uma ou duas transações, que são supostamente as melhores porque foram selecionadas essas informações de intervalo de tempo onde a melhor estratégia de negociação seria comprar e manter, mas por que outras estratégias são necessárias?


E se houver mais de 4 dimensões? Quando você vê quais sinais e em que frequência eles aparecem na faixa de preço, você tem quase toda a representação visual necessária da sua estratégia: a frequência das transações, sua lucratividade (curva de renda), a precisão da abertura, a semelhança com outras valores sub-ótimos, etc .; isso não pode ser dito sobre o desempenho no espaço N-dimensional, onde todas as informações úteis são, de fato, que o valor ótimo não é apenas um, mas há toda uma gama de valores sub-ótimos em uma ou mais áreas.


Enquanto otimiza uma estratégia no WFAToolbox & # 8211; Walk-Forward Analysis Toolbox para MATLAB & # 174 ;, como um novo valor ótimo é encontrado, os sinais da estratégia de negociação no período in-sample e out-of-sample aparecem imediatamente no gráfico, para que você possa sempre controlar qual faixa de opções você deve atribuir, e também pode pausar a otimização sem esperar pelo fim do teste, pois fica claro que algo deu errado ou está tudo bem.


Quarta-feira, 30 de novembro de 2016.


Teste e Análise de Estratégias de Negociação Algorítmica no MATLAB (Parte 2) & # 8211; GUI fácil de usar.


GUI fácil de usar.


Vamos começar com o fato de que não há interface gráfica porque se presumimos que quase todo o processo de teste e análise de estratégias de negociação é padronizado (é 99%), você gostaria de ter a interface que ajuda a chamar os dados necessários. e inicie o processo de teste com um clique.


Para usuários novos (e não apenas) do MATLAB, é muito mais conveniente usar uma GUI com botões e campos de entrada do que pesquisar no código; Portanto, há uma GUI, mesmo nas caixas de ferramentas MathWorks, na maioria dos casos, porque é mais conveniente. Ele permite focar apenas no código da sua estratégia, porque o uso de uma GUI não implica, de forma alguma, que ela limita de alguma forma sua capacidade de escrever uma estratégia.


Assim, no WFAToolbox, criamos a possibilidade de escrever qualquer código para sua estratégia, usando qualquer uma das caixas de ferramentas do MATLAB e trabalhando com múltiplos ativos para as estratégias como negociação de pares, negociação de cestas ou arbitragem tripla, etc .; mas, ao mesmo tempo, esse código é facilmente integrado à GUI por meio de padrões, que são simples o suficiente para serem aplicados no código e não limitam as oportunidades.


Terça-feira, 29 de novembro de 2016.


Teste e Análise de Estratégias de Negociação Algorítmica no MATLAB (Parte 1) - Introdução.


Como tudo começou.


Foi em 2008 (se não me engano) quando o primeiro webinar sobre negociação algorítmica no MATLAB com Ali Kazaam foi lançado, abordando o tópico de otimização de estratégias simples baseadas em indicadores técnicos, etc. apesar de um caótico & # 8220; 8221; código, ferramentas eram interessantes o suficiente para usar. Eles serviram como ponto de partida para pesquisa e aprimoramento de um modelo de teste e análise que permitiria usar todo o poder das caixas de ferramentas e a liberdade das ações do MATLAB durante a criação das próprias estratégias comerciais, ao mesmo tempo em que permitiria controlar o processo. de teste e os dados obtidos e sua análise posterior escolheria carteira eficaz de sistemas de negociação robustos.


Por que todo Algotrader deveria reinventar a roda?


No entanto, o Mathworks não ofereceu uma solução completa para testes e análises das estratégias & # 8211; Esses códigos que você poderia obter dos webinars eram os únicos "elementos" de um teste completo do sistema, e era necessário modificá-los, personalizá-los e adicioná-los à GUI para facilitar o uso. Foi muito demorado, colocando-se uma questão: seja qual for a estratégia, ela deve passar pelo mesmo processo de teste e análise, o que permitiria classificá-la como estável e utilizável & # 8211; então, por que todo algotrader deveria reinventar a roda e escrever seu próprio código para estratégias de teste adequadas no MATLAB?


Negociação Quantitativa.


Investimento quantitativo e idéias de negociação, pesquisa e análise.


Quinta-feira, 07 de abril de 2016.


Reversão média, momentum e estrutura de termo de volatilidade.


onde Var significa tomar a variância ao longo de muitos tempos de amostra. Se os preços realmente seguem um passeio aleatório geométrico, então Var (τ) & # 8801; Var ((z (t) - z (t-τ)) & # 8733; τ, e a volatilidade simplesmente escalona com a raiz quadrada de o intervalo de amostragem É por isso que, se medirmos os retornos diários, precisamos multiplicar a volatilidade diária por 252 para obter a volatilidade anualizada.


Os comerciantes também sabem que os preços não seguem realmente um passeio aleatório geométrico. Se os preços estiverem revertendo, descobriremos que eles não se afastam de seu valor inicial tão rápido quanto um passeio aleatório. Se os preços estão tendendo, eles se afastam mais rápido. Em geral, podemos escrever.


onde H é chamado de "expoente de Hurst", e é igual a 0,5 para uma caminhada aleatória geométrica verdadeira, mas será menor que 0,5 para preços de reversão médios e maior que 0,5 para preços de tendências.


Se anualizarmos a volatilidade de uma série de preços com reversão à média, ela acabará tendo uma volatilidade anualizada menor do que a de um passeio aleatório geométrico, mesmo que ambos tenham exatamente a mesma volatilidade medida em, digamos, barras de 5 min. O oposto é verdadeiro para uma série de preços de tendências. Por exemplo, se tentarmos isso no AUDCAD, uma série temporal obviamente com reversão da média, obteremos H = 0,43.


Todos os itens acima são bem conhecidos por muitos traders e, de fato, são discutidos em meu livro. Mas o que é mais interessante é que o próprio expoente de Hurst pode mudar em alguma escala de tempo, e essa mudança às vezes sinaliza uma mudança de uma reversão à média para um regime de momentum, ou vice-versa. Para ver isso, vamos plotar a volatilidade (ou, mais convenientemente, a variância) como uma função de τ. Isso é freqüentemente chamado de estrutura de prazo da volatilidade (realizada).


Comece com o familiar SPY. podemos calcular os retornos intraday usando midprices de 1 minuto a 2 ^ 10 minutos (


17 horas) e plotar o log (Var (τ)) contra log (τ). O ajuste, mostrado abaixo, é excelente. (Clique na figura para ampliar). A inclinação, dividida por 2, é o expoente de Hurst, que é 0.494 & # 177; 0.003, que é muito ligeiramente reversível.


Podemos fazer a mesma análise para USO (o ETF de futuros de petróleo bruto WTI). O intradiário H é 0,515 & # 177; 0,001, indicando comportamento de tendência significativa. O H diário é de 0,56 & # 177; 0,02, tendência ainda mais significativa. Portanto, estratégias de impulso devem funcionar para futuros de petróleo bruto em qualquer escala de tempo razoável.


Nick no mintegration. eu discute as novas bases de dados intraday em Quandl e Kerf. Factorwave (criação de Euan Sinclair) iniciou um novo fórum: slack. factorwave. Tem algumas discussões muito ativas e aprofundadas de muitos tópicos de negociação e investimento. O prof. Matthew Lyle da Kellogg School of Management publicou um novo paper que relaciona os fundamentos aos prêmios de risco de variância: papers. ssrn / sol3 / papers. cfm? Abstract_id = 2696183.


20 a 21 de abril: Estratégias de reversão à média.


95 comentários:


Como você calculou as 10 horas = 1 dia, simplesmente ajustando o ponto de 1 dia no seu ajuste linear, resolvendo para colocá-lo na linha? Não existe um risco em que se limpe a tendência significativa durante a noite / reversão à média dessa maneira? E, suponho, de forma mais geral, há alguma referência sobre como lidar com lacunas durante a noite ao tentar fazer negociações no período de três a cinco dias usando dados intraday?


Você só indica "variância ao longo de muitos tempos de amostra". Ou você quer manter isso em segredo? :)


Obrigado, agora faz sentido.


Na verdade, eu quis dizer t = 2 * 14/10/60 dias = 27 dias acima!


Nice artical novamente, mas eu tenho uma observação. O expoente de Hurst é diferente para os movimentos brownianos com diferentes distribuições. Você pode simular com Monte Carlo e testar.


Você está se referindo ao movimento browniano fracionário?


Refiro-me ao artigo desse cara mechanicalforex / 2016/03 / the-hurst-exponent-e-forex-trading-instruments. html.


Olá, Dr. Chan


Ou você usou o expoente de Hurst em pares ou resíduos cointegrados para filtrá-los ainda mais como "mais" reversão à média se mostrarem um H & lt; .5?


Não, a escala de tempo de transição não indica quanto tempo levaria uma série de preços para reverter a média. Para isso, você tem que usar a equação de Ornstein-Uhlenbeck.


Eu não recomendo o stop loss para a estratégia de reversão à média em geral, a menos que nunca seja esperado que ele seja acionado. Veja o último capítulo do meu segundo livro Algorithmic Trading.


Obrigado pela resposta, Dr.!


Eu também uso a equação OU para HL da negociação de pares de pares.


Esse é um bom ponto. Sim, você pode usar o tempo de transição como limite máximo para o período de espera.


Olá, ótimo blog que você tem lá, realmente. Eu aprendi muito com seus posts, então por favor, mantenha o bom trabalho! :)


Ótimo artigo! Informações muito úteis. Eu estava tentando reproduzir o enredo do SPY interday. Eu usei log diário de preço do SPY. Mas parece que recebo um resultado diferente. Por exemplo, o primeiro ponto de dados, 1 dia de defasagem, a variação de log que eu obtenho é -9,61, mas sua plotagem deve estar em torno de -8,9. Estou faltando alguma coisa? Obrigado.


Interessado também em ouvir a opinião de Ernie sobre isso.


Obrigado pelas suas amáveis ​​palavras.


Muitas técnicas de negociação podem ser consideradas Processamento Digital de Sinais. Por exemplo. Filtro de Kalman, wavelets, etc. Alguns deles são úteis, outros não. Então, é preciso ser específico sobre a técnica.


Não, eu não li John Ehlers.


Esses indicadores funcionam para você?


Desculpe, eu estava me referindo especificamente aos filtros de desvio alto / baixo e à FFT muito bem documentada.


Obrigado pelo link.


Muito obrigado pela sua resposta ... Eu estava usando os mesmos dados SPY do período de data. Desde que eu estava tentando fazer o enredo interday, então eu usei dados de preço diário SPY. Como você sugeriu, mudei para midprice. (Eu usei 0,5 * (alta + baixa)). Mas o expoente da hurst que eu tenho é apenas cerca de 0,387.


Midprice não significa o meio de alta e baixa. Isso significa que a metade do lance e pergunte no fechamento do mercado.


Por favor, sinta-se livre para me enviar e-mail para discutir isso.


Eu plotei a autorcorrelação dos retornos diários da USO e encontrei um pico estatisticamente significativo em um intervalo de 1 dia. No entanto, o valor é negativo indicando a reversão da média. Então testei duas estratégias simples para confirmar esse comportamento diário de RM e a diferença nas curvas de equidade confirma esse pequeno comportamento diário de RM. Não sei como conectar a autocorrelação de devoluções com o parâmetro Hurst e seus resultados.


Seu resultado é de fato contrário ao do expoente de Hurst.


No entanto, como um teste adicional, sugiro que você teste usando o preço médio do bid-ask no fechamento do mercado, não no fechamento consolidado.


Documentação.


Isso é tradução automática.


Para ver todos os materiais traduzidos, incluindo esta página, selecione País no navegador do país na parte inferior desta página.


De volta ao inglês.


Traduza esta página.


Tradução automática de MathWorks.


A tradução automatizada desta página é fornecida por uma ferramenta de tradução de terceiros para fins gerais.


A MathWorks não garante e se exime de qualquer responsabilidade pela precisão, adequação ou adequação ao propósito da tradução.


classe sdemrd.


SDE com modelo de deriva de reversão à média.


Descrição.


O construtor sdemrd cria e exibe objetos SDE cuja taxa de desvio é expressa no formato de taxa de desvio de média e que deriva da classe sdeddo (SDE de objetos de drift e difusão). Use objetos sdemrd para simular caminhos de amostra de variáveis ​​de estado de NVARS expressos em forma de taxa de desvio de média reversa e forneça uma alternativa paramétrica para a forma de desvio linear (consulte sdeld). Essas variáveis ​​de estado são determinadas por fontes de movimento Browniano de risco NBROWNS sobre períodos de observação consecutivos NPERIODS, aproximando processos estocásticos de tempo contínuo com funções de taxa de desvio de média reversível.


O objeto sdemrd permite simular qualquer SDE com valor de vetor do formulário:


d Xt = S (t) [L (t) & # x2212; Xt] dt + D (t, Xt & # x03B1; (t)) V (t) d Wt.


X t é um vetor de estado NVARS - by-1 de variáveis ​​de processo.


S é uma matriz de NVARS por NVARS de velocidades de reversão à média.


L é um vetor NVARS-by-1 de níveis médios de reversão.


D é uma matriz diagonal NVARS - by - NVARS, onde cada elemento ao longo da diagonal principal é o elemento correspondente do vetor de estado elevado à potência correspondente de α.


V é uma matriz de taxa de volatilidade instantânea NVARS-by-NBROWNS.


dW t é um vetor de movimento Browniano-por-1 Brown.


Construção.


SDE = sdemrd (Speed, Level, Alpha, Sigma) constrói um objeto sdemrd padrão.


SDE = sdemrd (Velocidade, Nível, Alfa, Sigma, Nome, Valor) constrói um objeto sdemrd com opções adicionais especificadas por um ou mais argumentos de par Nome, Valor.


Nome é um nome de propriedade e Valor é seu valor correspondente. O nome deve aparecer entre aspas simples (''). Você pode especificar vários argumentos de par nome-valor em qualquer ordem como Name1, Value1,…, NameN, ValueN.


Para obter mais informações sobre como construir um objeto sdemrd, consulte sdemrd.


Argumentos de entrada.


Especifique os parâmetros de entrada necessários como um dos seguintes tipos:


Um MATLAB & # x00AE; array. A especificação de um array indica uma especificação paramétrica estática (não variando no tempo). Esse array captura todos os detalhes da implementação, que são claramente associados a um formulário paramétrico.


Uma função MATLAB. A especificação de uma função fornece suporte indireto para praticamente qualquer modelo estático, dinâmico, linear ou não linear. Esse parâmetro é suportado por meio de uma interface, porque todos os detalhes da implementação são ocultos e totalmente encapsulados pela função.


Você pode especificar combinações de parâmetros de entrada de matriz e função conforme necessário.


Além disso, um parâmetro é identificado como uma função determinística do tempo se a função aceita um tempo escalar t como seu único argumento de entrada. Caso contrário, um parâmetro é assumido como uma função do tempo te do estado X (t) e é invocado com ambos os argumentos de entrada.


Velocidade & # 8212; A velocidade representa o parâmetro S.


matriz ou função determinística do tempo ou função determinista do tempo e do estado.


A velocidade representa o parâmetro S, especificado como uma matriz ou função determinística do tempo.


Se você especificar Velocidade como uma matriz, ela deverá ser uma matriz NVARS por NVARS de velocidades de reversão à média (a taxa na qual o vetor de estado reverte para seu nível médio de longo prazo).


Como uma função determinística do tempo, quando a velocidade é chamada com um tempo escalar de valor real t como sua única entrada, a velocidade deve produzir uma matriz NVARS - by - NVARS. Se você especificar Speed ​​como uma função de tempo e estado, calcula a velocidade de reversão à média. Esta função deve gerar uma matriz de taxas de reversão NVARS - by - NVARS quando chamada com duas entradas:


Um tempo de observação escalar de valor real t.


Tipos de dados: double | function_handle.


Nível & # 8212; Level representa o parâmetro L.


matriz ou função determinística do tempo ou função determinista do tempo e do estado.


Nível representa o parâmetro L, especificado como uma matriz ou função determinista do tempo.


Se você especificar Level como um array, ele deve ser um vetor de coluna NVARS - by-1 de níveis de reversão.


Como uma função determinística do tempo, quando Level é chamado com um tempo escalar de valor real t como sua única entrada, Level deve produzir um vetor de coluna NVARS - by-1. Se você especificar Level como uma função de tempo e estado, ele deve gerar um vetor de coluna de NVARS por 1 nível de reversão quando chamado com duas entradas:


Um tempo de observação escalar de valor real t.


Tipos de dados: double | function_handle.


Alfa & # 8212; Alpha representa o parâmetro D.


matriz ou função determinística do tempo ou função determinista do tempo e do estado.


Alfa representa o parâmetro D, especificado como uma matriz ou função determinista do tempo.


Se você especificar Alfa como uma matriz, ela representará um vetor de colunas NVARS - por - 1 de expoentes.


Como uma função determinística do tempo, quando Alpha é chamado com um tempo escalar de valor real t como sua única entrada, o Alpha deve produzir uma matriz NVARS - by-1.


Se você especificá-lo como uma função de tempo e estado, o Alpha deve retornar um vetor de coluna NVARS - by-1 de expoentes quando invocado com duas entradas:


Um tempo de observação escalar de valor real t.


Tipos de dados: double | function_handle.


Sigma & # 8212; Sigma representa o parâmetro V.


matriz ou função determinística do tempo ou função determinista do tempo e do estado.


Sigma representa o parâmetro V, especificado como uma matriz ou uma função determinística do tempo.


Se você especificar Sigma como um array, ele deve ser uma matriz NVARS-by-NBROWNS de taxas instantâneas de volatilidade ou como uma função determinística do tempo. Nesse caso, cada linha do Sigma corresponde a uma determinada variável de estado. Cada coluna corresponde a uma fonte de incerteza browniana específica e associa a magnitude da exposição de variáveis ​​de estado a fontes de incerteza.


Como uma função determinística do tempo, quando a Sigma é chamada com um tempo escalar de valor real t como sua única entrada, a Sigma deve produzir uma matriz NVARS-by-NBROWNS. Se você especificar Sigma como uma função de tempo e estado, ele deve retornar uma matriz NVARS por taxas de volatilidade quando chamada com duas entradas:


Um tempo de observação escalar de valor real t.


Tipos de dados: double | function_handle.


Argumentos par de nome-valor.


Especifique pares opcionais separados por vírgula de argumentos Nome, Valor. Nome é o nome do argumento e Valor é o valor correspondente. O nome deve aparecer entre aspas simples (''). Você pode especificar vários argumentos de par nome e valor em qualquer ordem como Name1, Value1. NameN, ValueN.


Para obter mais informações sobre como usar argumentos opcionais de valor de nome, consulte sdemrd.


Propriedades


Drift & # 8212; Componente da taxa de deriva de equações diferenciais estocásticas de tempo contínuo (SDEs)


valor armazenado a partir da função de taxa de desvio (predefinição) | objeto de desvio ou função acessível por (t, X t)


Componente de taxa de desvio de equações diferenciais estocásticas de tempo contínuo (SDEs), especificado como um objeto de desvio ou função acessível por (t, X t.


A especificação de taxa de desvio suporta a simulação de caminhos de amostra de variáveis ​​de estado do NVARS conduzidas por fontes de risco de movimento Browniano de NBROWNS sobre períodos de observação consecutivos de NPERIODS, aproximando processos estocásticos de tempo contínuo.


A classe drift permite que você crie objetos de taxa de drift (usando o construtor de drift) do formulário:


F (t, Xt) = A (t) + B (t) Xt.


A é uma função com valor de vetor NVARS - by-1 acessível usando a interface (t, Xt).


B é uma função de valor matricial NVARS - by - NVARS acessível usando a interface (t, X t).


Os parâmetros exibidos do objeto de desvio são:


Taxa: A função da taxa de desvio, F (t, X t)


A e B permitem que você consulte as entradas originais. A função armazenada em Rate encapsula totalmente o efeito combinado de A e B.


Quando especificado como matrizes duplas MATLAB, as entradas A e B estão claramente associadas a uma forma paramétrica de taxa de desvio linear. No entanto, especificar A ou B como uma função permite personalizar praticamente qualquer especificação de taxa de desvio.


Você pode expressar as classes de deriva e difusão na forma mais geral para enfatizar a interface funcional (t, X t). No entanto, você pode especificar os componentes A e B como funções que aderem à interface comum (t, X t) ou como matrizes MATLAB de dimensão apropriada.


Exemplo: F = desvio (0, 0.1)% Função da taxa de desvio F (t, X)


Difusão & # 8212; Componente de taxa de difusão de equações diferenciais estocásticas de tempo contínuo (SDEs)


valor armazenado a partir da função de taxa de difusão (predefinição) | objeto de difusão ou funções acessíveis por (t, X t)


Componente de taxa de difusão de equações diferenciais estocásticas de tempo contínuo (SDEs), especificado como um objeto de desvio ou função acessível por (t, X t.


A especificação de taxa de difusão suporta a simulação de caminhos de amostra de variáveis ​​de estado do NVARS conduzidas por fontes de risco de movimento Browniano de NBROWNS sobre períodos consecutivos de observação de NPERIODS, aproximando processos estocásticos de tempo contínuo.


A classe de difusão permite que você crie objetos de taxa de difusão (usando o construtor de difusão):


G (t, Xt) = D (t, Xt & # x03B1; (t)) V (t)


D é uma função de valor de matriz diagonal NVARS - by - NVARS.


Cada elemento diagonal de D é o elemento correspondente do vetor de estado elevado ao elemento correspondente de um expoente Alpha, que é uma função com valor de vetor NVARS - by-1.


V é uma função de taxa de volatilidade com valor matricial NVARS-by-NBROWNS Sigma.


Alpha e Sigma também são acessíveis usando a interface (t, X t).


Os parâmetros exibidos pelo objeto de difusão são:


Taxa: A função de taxa de difusão, G (t, X t).


Alfa: O expoente do vetor de estado, que determina o formato de D (t, Xt) de G (t, Xt).


Alfa e Sigma permitem que você consulte as entradas originais. (O efeito combinado dos parâmetros individuais Alpha e Sigma é totalmente encapsulado pela função armazenada em Rate.) As funções Rate são os mecanismos de cálculo para os objetos de drift e difusão, e são os únicos parâmetros necessários para a simulação.


Você pode expressar as classes de deriva e difusão na forma mais geral para enfatizar a interface funcional (t, X t). No entanto, você pode especificar os componentes A e B como funções que aderem à interface comum (t, X t) ou como matrizes MATLAB de dimensão apropriada.


Exemplo: G = difusão (1, 0,3)% Função da taxa de difusão G (t, X)


StartTime & # 8212; Hora de início da primeira observação, aplicada a todas as variáveis ​​de estado.


0 (padrão) | escalar.


Hora de início da primeira observação, aplicada a todas as variáveis ​​de estado, especificadas como escalares.


StartState & # 8212; Valores iniciais de variáveis ​​de estado.


1 (padrão) | escalar, vetor coluna ou matriz.


Valores iniciais de variáveis ​​de estado, especificados como escalar, vetor de coluna ou matriz.


Se StartState for um escalar, o construtor gbm aplicará o mesmo valor inicial a todas as variáveis ​​de estado em todas as tentativas.


Se StartState for um vetor de coluna, o construtor gbm aplicará um valor inicial exclusivo a cada variável de estado em todas as tentativas.


Se StartState for uma matriz, o construtor gbm aplicará um valor inicial exclusivo a cada variável de estado em cada tentativa.


Simulação & # 8212; Função de simulação definida pelo usuário ou método de simulação SDE.


se você não especificar um valor para Simulação, o método padrão é simulação por aproximação de Euler (simByEuler) (padrão) | função ou método de simulação SDE.


Função de simulação definida pelo usuário ou método de simulação SDE, especificado como uma função ou método de simulação SDE.


Tipos de dados: function_handle.


Métodos herdados.


Os seguintes métodos são herdados da classe sde.


Hierarquia de Instância.


A figura a seguir ilustra os relacionamentos de herança entre as classes SDE.


Copie a semântica.


Valor. Para saber como as classes de valor afetam as operações de cópia, consulte Copiando Objetos (MATLAB).


Crie um objeto sdemrd.


A classe sdemrd deriva diretamente da classe sdeddo. Ele fornece uma interface na qual a função de taxa de desvio é expressa em forma de desvio de média:.


Os objetos sdemrd fornecem uma alternativa paramétrica à forma de deriva linear reparando a deriva linear geral tal que:.


Crie um objeto sdemrd obj com um expoente de raiz quadrada para representar o modelo:.


Os objetos sdemrd exibem os familiares parâmetros Speed ​​e Level, em vez de A e B.


Algoritmos


Quando você especifica os parâmetros de entrada necessários como matrizes, eles são associados a um formulário paramétrico específico. Por outro lado, quando você especifica um parâmetro de entrada obrigatório como uma função, é possível personalizar praticamente qualquer especificação.


Acessar os parâmetros de saída sem entradas simplesmente retorna a especificação de entrada original. Assim, quando você invoca esses parâmetros sem entradas, eles se comportam como propriedades simples e permitem que você teste o tipo de dados (double vs. function, ou equivalentemente, static vs. dynamic) da especificação de entrada original. Isso é útil para validar e projetar métodos.


Quando você invoca esses parâmetros com entradas, eles se comportam como funções, dando a impressão de comportamento dinâmico. Os parâmetros aceitam o tempo de observação t e um vetor de estado X t e retornam uma matriz de dimensão apropriada. Mesmo se você especificou originalmente uma entrada como uma matriz, o sdemrd a trata como uma função estática de tempo e estado, garantindo assim que todos os parâmetros sejam acessíveis pela mesma interface.


Referências.


Ait-Sahalia, Y., “Testando Modelos Contínuos na Hora da Taxa de Juros”, The Review of Financial Studies, Primavera de 1996, vol. 9, No. 2, pp. 385 & # 8211; 426.


Ait-Sahalia, Y., “Densidades de transição para taxa de juros e outras difusões não lineares”, The Journal of Finance, vol. 54, n ° 4, agosto de 1999.


Glasserman, P., Monte Carlo Methods in Financial Engineering, Nova York: Springer-Verlag, 2004.


Hull, J. C., Opções, Futuros e Outros Derivativos, 5a ed. Englewood Cliffs, NJ: Prentice Hall, 2002.


Johnson, N. L., S. Kotz e N. Balakrishnan, Distribuições Univariadas Contínuas, vol. 2, 2 ed. Nova Iorque: John Wiley & amp; Sons, 1995.


Shreve, S. E., Cálculo Estocástico para Finanças II: Modelos Contínuos, Nova York: Springer-Verlag, 2004.


I. Estratégia de Negociação.


Desenvolvedor: Richard Wyckoff. Conceito: estratégia de negociação baseada em falsos fugas. Objetivo de Pesquisa: Sensibilidade ao risco-recompensa dos padrões de Wyckoff. Especificação: Tabela 1. Resultados: Figura 1, Figura 3. Configuração de Negociação: Negociações Longas: O preço se move abaixo de um intervalo de negociação e reverte de volta para o intervalo (& # 8220; Armadilha do Urso & # 8221;). Curtas Negociações: O preço move-se acima de um intervalo de negociação e volta para o intervalo (& # 8220; Bull Trap & # 8221 ;; Figura 2). Carteira: 42 mercados futuros de quatro principais setores do mercado (commodities, moedas, taxas de juros e índices de ações). Dados: 33 anos desde 1980. Plataforma de teste: MATLAB®.


II. Teste de sensibilidade.


Todos os gráficos 3-D são seguidos por gráficos de contorno 2D para Fator de Lucro, Índice de Desempenho da Úlcera, Índice de Desempenho da Úlcera, CAGR, Excedente Máximo, Percentual de Negociações com Lucros Lucros e Média. Vitória / Média Índice de Perda. A imagem final mostra a sensibilidade da curva de capital.


Variáveis ​​testadas: Reward_Index & amp; Risk_Index (Definições: Tabela 1):

Комментариев нет:

Отправить комментарий