Discussão do artigo "Importância da qualidade do gerador de números aleatórios no desempenho dos algoritmos de otimização" - página 4

 
Andrey Dik #:

Sim, é claro, fazer alterações, fazer melhorias. Portanto, uma base de código seria uma ótima solução.

Melhor do que o git. Você pode ver o histórico de versões, ver facilmente todas as alterações em cada arquivo, relatar problemas ou comentar sobre uma determinada linha de código e muito mais.

 

Na minha opinião, para avaliar a eficácia da otimização, a principal importância é o desempenho dos parâmetros encontrados na amostra OOS (digamos, validação cruzada k-fold), e ainda não vi esse tópico - talvez eu o tenha perdido em algum lugar.

Normalmente, o problema não é encontrar o algoritmo de otimização mais meticuloso, mas fazer com que o sistema continue a ter o melhor desempenho possível. Tenho a impressão de que os parâmetros mais otimizados no backtest não têm vida longa o suficiente no forward e, portanto, a eficiência deve ser avaliada de alguma outra forma, por exemplo, pelo tamanho dos clusters contínuos e suaves de parâmetros que fornecem o valor médio mais alto de FF.

A propósito, não vi nenhuma comparação de velocidade nas tabulações.

 
Stanislav Korotky #:

E, para avaliar a eficiência da otimização, o trabalho dos parâmetros encontrados na amostra OOS (digamos, validação cruzada k-fold) é de importância primordial, e ainda não notei esse tópico - talvez eu o tenha perdido em algum lugar.

Normalmente, o problema não é encontrar o algoritmo de otimização mais meticuloso, mas fazer com que o sistema continue a ter o melhor desempenho possível. Tenho a impressão de que os parâmetros mais otimizados no backtest não têm vida longa o suficiente no forward e, portanto, a eficiência deve ser avaliada de alguma outra forma, por exemplo, pelo tamanho dos grupos contínuos e suaves de parâmetros que fornecem o valor médio mais alto de FF.

A propósito, não vi nenhuma comparação de velocidade nas tabulações.

Você abordou a questão da robustez dos sistemas de negociação, mas essa questão não tem relação direta com os algoritmos de otimização em si.

Nesta série de artigos, os próprios algoritmos de otimização, como ferramentas, são considerados e comparados uns com os outros.

A velocidade de execução do código dos algoritmos é insignificante em comparação com o cálculo do FF em tarefas práticas, portanto, não há nenhum sentido especial em fazer medições.

Grosso modo, estamos comparando apenas pás, quais pás cortam melhor o solo e a que profundidade, e não há relação com o local onde serão usadas: para cavar buracos para batatas ou pepinos, e a influência das pás na velocidade de maturação dos vegetais não é investigada.


ZЫ. A otimização e a robustez dos parâmetros do sistema são coisas diferentes, que, por algum motivo, são erroneamente associadas. Para identificar parâmetros robustos, outros métodos devem ser usados (como pós-processamento de resultados ou em paralelo à otimização), como a identificação de grupos de parâmetros com comportamento comum do sistema e outros métodos.

 
Andrey Dik #:

Você tocou na questão da robustez dos sistemas de negociação, mas essa questão não tem nada a ver diretamente com os algoritmos de otimização em si.

Mas você decidiu se aprofundar na questão da influência da qualidade do HSC na otimização (ou seja, você se desviou do que está diretamente relacionado ao algoritmo de otimização). Isso é louvável. Mas, na minha opinião, o mais importante é a estabilidade da solução encontrada, que provavelmente é obtida por diferentes maneiras de avaliar "melhor" no espaço FF. Isso está diretamente relacionado ao algoritmo de otimização e à sua aplicabilidade prática.

 
Stanislav Korotky #:

1. Você decidiu se aprofundar na questão da influência da qualidade do DST na otimização (ou seja, você se desviou do que está diretamente relacionado ao algoritmo de otimização). Isso é louvável.

2. Mas, na minha opinião, o mais importante é a estabilidade da solução encontrada, que provavelmente é obtida por diferentes maneiras de estimar a "melhor qualidade" no espaço FF. Isso está diretamente relacionado ao algoritmo de otimização e à sua aplicabilidade prática.

1. A questão da influência da qualidade do HCS é legítima, uma vez que todos os algoritmos considerados até agora são exclusivamente estocásticos por natureza (exceto o algoritmo Nelder-Mead). Portanto, os DSTs estão diretamente relacionados à AO.

2. respondido na postagem acima. Acrescentarei um pouco mais: os testes usam funções de teste que cumprem o papel do que precisamos. Isso é muito importante para entender o momento. Imagine ter a capacidade de realizar TODAS as execuções possíveis de todos os conjuntos possíveis, ou seja, realizar uma enumeração completa. Agora imagine que você precisa selecionar alguns deles, certo? Como você as seleciona? - Há alguns critérios pelos quais você escolherá entre todos os parâmetros. Se você souber quais parâmetros (soluções) escolher entre todos os possíveis obtidos por uma pesquisa completa, saberá quais critérios aplicar na otimização. A função dos critérios é desempenhada pelo FF.

Qual FF aplicar para garantir a robustez do sistema? - Os algoritmos de otimização não respondem a essa pergunta e nunca a responderam. Os algoritmos de otimização ajudam a encontrar somente se você souber o que procurar.

A responsabilidade de escolher um FF é inteiramente do pesquisador.

A pergunta sobre a influência da qualidade do HF nos resultados da AO apareceu várias vezes neste fórum e em outros. Não vi a resposta a essa pergunta em domínio público, mas agora a resposta está lá e as ferramentas para verificação são fornecidas.
 

