L'apprendimento automatico nel trading: teoria, modelli, pratica e algo-trading - pagina 2833

 
Evgeni Gavrilovi catboost, ho bisogno di Sharp.

Il risultato dell'addestramento di un modello con la mia versione è quasi lo stesso di RMSE, quindi c'è un errore da qualche parte nel codice.

preds e target sono return (a[i]-a[i+1])

Non so molto di python o di katbusta, ma farò domande stupide)

1) Cosa sono i dati, perché la media non proviene da preds?

2) Sembra che per il gradient bousting sia necessario specificare più formule per il gradiente e l'hessian?

 
Aleksey Nikolayev #:

Non so molto né di python né di catbusta, ma farò domande stupide).

1) Cosa sono i dati, perché la media non è da preds?

2) Sembra che per il gradient bousting sia necessario specificare le formule per il gradiente e l'hessian?

A quanto pare sì, mi è sfuggito qualcosa. Ho usato il modello dal sito ufficiale https://catboost.ai/en/docs/concepts/python-usages-examples.

dati - elenco generato delle previsioni del modello, ho convertito i valori negativi in positivi per calcolare la loro media aritmetica per la media di Sharpe

 
Evgeni Gavrilovi #:

dati - elenco generato di previsioni del modello, i valori negativi sono stati convertiti in valori positivi per calcolare la loro media aritmetica per la media di Sharpe

Perché? Per Sharpe, viene calcolata la media con i segni originali.

 
Aleksey Nikolayev #:

Perché? Per Sharpe si considera la media con i segni originali.

Per tenere conto anche degli ordini di vendita, supponiamo che ci siano 2 previsioni accurate -0,002 (20 pips) e +0,003 (meno - short, più - long).

Il profitto è +0,005, la media è 0,0025 e senza cambiare il segno sarà 0,0005.


Si scopre che una metrica personalizzata richiede una propria funzione di perdita, per analogia classeRmseObjective(oggetto )
 
Evgeni Gavrilovi #:

A quanto pare sì, mi è sfuggito qualcosa. Ho usato il modello del sito ufficiale https://catboost.ai/en/docs/concepts/python-usages-examples.

Ci sono due tipi di metriche loss_function e eval_metric. Probabilmente hai bisogno della prima, guarda qui https://catboost.ai/en/docs/concepts/python-usages-examples#user-defined-loss-function

Ma potrei sbagliarmi. Qui ci sono esperti di python e lodatori di python migliori di me) Forse ti aiuteranno di più.

 
Evgeni Gavrilovi #:

Per prendere in considerazione anche gli ordini di vendita, diciamo che ci sono 2 previsioni accurate -0,002 (20 pip) e +0,003 (meno - short, più - long).

Con un profitto di +0,005, la media è di 0,0025, e senza cambiare il segno sarà di 0,0005.

Non sarebbe uno Sharpe. Inoltre, forse, è necessario non solo prendere il modulo, ma moltiplicarlo per il segno della previsione (per meno uno se si vende e per uno se si compra).

 
Evgeni Gavrilovi catboost, ho bisogno di Sharp.

Il risultato dell'addestramento di un modello con la mia versione è quasi lo stesso di RMSE, quindi c'è un errore da qualche parte nel codice.

preds e target sono return (a[i]-a[i+1])

Stampare i valori ottenuti e confrontarli con l'altra metrica. Stampate entrambi contemporaneamente, per ogni iterazione. In catbust early stop non dimenticate di includere il massimo del criterio personalizzato e "use best model=True" Potete semplicemente attivare Verbose, che stamperà da solo i valori delle metriche a ogni iterazione.
 
Maxim Dmitrievsky #:
Stampate i valori ottenuti e confrontateli con l'altra metrica. Stampare entrambi in una volta, per ogni iterazione. In catbusta early stop non dimenticate di abilitare i criteri massimi dell'utente e "use best model=True". Potete semplicemente abilitare Verbose, che stamperà i valori delle metriche a ogni iterazione.

Sarebbe interessante per scopi di ricerca (anche se è piuttosto complicato) utilizzare una funzione di perdita personalizzata. C'è una possibilità in tal senso (se si viene catapultati all'inizio della pagina, è necessario trovare la sezione Funzione di perdita definita dall'utente in fondo).

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

Sarebbe interessante per scopi di ricerca (anche se è piuttosto complicato) creare una funzione di perdita personalizzata. Esiste una possibilità in tal senso (se si va all'inizio della pagina, si dovrebbe trovare la sezione Funzione di perdita definita dall'utente proprio in fondo).

Proviamo in seguito
 
Aleksey Nikolayev #:

Sarebbe interessante per scopi di ricerca (anche se è piuttosto complicato) creare una funzione di perdita personalizzata. Esiste una possibilità in tal senso (se si va all'inizio della pagina, bisogna trovare la sezione Funzione di perdita definita dall'utente in fondo).

Per me non ha funzionato con xgboost....
O meglio, ha funzionato, ma l'addestramento non ha funzionato, bisogna fare amicizia con i gradienti, bisogna rendere la funzione di fitness gradiente, con la genetica è molto più semplice.