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

 
Konstantin Nikitin:

Per le mie osservazioni, affilare più di 1 non ha ancora funzionato. Sì, e i conti di altre persone / grafici con un grande indice non ha visto. Non lo so ancora.

Aleksey Vyazmikin:

Non è chiaro dalla descrizione della formula come controllarla, per esempio come calcolare il"profitto medio aritmetico nel tempo di tenere una posizione"?

Forse si tratta di una piccola aspettativa matematica?

In ogni caso, ho notato che più alto è l'indice, meglio è, e questo non è poco, e il rapporto principale viene scritto nel file con quegli indici che capisco.

Beh, cosa posso dire a voi stimati signori...

Questi sono effetti collaterali dell'uso di scatole nere, biblioteche di altre persone, ecc.

Posso solo offrirvi di pubblicare l'equity in CSV della vostra ricerca e vi dirò qual è il corretto Sharp Ratio dei vostri modelli, potete calcolare voi stessi il codice allegato (python)

import random

import csv

import matplotlib

import matplotlib.pyplot as plt


def rndWalk(length, start, var):

    rndwalk = []

    curent = start

    for _ in range(length):

        curent*= 1 + random.gauss(0,3) * var

        rndwalk.append(curent)

    return rndwalk


def ParseCsv(path, columnName):

    tab = csv.DictReader(open(path))

    price = []

    for row in tab: price.append(float(row[columnName]))

    return price


def diff(ts):

    return [ts[n] - ts[n - 1] for n in range(1, len(ts))]


def SharpRatio(PnL):

    ret = sum(PnL) / len(PnL)

    var = ((sum([(x - ret) ** 2 for x in PnL]) / len(PnL))) ** 0.5

    return len(PnL) ** 0.5 * ret / var


rw = rndWalk(10000,100,0.001)

sr = SharpRatio(diff(rw))

print(sr)


plt.plot(rw)

plt.show()


Il codice di SharpRatio in sé è solo 3 righe

def SharpRatio(PnL):

ret = somma(PnL) / len(PnL)

