Discussão do artigo "Ciência de dados e aprendizado de máquina (Parte 31): Aplicação de modelos CatBoost no trading"

 

Novo artigo Ciência de dados e aprendizado de máquina (Parte 31): Aplicação de modelos CatBoost no trading foi publicado:

Os modelos de inteligência artificial CatBoost ganharam enorme popularidade na comunidade de aprendizado de máquina graças à sua precisão nas previsões, eficiência e resistência a conjuntos de dados fragmentados e complexos. Este artigo trata de como usar esses modelos no mercado Forex.

CatBoost é uma biblioteca de código aberto que implementa algoritmos de gradient boosting sobre árvores de decisão. Foi desenvolvida especialmente para resolver tarefas relacionadas ao processamento de características categóricas e dados em problemas de aprendizado de máquina. A empresa desenvolvedora Yandex disponibilizou a biblioteca como código aberto em 2017 (saiba mais).

Embora o CatBoost tenha surgido relativamente recentemente em comparação com outros métodos de aprendizado de máquina, como regressão linear ou SVM, a biblioteca rapidamente ganhou popularidade e se tornou um dos modelos mais usados em competições do Kaggle.

O CatBoost atraiu muita atenção por sua capacidade de processar automaticamente características categóricas em conjuntos de dados, algo bastante desafiador para muitos algoritmos de aprendizado de máquina.

  • Os modelos CatBoost geralmente oferecem melhor desempenho em comparação com outros, exigindo um esforço mínimo. Mesmo com parâmetros e configurações padrão, esses modelos demonstram excelente precisão.
  • Diferentemente das redes neurais, que exigem conhecimento aprofundado da área, o CatBoost é mais simples de implementar.


Autor: Omega J Msigwa

 
Seu texto é instigante.

Eu me pergunto o que aconteceria se também rastreássemos em qual sessão de negociação estamos.
 
Sim, a sessão de negociação é uma variável valiosa a ser incluída em seus dados de treinamento
[Excluído]  
Todos os classificadores (inclusive o catboost) funcionam corretamente somente com atributos normalizados. Os preços como atributos não são adequados.
 

E há também o problema de exportar o modelo do classificador para o ONNX


Observação

O rótulo é inferido incorretamente para a classificação binária. Esse é um bug conhecido na implementação do onnxruntime. Ignore o valor desse parâmetro no caso de classificação binária.

 
O preço não pode ser usado como dados de treinamento. No início do ano passado, usei o preço do ouro para treinar o modelo. Quando o preço do ouro continua a atingir novos máximos, a entrada para o modelo desses novos dados de preços altos, o modelo não reconhece esses dados, não importa como alterar e exceder o preço mais alto do preço dos dados de treinamento, ele apresenta uma probabilidade constante de valor!
 
Muito obrigado pelo artigo útil.

Tenho uma pequena dúvida ou preocupação que gostaria de compartilhar.

When I tried to convert the CatBoost model in a pipeline to ONNX Com variáveis categóricas, o processo falhou, gerando um erro.


Acredito que o problema subjacente possa estar relacionado ao que está descrito aqui:

https://catboost.ai/docs/en/concepts/apply-onnx-ml

Especificidades:

No momento, só há suporte para modelos treinados em conjuntos de dados sem recursos categóricos.


No Jupyter Notebook catboost-4-trading.ipynb que baixei, o código de ajuste do pipeline está escrito como:

pipe.fit(X_train, y_train, catboost__eval_set=(X_test, y_test))

Parece que o parâmetro"catboost__cat_features=categorical_features" foi omitido, portanto, o modelo pode ter sido treinado sem especificar recursos categóricos.

Isso pode explicar por que o modelo pode ser salvo como ONNX sem nenhum problema.

Se esse for o caso, talvez o método nativo do CatBoost"save_model" possa ser usado diretamente, assim:

model = pipe.named_steps['catboost']

model_filename = "CatBoost.EURUSD.OHLC.D1.onnx"

model.save_model(model_filename, format='onnx')

Espero que essa observação possa ser útil.

ONNX |
  • catboost.ai
ONNX is an open format to represent AI models. A quote from the Open Neural Network Exchange documentation:
 
border_count é uma partição em compartimentos (segmentos quânticos) para quaisquer recursos, não apenas para recursos categóricos.
 
Por que não há um stop loss fixo no código do EA?