Outros sites Medialivre
Caldeirão da Bolsa

Overfitting

Espaço dedicado a todo o tipo de troca de impressões sobre os mercados financeiros e ao que possa condicionar o desempenho dos mesmos.

por Automech » 18/10/2011 16:57

Supermann Escreveu:Tens vário software para isso inclusive para Excel onde tens módulos de instalaão mas a $$.

Supermann, tens algum que uses ou que recomendes, mesmo que seja a pagar ?

Supermann Escreveu:Manualmente podes fazer o seguinte no excel com dados aletórios e não derivados de retornos d emercado.

==RAND()*(-1-1)+1

Aplicas isto a uns milhares de celulas para gerar uma série.

E depois fazes um VBA de modo a recolher os dados de cada série e agregar os valores principais tipo retornos, std dev, etc.


Segundo percebo a formula dá um valor aleatório entre -100% e 100%. Mas isso depois repetido em milhares de células (resultando em milhares de valores aleatórios) vai comparar com o quê ?

Ou seja, não sei como é que comparo esses milhares com o output do sistema de MM50. Além disso, o sistema MM50 não dá sempre o mesmo número de sinais por ano (e se em vez de ser uma MM50 for uma MM200 dará naturalmente menos sinais e uma MM10 dará mais sinais).
No man is rich enough to buy back his past - Oscar Wilde
Avatar do Utilizador
 
Mensagens: 9360
Registado: 4/6/2010 12:12
Localização: 16

por Supermann » 18/10/2011 16:01

AutoMech Escreveu:Imaginemos que tenho um sistema super básico de cruzamento do preço com média móvel de 50 dias, em que estou longo se o preço estiver acima da MM e curto se o preço estiver abaixo.

Se ao longo de 10 anos esse sistema for rentável, como é que posso fazer a simulação de umas centenas ou milhares de negócios aleatórios (Montecarlo), de forma a comparar a performance do sistema com essas negócios aleatórios, de forma a aferir da robustez do sistema ?

Precisava de saber, nomeadamente, que software usar e que passos tenho que dar.

Obrigado


Tens vário software para isso inclusive para Excel onde tens módulos de instalaão mas a $$.

Manualmente podes fazer o seguinte no excel com dados aletórios e não derivados de retornos d emercado.

==RAND()*(-1-1)+1

Aplicas isto a uns milhares de celulas para gerar uma série.

E depois fazes um VBA de modo a recolher os dados de cada série e agregar os valores principais tipo retornos, std dev, etc.

Depois é so fazer "refreshes" para cada iteração.
 
Mensagens: 1750
Registado: 18/12/2009 18:54
Localização: 16

por Automech » 18/10/2011 14:52

Imaginemos que tenho um sistema super básico de cruzamento do preço com média móvel de 50 dias, em que estou longo se o preço estiver acima da MM e curto se o preço estiver abaixo.

Se ao longo de 10 anos esse sistema for rentável, como é que posso fazer a simulação de umas centenas ou milhares de negócios aleatórios (Montecarlo), de forma a comparar a performance do sistema com essas negócios aleatórios, de forma a aferir da robustez do sistema ?

Precisava de saber, nomeadamente, que software usar e que passos tenho que dar.

Obrigado
No man is rich enough to buy back his past - Oscar Wilde
Avatar do Utilizador
 
Mensagens: 9360
Registado: 4/6/2010 12:12
Localização: 16

por yabadoo » 3/1/2011 10:46

Pois, mesmo que não seja exactamente o mesmo do que eu estava a falar, pelo menos é parecido :)
"Pedras no caminho? Guardo todas, um dia vou construir um castelo..." (Fernando Pessoa)
 
Mensagens: 535
Registado: 5/3/2010 17:06
Localização: 16

por Zeb_PT » 3/1/2011 1:16

Output do Probacktest (apesar de ser um mau resultado :P), neste caso um simples cruzamento do MACD(n,m,p) e da sua média movel como triggers longos/curtos.