var = ((somma([(x - ret) ** 2 per x in PnL]) / len(PnL)) ** 0.5

ritorno len(PnL) ** 0,5 * ret / var


Se mi mandi equity o PnL, cercherò di scoprire qual è il problema. Posso indovinare se PnL è usato "a vuoto", cioè con dei vuoti tra i trade (il che ovviamente non è corretto), da cui il ridimensionamento. Scommetterei 100 dollari che questo è il problema.

 
panturale:

Cosa posso dirvi signori...

Questi sono gli effetti collaterali dell'uso di scatole nere, librerie aliene, ecc.

Posso solo offrirvi di pubblicare l'equity in CSV della vostra ricerca e vi dirò qual è il corretto Sharp Ratio dei vostri modelli, potete calcolare voi stessi il codice allegato (python)

Come darvi il Rapporto di nitidezza, all'ora e al minuto?

 
Aleksey Vyazmikin:

Come si dà l'equità, a ore e minuti?

Non importa, che siano entrambi

A proposito, uno dei segni di un calcolo errato dello Sharp è quando l'equità su scale diverse dà numeri significativamente diversi di Sharp Ratio mentre normalmente dovrebbero essere molto vicini
 
panturale:

Non importa, facciamolo in entrambi i modi.

A proposito, uno dei segni di un calcolo errato del mescolamento è quando l'equità a scale diverse dà numeri significativamente diversi di rapporti di mescolamento mentre normalmente dovrebbero essere molto vicini

OK, ma un po' più tardi - in questo momento tutte le macchine stanno ansimando per una storia :)

 
pantural:

Non importa, facciamolo in entrambi i modi.

A proposito, uno dei segni di una stima errata di Sharp è che le azioni su scale diverse danno essenzialmente numeri diversi di Sharp Ratio mentre normalmente dovrebbero essere molto vicini.

Sto dando la variante al minuto e allego il rapporto di trading del tester.

È vero che ho migliorato un po' gli indicatori.

Lo Sharpe Ratio è ora 0,29.

File:
KS.zip  102 kb
 
Aleksey Vyazmikin:

Do una variante al minuto e allego il rapporto di trading del tester.

Ma ho migliorato un po' gli indicatori.

Il rapporto di nitidezza è ora di 0,29.

Rapporto reale di Sharp = ~3,79

L'errore di coloro che hanno cercato di calcolare le vostre cifre è evidente. Hanno semplicemente dimenticato di scalare il rapporto tra il ritorno e la variazione per la radice quadrata della lunghezza della serie

def SharpRatio(PnL):

PnL = [x per x in PnL se abs(x) > 0]

ret = somma(PnL) / len(PnL)

var = ((somma([(x - ret) ** 2 per x in PnL]) / len(PnL)) ** 0.5

ritorno len(PnL) ** 0,5 * ret / var


PS: SR=3.79 è molto ottimistico, naturalmente se non è un'azienda di sudore e testato correttamente

 
panturale:

rapporto reale Sharp = ~3,79

L'errore di coloro che hanno fatto l'algoritmo per calcolare i tuoi numeri è evidente. Hanno stupidamente dimenticato di scalare il rapporto tra il ritorno e la variazione per la radice quadrata della lunghezza della serie

def SharpRatio(PnL):

PnL = [x per x in PnL se abs(x) > 0]

ret = somma(PnL) / len(PnL)

var = ((somma([(x - ret) ** 2 per x in PnL]) / len(PnL)) ** 0.5

ritorno len(PnL) ** 0,5 * ret / var


PS: SR=3.79 è molto ottimista, naturalmente se non è un sudore (in qualche misura) e testato correttamente

Grazie per il ricalcolo!

Se è davvero un errore, forse vale la pena segnalarlo in un thread speciale, dato che è un errore globale nel terminale?

Per quanto riguarda il fitting, ho il mio approccio al MO, raccolgo le foglie dagli alberi e poi guardo le loro prestazioni sulla storia in termini di campione addestrato e sconosciuto, dove c'era un effetto positivo su entrambi i campioni passare al gruppo successivo per la selezione e l'analisi dettagliata. Questo è in parte un adattamento, ma con aggiustamenti per il fatto che una tale "foglia" ha funzionato prima e funziona ora, e cosa succederà dopo - nessuno lo sa.

 
Aleksey Vyazmikin:

Grazie per il ricalcolo!

Se è davvero un errore, forse dovresti segnalarlo in un thread speciale, dato che è un errore globale nel terminale?

Sì, è sicuramente un errore, dovrebbe essere segnalato, ti dispiace se uso il tuo rapporto come esempio?

Aleksey Vyazmikin:

Per quanto riguarda il fitting, ho il mio approccio al MO, raccolgo le foglie dagli alberi e poi guardo le loro prestazioni sulla storia in termini di campione addestrato e sconosciuto, dove c'era un effetto positivo su entrambi i campioni passare al gruppo successivo per la selezione e l'analisi dettagliata. Questo è in parte appropriato, ma con l'aggiustamento che un tale "foglio" ha funzionato prima e funziona ora, e che nessuno sa cosa succederà dopo.

L'aggiustamento è ovunque, non importa come lo si guardi, la questione è come ridurlo a un livello accettabile.

 
panturale:

La forma è ovunque, non importa come la si guardi, la questione è come ridurla a un livello accettabile.

Non si può. Qualsiasi ottimizzazione, qualsiasi messa a punto, qualsiasi formazione è una misura. Devi solo accettarlo come un'inevitabilità e lavorare con esso.

Qui la questione deve essere posta in modo diverso. Purtroppo, probabilmente non ci sono ricette generali, e la formulazione stessa può essere diversa per i diversi sistemi.

 
Yuriy Asaulenko:

Non si può. Qualsiasi ottimizzazione, qualsiasi messa a punto, qualsiasi formazione è un adattamento.

Qui la domanda deve essere posta in modo diverso. Purtroppo, probabilmente non ci sono ricette generali, e la formulazione stessa può essere diversa per i diversi sistemi.

Vedere

Non usare numeri che devono essere aggiustati