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

 
Maxim Dmitrievsky #:
In genetica, prendiamo le variabili e massimizziamo un criterio. Qui non si può fare, perché si tratta di una classificazione. Non c'è alcuna relazione tra il profitto e le etichette di classe. Nel migliore dei casi, si otterrà un'assurdità. Ecco perché tali criteri sono collocati in eval_metrics.

Non c'è felicità nella vita).

 
Aleksey Nikolayev #:

Non c'è felicità nella vita)

Anche dal nome loss f-ma è la perdita f-ma tra i valori di riferimento e il modello.

Da che parte è il manicotto sotto forma di profitto
 
Maxim Dmitrievsky #:
Anche dal nome perdita ph-y è la perdita ph-y tra i valori di riferimento e il modello

Da che parte è la manica del profitto qui

In effetti, ci stiamo spostando dall'area del MO a quella più generale dell'ottimizzazione. Tuttavia, "guadagnare il più possibile" non è la stessa cosa di "avere ragione il più spesso possibile".

 
Andrey Dik #:

1. v

2. Ecco una figura, come una curva di un'ipotetica funzione di apprendimento.

Siete convinti che la griglia si fermerà all'estremo locale 1? O forse al 2? O cosa, al 3, come nel mezzo? Quindi non sappiamo in anticipo quanti siano gli estremi locali, potrebbero essere 100500 o anche di più. Ecco perché è importante cercare di trovare l'estremo locale più alto che l'algoritmo è in grado di raggiungere.

È molto bello e dimostrabile nel senso di giustificare la ricerca di un massimo globale.

Ma questo è un discorso storico.

E se aggiungessimo una barra a destra? Sarebbe ancora bello? O crollerebbe? Il mercato non è stazionario. Credete al tester? Lo trova, è bello, a colori...

 
Maxim Dmitrievsky #:
In genetica, prendiamo le variabili e massimizziamo un criterio. Qui non si può fare, perché si tratta di una classificazione. Non c'è alcuna relazione tra il profitto e le etichette di classe. Nel migliore dei casi, si otterrà un'assurdità. Ecco perché tali criteri sono collocati in eval_metrics.
La qualità della classificazione può essere valutata in qualche modo, quindi massimizzare questa valutazione è l'obiettivo dell'ottimizzazione.
 
Maxim Dmitrievsky #:
Anche dal nome perdita ph-y è la perdita ph-y tra i valori di riferimento e il modello

Da che parte è la manica del profitto qui

c'è un manicotto

 
Andrey Dik #:
La qualità della classificazione può essere valutata in qualche modo. Pertanto, massimizzare questa valutazione è l'obiettivo dell'ottimizzazione.
Ebbene, la perdita tra l'originale e l'addestrato viene minimizzata. È possibile aggiungere una piccola deduzione sotto forma di profitto normalizzato, ovviamente per provare, ma è necessario?
 
СанСаныч Фоменко #:

Molto bello e dimostrabile nel senso di giustificare la ricerca di un massimo globale.

Ma è nella storia.

E se aggiungessimo una barra a destra? La bellezza rimarrebbe? O crollerebbe? Il mercato non è stazionario. Credete al tester? Lo trova, è bello, a colori...

Non importa se è nella storia o nel futuro. E il tester stesso non ha nulla a che fare con questo.

Ciò che conta è la proprietà di un algoritmo (un algoritmo di ottimizzazione individuale o come parte di una griglia) di trovare l'optimum globale di un criterio di valutazione. Sottolineo: il criterio di valutazione. Il criterio di valutazione non è necessariamente e/o solo il profitto. Può essere qualsiasi cosa, per esempio, il criterio di valutazione del lavoro su OOS non è un criterio (minimizzare la differenza tra campione e OOS)? - è solo un'idea. I criteri possono essere qualsiasi cosa e di qualsiasi complessità. È importante capire che il criterio del "profitto" è una cosa discreta e molto goliardica, per cui si cerca di trovare criteri di valutazione più morbidi e monotoni, il che in genere migliora la qualità dell'ottimizzazione stessa e dell'addestramento neuronico in particolare.

Quindi, tornando a ciò che ho disegnato sull'immagine altamente artistica - una chiara illustrazione del fatto che in condizioni in cui non si conoscono né il numero né le caratteristiche degli estremi locali, l'unica via d'uscita è cercare il più possibile quello che è possibile in condizioni di capacità computazionali limitate.

Plateau - sì, esiste una nozione del genere, ma non è legata all'ottimizzazione, si tratta di classificare insiemi di parametri simili in base a qualche attributo. La ricerca di un plateau stabile è un compito complesso a parte.

 

Ho finalmente ottenuto la mia funzione di perdita, la cui derivata è rappresentata come prodotto di Sharpe, errore e pesi.

is_max_optimal=False indica che il valore è decrescente, ma poiché ho anche moltiplicato per -1, è vero il contrario.

class SharpeObjective(object):
  def calc_ders_range(self, approxes, targets, weights):
    assert len(approxes) == len(targets)
    if weights is not None:
      assert len(weights) == len(approxes)

    result = []
    for index in range(len(targets)):
      preds = [approxes[i] for i in range(len(targets))]
      preds = [i if i>0 else -1*i for i in preds]
      sharpe = np.mean(preds)/np.std(preds)
      der1 = targets[index] - approxes[index]
      der2 = -1

      if weights is not None:
        der1 = -1 * sharpe * der1 * weights[index]
        der2 = der2 * weights[index]

      result.append((der1, der2))
    return result

class Sharpe(object):
    def get_final_error(self, error, weight):
        return error

    def is_max_optimal(self):
        return False

    def evaluate(self, approxes, target, weight):
        assert len(approxes) == 1
        assert len(target) == len(approxes[0])
        preds = np.array(approxes[0])
        target = np.array(target)
        preds = [i if i > 0 else -1*i for i in preds]
        sharpe = np.mean(preds)/np.std(preds)
        return sharpe, 0

model = CatBoostRegressor(learning_rate=0.1, loss_function=SharpeObjective(), eval_metric=Sharpe())
 
Evgeni Gavrilovi #:

Infine, ha una propria funzione di perdita, la derivata, rappresentata come prodotto di Sharpe, errore e pesi.

is_max_optimal=False indica che il valore è decrescente, ma poiché ho anche moltiplicato per -1, è vero il contrario.

I risultati dell'allenamento sono migliorati?)