Penso que isto responda à questão do loop, apesar de a escolha de variaveis não ser obviamente aleatoria:


n
i=8
f=50
step=4

m
8
250
6

p
9
50
3
Anexos
exemplo.JPG
exemplo.JPG (67.04 KiB) Visualizado 1656 vezes
http://marketapprentice.wordpress.com

Para muito errar e muito mais aprender!

"who loses best will win in the end!" - Phantom of the Pits

Nota: As análises apresentadas constituem artigos de opinião do autor, não devendo ser entendidos como recomendações de compra e venda ou aconselhamento financeiro.
Avatar do Utilizador
 
Mensagens: 919
Registado: 9/3/2009 23:07
Localização: 16

por yabadoo » 2/1/2011 22:55

"Pedras no caminho? Guardo todas, um dia vou construir um castelo..." (Fernando Pessoa)
 
Mensagens: 535
Registado: 5/3/2010 17:06
Localização: 16

por yabadoo » 2/1/2011 22:44

Zeb_PT Escreveu:
Sim, não vais gerar cotadas aleatóriamente(embora o possas fazer, claro), vais é gerar sistemas com parametros diferentes e observar a saída.


Pelo que percebi é o que considero ser um simples backtesting, cria-se um sistema, atribui-se variaveis (Ni, Nf e step) e espera-se o output. Se assim for, não é mais do que o ProRealTime faz através do ProBackTest. Diz-me se compreendi bem :)

Quanto ao Monte Carlo Permutation tenho que investigar um bocado.


Não conheço bem o ProbackTest, mas se ele fizer isso variável a variável a resposta é não porque do que eu estou a falar é em cada corrida ser usado um conjunto diferente de valores N1,Nf e step escolhido de modo aleatorio.
Se estas a falar duma coisa tipo triplo loop de linguagem de programação, em que os valores para cada variavel são percorridos,então provavelmente sim, embora à medida que o número de variaveis aumenta, mais improvável é que a simulação chegue ao fim em tempo útil.
Nota também que podes querer que algumas das variáveis do teu sistema tenham distribuição não uniforme, caso em que um esquema tipo loop sem geração de número aleatório não funciona.
"Pedras no caminho? Guardo todas, um dia vou construir um castelo..." (Fernando Pessoa)
 
Mensagens: 535
Registado: 5/3/2010 17:06
Localização: 16

por Zeb_PT » 2/1/2011 22:13

Entretanto fica aqui o link para o livro que o yabadoo falou e que eu ainda não li mas vou tratar disso :)

http://www.4shared.com/get/YAF2vorK/The ... zatio.html
http://marketapprentice.wordpress.com

Para muito errar e muito mais aprender!

"who loses best will win in the end!" - Phantom of the Pits

Nota: As análises apresentadas constituem artigos de opinião do autor, não devendo ser entendidos como recomendações de compra e venda ou aconselhamento financeiro.
Avatar do Utilizador
 
Mensagens: 919
Registado: 9/3/2009 23:07
Localização: 16

por Zeb_PT » 2/1/2011 21:08

Sim, não vais gerar cotadas aleatóriamente(embora o possas fazer, claro), vais é gerar sistemas com parametros diferentes e observar a saída.


Pelo que percebi é o que considero ser um simples backtesting, cria-se um sistema, atribui-se variaveis (Ni, Nf e step) e espera-se o output. Se assim for, não é mais do que o ProRealTime faz através do ProBackTest. Diz-me se compreendi bem :)

Quanto ao Monte Carlo Permutation tenho que investigar um bocado.
http://marketapprentice.wordpress.com

Para muito errar e muito mais aprender!

"who loses best will win in the end!" - Phantom of the Pits

Nota: As análises apresentadas constituem artigos de opinião do autor, não devendo ser entendidos como recomendações de compra e venda ou aconselhamento financeiro.
Avatar do Utilizador
 
Mensagens: 919
Registado: 9/3/2009 23:07
Localização: 16

por yabadoo » 2/1/2011 17:48

