Aprendizado de máquina no trading: teoria, prática, negociação e não só - página 2833

 
Evgeni Gavrilovi catboost, preciso do Sharp.

O resultado do treinamento de um modelo com minha versão é quase o mesmo que com o RMSE, portanto, há um erro em algum lugar do código.

preds e target são retorno (a[i]-a[i+1])

Não sei muito sobre python ou katbusta, mas farei perguntas idiotas)

1) O que são dados, por que a média não vem de preds?

2) Parece que para o gradient bousting você precisa especificar mais fórmulas para o gradiente e o hessiano?

 
Aleksey Nikolayev #:

Não sei muito sobre python ou catbusta, mas vou fazer perguntas idiotas)

1) O que são dados, por que a média não é de preds?

2) Parece que para o gradient bousting você precisa especificar fórmulas para gradiente e hessiano?

Aparentemente sim, deixei passar alguma coisa. Usei o modelo do site oficial https://catboost.ai/en/docs/concepts/python-usages-examples.

dados - lista gerada de previsões de modelos, converti valores negativos em positivos para calcular a média aritmética para a média de Sharpe

 
Evgeni Gavrilovi #:

dados - lista gerada de previsões do modelo; os valores negativos foram convertidos em valores positivos para calcular sua média aritmética para a média de Sharpe

Por quê? Para Sharpe, é calculada a média com os sinais originais.

 
Aleksey Nikolayev #:

Por quê? Para Sharpe, é considerada a média com os sinais originais.

Para levar em conta também as ordens de venda, digamos que haja 2 previsões precisas -0,002 (20 pips) e +0,003 (menos - curto, mais - longo).

O lucro é de +0,005, a média é de 0,0025 e, sem alterar o sinal, será de 0,0005.


Acontece que uma métrica personalizada requer sua própria função de perda, por analogia, classeRmseObjective(object )
 
Evgeni Gavrilovi #:

Aparentemente, sim, deixei passar alguma coisa. Usei o modelo do site oficial https://catboost.ai/en/docs/concepts/python-usages-examples.

Há dois tipos de métricas loss_function e eval_metric. Você provavelmente precisa da primeira, veja aqui https://catboost.ai/en/docs/concepts/python-usages-examples#user-defined-loss-function

Mas posso estar errado. Há mais especialistas em python e elogiadores de python aqui do que eu. Talvez eles o ajudem mais.

 
Evgeni Gavrilovi #:

Para levar em conta também as ordens de venda, digamos que haja duas previsões precisas -0,002 (20 pips) e +0,003 (menos - curto, mais - longo).

Lucro +0,005, a média é 0,0025 e, sem alterar o sinal, será 0,0005.

Bem, isso não seria um Sharpe. Além disso, talvez seja necessário não apenas pegar o módulo, mas multiplicá-lo pelo sinal da previsão (menos um se estiver vendendo e um se estiver comprando).

 
Evgeni Gavrilovi catboost, preciso do Sharp.

O resultado do treinamento de um modelo com minha versão é quase o mesmo que com o RMSE, portanto, há um erro em algum lugar do código.

preds e target são retorno (a[i]-a[i+1])

Imprima os valores obtidos e compare-os com a outra métrica. Imprima ambos de uma vez, para cada iteração. Na parada antecipada do catbust, não se esqueça de incluir o máximo do critério personalizado e "use best model=True". Você pode simplesmente ativar a opção Verbose, que imprimirá os valores das métricas em cada iteração por si só.
 
Maxim Dmitrievsky #:
Imprima os valores obtidos e compare-os com a outra métrica. Imprima ambos de uma vez, para cada iteração. No catbusta early stop, não se esqueça de ativar os critérios máximos do usuário e "use best model=True". Basta ativar Verbose para imprimir os valores de métrica a cada iteração.

Seria interessante para fins de pesquisa (embora seja bastante complicado) fazer isso por meio de uma função de perda personalizada. Há uma possibilidade para isso (se você for levado ao início da página, precisará encontrar a seção Função de perda definida pelo usuário na parte inferior).

Usage examples
Usage examples
  • catboost.ai
Regression CatBoostRegressor class with array-like data.
 
Aleksey Nikolayev #:

Seria interessante para fins de pesquisa (embora seja bastante complicado) criar uma função de perda personalizada. Há uma possibilidade para isso (se você for jogado para o início da página, deverá encontrar a seção Função de perda definida pelo usuário na parte inferior).

Vamos tentar mais tarde
 
Aleksey Nikolayev #:

Seria interessante para fins de pesquisa (embora seja bastante complicado) criar uma função de perda personalizada. Há uma possibilidade para isso (se você for jogado para o início da página, precisará encontrar a seção Função de perda definida pelo usuário na parte inferior).

Isso não funcionou para mim com o xgboost....
Ou melhor, funcionou, mas o treinamento não funcionou. Você precisa fazer boas amizades com gradientes, precisa fazer com que a função de aptidão seja gradiente; com a genética, é muito mais simples