A otimização está envolta em muitos mitos, abusos e equívocos, portanto, gostaria de reiterar novamente:

Vamos realizar um experimento mental. Todas as variantes possíveis dos parâmetros do sistema são obtidas por meio de uma enumeração completa. Nesse caso, o algoritmo de otimização é completamente excluído, absolutamente, não há algoritmo de otimização. Com todas as possíveis variantes de parâmetros em mãos, surge a pergunta: quais parâmetros escolher? - Sabendo a resposta a essa pergunta, é possível descrever os critérios de seleção de todas as variantes possíveis na forma de uma função de adequação, que já pode ser aplicada no processo de otimização. Assim, o algoritmo de otimização permitirá obter o resultado desejado, da mesma forma que em uma pesquisa completa, mas mais rapidamente. Depois de realizar esse experimento mental, fica claro que o algoritmo de otimização não é "culpado" de forma alguma pelo que encontrou, mas sim o usuário que não descreveu com precisão os critérios desejados.

E isso é importante.

 
Andrey Khatimlianskii #:

Ele é melhor que o git. Você pode ver o histórico de versões, ver facilmente todas as alterações em cada arquivo, relatar problemas ou comentar sobre uma determinada linha de código e muito mais.

Fico feliz em ver você entre os comentaristas, Andrei.

Não é fácil com o github, há problemas com motivação e tempo)).

 
Andrey Dik #:

É bom vê-lo entre os comentaristas, Andrew.

Não é fácil com o github, há problemas com motivação e tempo)).

Tópico interessante!

Com o github, no máximo um dia para aprender, experimentar e depois é pura diversão. Pronto para ajudar.


Andrey Dik #:

A otimização está envolta em muitos mitos, abusos e equívocos, portanto, gostaria de repeti-la novamente:

Vamos realizar um experimento mental. Todas as variantes possíveis dos parâmetros do sistema são obtidas por meio de uma enumeração completa. Nesse caso, o algoritmo de otimização é completamente excluído, absolutamente, não há algoritmo de otimização. Com todas as possíveis variantes de parâmetros em mãos, surge a pergunta: quais parâmetros escolher? - Sabendo a resposta a essa pergunta, é possível descrever os critérios de seleção de todas as variantes possíveis na forma de uma função de adequação, que já pode ser aplicada no processo de otimização. Assim, o algoritmo de otimização permitirá obter o resultado desejado, da mesma forma que em uma pesquisa completa, mas mais rapidamente. Após realizar esse experimento mental, fica claro que o algoritmo de otimização não é "culpado" pelo que encontrou, mas o usuário é culpado por não descrever com precisão os critérios desejados.

E isso é importante.

Para apoiar o argumento de Stanislav.

O FF não pode descrever o espaço ao seu redor, ele não tem informações externas.

E a tarefa de um pesquisador é encontrar não um único pico acentuado em torno do qual os resultados são irregulares e ruins, mas um platô mais ou menos extenso, onde os resultados não são muito diferentes.

Como o FF pode determinar sua posição no espaço? Não é possível, ele só conhece sua coordenada absoluta. Portanto, precisamos de um algoritmo (não o chame de otimização, se isso for ruim para você) que busque não o máximo (embora global), mas o melhor platô. A definição de "melhor" é, obviamente, uma questão interessante à parte, mas é óbvio que os parâmetros do centro do platô serão muito mais estáveis no avanço do que os parâmetros de um pico agudo cercado por um fosso.

 
Andrey Khatimlianskii #:

Apoiando o pensamento de Stanislaw.

O FF não pode descrever o espaço ao seu redor, pois não tem informações de fora.

E a tarefa do pesquisador é encontrar não um único pico acentuado em torno do qual os resultados são irregulares e ruins, mas um platô mais ou menos extenso, onde os resultados não são muito diferentes.

Como o FF pode determinar sua posição no espaço? Não é possível, ele só conhece sua coordenada absoluta. Portanto, precisamos de um algoritmo(não o chame de otimização, se isso for ruim para você) que busque não o máximo (embora global), mas o melhor platô. A definição de "melhor" é, obviamente, uma questão interessante à parte, mas é óbvio que os parâmetros do centro do platô serão muito mais estáveis no avanço do que os parâmetros de um pico agudo cercado por um fosso.

O que Stanislav está falando e o que você está falando agora não tem nada a ver com otimização. E você não entendeu corretamente alguns aspectos da função de adequação. Mas já é bom que você concorde em separar a otimização da cor destacada.

Parece que é necessário um artigo separado dedicado para tratar dessas questões.

Mas, vamos começar falando aqui. Então, mais uma vez, vamos supor que temos a oportunidade de fazer uma varredura completa dos parâmetros do sistema disponíveis para nós. Fazemos uma execução do histórico do sistema com todos os parâmetros possíveis em princípio. Agora, responda à pergunta: "Você tem uma maneira de selecionar, entre todos os parâmetros possíveis, um conjunto (ou vários) que esteja disposto a usar para executar o sistema em novos dados? Essa é uma pergunta não apenas para você, mas para todos que quiserem responder a ela. Como podemos ver, agora não estamos falando de nenhum algoritmo de otimização, apenas da escolha de um conjunto de parâmetros para executar o sistema em dados desconhecidos.

 
Andrey Dik #:

Vamos imaginar que temos a possibilidade de realizar uma pesquisa completa dos parâmetros do sistema. Fazemos uma execução no histórico do sistema com todos os parâmetros possíveis em princípio. Agora, responda à pergunta: "Você tem uma maneira de selecionar, entre todos os parâmetros possíveis, um conjunto (ou vários) que esteja pronto para usar na operação do sistema com novos dados?

Eu escolheria apenas os topos das altas colinas locais (não os penhascos).