Um exemplo de Monte Carlo Permutation aplicado aos resultados de um sistema de trading :
http://www.automated-trading-system.com/monte-carlo-permutation/

Isto provavelmente pode ser feito em Excel mas também certamente e mais fácilmente em R ou MatLab
"Pedras no caminho? Guardo todas, um dia vou construir um castelo..." (Fernando Pessoa)
 
Mensagens: 535
Registado: 5/3/2010 17:06
Localização: 16

por BlackEagle » 2/1/2011 17:28

Boa tarde, a minha questão é como vocês vão testar ou melhor onde?

Black
 
Mensagens: 234
Registado: 16/5/2009 10:36
Localização: 16

por yabadoo » 2/1/2011 16:55

Zeb_PT Escreveu:
Mas podes utilizar mc mesmo sem considerar que a evolução da cotada é aleatória, na minha opinião.
Não é à cotada que fazes a simulação de mc, é ao teu sistema.
A ideia é veres o sistema precisamente como um sistema físico,tal como descreveste atrás. Identifica os parametros nesse sistema que podes ou podem variar, aplica mc e vê como output do sistema se comporta. Na verdade vais gerar n vectores aleatórios de parametros e correr o teu sistema com cada um desses vectores, anotando de cada vez o resultado que te interessa. Podes usar varias cotadas mas é concebivel fazer isto usando uma única cotada.


Acabei por não perceber no final se dizes para simular o comportamento de uma cotada, se simplesmente testar o sistema em backtest, com o historial de uma (ou varias cotadas).

É que, a meu ver, existem tantos historiais de cotadas, que ao fim ao cabo ao selecionares uma aleatoriamente para testar o teu sistema acabará por ser até melhor que simular uma cotada, é mais real e suficientemente "aleatória",


Sim, não vais gerar cotadas aleatóriamente(embora o possas fazer, claro), vais é gerar sistemas com parametros diferentes e observar a saída.
Repara no entanto que, o Monte Carlo que o rsacramento provavelmente se está a referir, é, conforme referi anteriormente, o monte carlo permutation - pelo menos, tanto quanto me lembro, foi sobre esse método que conversei com ele.
Nota que isto não serve para optimizar um sistema,como pareçe ser o que procuras, mas para validá-lo
"Pedras no caminho? Guardo todas, um dia vou construir um castelo..." (Fernando Pessoa)
 
Mensagens: 535
Registado: 5/3/2010 17:06
Localização: 16

por Zeb_PT » 2/1/2011 15:43

Mas podes utilizar mc mesmo sem considerar que a evolução da cotada é aleatória, na minha opinião.
Não é à cotada que fazes a simulação de mc, é ao teu sistema.
A ideia é veres o sistema precisamente como um sistema físico,tal como descreveste atrás. Identifica os parametros nesse sistema que podes ou podem variar, aplica mc e vê como output do sistema se comporta. Na verdade vais gerar n vectores aleatórios de parametros e correr o teu sistema com cada um desses vectores, anotando de cada vez o resultado que te interessa. Podes usar varias cotadas mas é concebivel fazer isto usando uma única cotada.


Acabei por não perceber no final se dizes para simular o comportamento de uma cotada, se simplesmente testar o sistema em backtest, com o historial de uma (ou varias cotadas).

É que, a meu ver, existem tantos historiais de cotadas, que ao fim ao cabo ao selecionares uma aleatoriamente para testar o teu sistema acabará por ser até melhor que simular uma cotada, é mais real e suficientemente "aleatória",
http://marketapprentice.wordpress.com

Para muito errar e muito mais aprender!

"who loses best will win in the end!" - Phantom of the Pits

Nota: As análises apresentadas constituem artigos de opinião do autor, não devendo ser entendidos como recomendações de compra e venda ou aconselhamento financeiro.
Avatar do Utilizador
 
Mensagens: 919
Registado: 9/3/2009 23:07
Localização: 16

por yabadoo » 2/1/2011 9:48

Mais uma sugestão :wink:

Se calhar já conheces, caso contrário este livro provavelmente pode ajudar-te:

É um clássico do Robert Pardo
'The evaluation and optimization of trading strategies'
"Pedras no caminho? Guardo todas, um dia vou construir um castelo..." (Fernando Pessoa)
 
Mensagens: 535
Registado: 5/3/2010 17:06
Localização: 16

por yabadoo » 2/1/2011 9:06

Faltou-me dizer talvez o mais importante :
Para mim, mc não serve para optimizar ou prevenir o overfitting. Serve para ter uma percepção sobre o comportamento do sistema quando sujeito a várias condições e/ou fazer uma análise de sensibilidade.
"Pedras no caminho? Guardo todas, um dia vou construir um castelo..." (Fernando Pessoa)
 
Mensagens: 535
Registado: 5/3/2010 17:06
Localização: 16

por yabadoo » 2/1/2011 8:44

Zeb_PT Escreveu:O montecarlo que eu conheço envolve a utilização de variaveis aleatorias para testar um determinado sistema. Em física utiliza-se pois os sistemas são livres, por exemplo todas as particulas sofrem a força electromagnética, já em trading não considero q a evolução duma cotada seja aleatoria...

Mas podes utilizar mc mesmo sem considerar que a evolução da cotada é aleatória, na minha opinião.
Não é à cotada que fazes a simulação de mc, é ao teu sistema.
A ideia é veres o sistema precisamente como um sistema físico,tal como descreveste atrás. Identifica os parametros nesse sistema que podes ou podem variar, aplica mc e vê como output do sistema se comporta. Na verdade vais gerar n vectores aleatórios de parametros e correr o teu sistema com cada um desses vectores, anotando de cada vez o resultado que te interessa. Podes usar varias cotadas mas é concebivel fazer isto usando uma única cotada.
Já agora rsacramento, não sou especialista coisa nenhuma, apenas curioso :)
Os 95% de que falas são uma coisa diferente, são sobre métodos (por exemplo o permutation resampling) que podem ser usados para estimar sobre se existe ou não de causalidade (isto é perceber se os resultados que obtive podem ser explicado pelo acaso ou não) a partir dos valores de de uma amostra. Podes ver mais detalhe no livro 'Evidence based technical analysis' que aproveito para recomendar desde já !
"Pedras no caminho? Guardo todas, um dia vou construir um castelo..." (Fernando Pessoa)
 
Mensagens: 535
Registado: 5/3/2010 17:06
Localização: 16

por ToshB » 2/1/2011 4:31

Forward-testing é o melhor método que conheço. Faz optimização em 75% dos dados que tens (e escolhe parâmetros em que os parâmetros parecidos com esses tenham um resultado parecido, tal como dizes no artigo) e nos últimos 25% faz backtest com os parâmetros que escolheste da optimização. Esse backtest vai-te mostrar como seria a performance do sistema optimizado numa situação real. Se os resultados não forem suficientemente bons, escolhe outros parâmetros de optimização, e que sejam bastante diferentes desses que escolheste.
First rule of central banking: When the ship starts to sink, central bankers must bail like hell.
Avatar do Utilizador
 
Mensagens: 382
Registado: 1/8/2009 18:09
Localização: Setúbal

por Zeb_PT » 2/1/2011 3:39

O montecarlo que eu conheço envolve a utilização de variaveis aleatorias para testar um determinado sistema. Em física utiliza-se pois os sistemas são livres, por exemplo todas as particulas sofrem a força electromagnética, já em trading não considero q a evolução duma cotada seja aleatoria...
http://marketapprentice.wordpress.com

Para muito errar e muito mais aprender!

"who loses best will win in the end!" - Phantom of the Pits

Nota: As análises apresentadas constituem artigos de opinião do autor, não devendo ser entendidos como recomendações de compra e venda ou aconselhamento financeiro.
Avatar do Utilizador
 
Mensagens: 919
Registado: 9/3/2009 23:07
Localização: 16

por rsacramento » 2/1/2011 0:53

Zeb_PT Escreveu:Sacramento, conheço e já utilizei em física computacional o método de Monte Carlo mas sinceramente não vejo a utilidade especifica para o caso de sistemas de trading.

Podes desenvolver como aplicarias a metodologia?


o yabadoo é que é o especialista; mas a ideia que ele me deixou foi que o mc vai dizer-te se os resultados obtidos, numa prob de 95%, são ou não fruto do acaso

de certa maneira é isso que queres: saber se a afinação foi excessiva
menos é mais
Avatar do Utilizador
 
Mensagens: 10503
Registado: 29/11/2007 12:50

por Zeb_PT » 1/1/2011 23:24

Sacramento, conheço e já utilizei em física computacional o método de Monte Carlo mas sinceramente não vejo a utilidade especifica para o caso de sistemas de trading.

Podes desenvolver como aplicarias a metodologia?
http://marketapprentice.wordpress.com

Para muito errar e muito mais aprender!

"who loses best will win in the end!" - Phantom of the Pits

Nota: As análises apresentadas constituem artigos de opinião do autor, não devendo ser entendidos como recomendações de compra e venda ou aconselhamento financeiro.
Avatar do Utilizador
 
Mensagens: 919
Registado: 9/3/2009 23:07
Localização: 16

por rsacramento » 1/1/2011 22:38

pelo que julgo saber os testes de monteCarlo ser-te-ão úteis
Avatar do Utilizador
 
Mensagens: 10503
Registado: 29/11/2007 12:50

Overfitting

por Zeb_PT » 1/1/2011 22:24

Mais um artigo que gostaria de ter algum feedback pois, pelo menos para mim, este tema é essencial ao meu trading: http://marketapprentice.wordpress.com/2011/01/01/overfitting/

Tendo por base do meu trading todo o backtesting para aperfeiçoar os meus indicadores, uma das minhas maiores preocupações é a questão de overfitting. Um óptimo artigo que descreve este entre outros tópicos interessantes é o The Quest for the Trader's Holy Grail (outros tópicos interessantes a abordar mais tarde são "Profit Spike" e o que é "Estatísticamente Relevante").

O artigo define Overfitting como uma hiper-optimização de um sistema de trading para um determinado período mas que não tem qualquer capacidade de previsão. O problema é distinguir o que é uma optimização do que é overfitting, o autor do artigo cita Pardo ( Pardo, Robert, Design, Testing, and Optimization of Trading Systems, New York, NY: John Wiley & Sons, Inc., 1992. ) para definir a diferença, basicamente a capacidade de produzir resultados em real-time.

O autor do artigo também aponta como um determinado indicador técnico pode sofrer de overfitting:
- Utilizando demasiadas variáveis, regras ou condições.
- Utilizando uma amostragem demasiado pequena, no nosso caso, utilizando um período demasiado curto (e limitado)
- Se o óptimo resultado de proveitos resultam apenas de uma ou outra trade e não do conjunto de trades (como exemplo imaginem um resultado de 75% que resulta de 2 trades de 50% cada uma e de 25 outras trades com resultado -1%).
- Utilizando incorrectamente um indicador técnico, tem de haver uma qualquer explicação para o sistema resultar.
- Quando o resultado não é continuo à medida que nos aproximamos do valor óptimo (por exemplo num MACD o valor óptimo seja 12,26,9 mas que o proveito não aumente continuamente quando variamos a 2ª variavel (25,24,23,22,21,...)[/url]
http://marketapprentice.wordpress.com

Para muito errar e muito mais aprender!

"who loses best will win in the end!" - Phantom of the Pits

Nota: As análises apresentadas constituem artigos de opinião do autor, não devendo ser entendidos como recomendações de compra e venda ou aconselhamento financeiro.
Avatar do Utilizador
 
Mensagens: 919
Registado: 9/3/2009 23:07
Localização: 16


Quem está ligado:
Utilizadores a ver este Fórum: Google [Bot], Majestic-12 [Bot], PAULOJOAO e 230 visitantes