L'apprendimento automatico nel trading: teoria, modelli, pratica e algo-trading - pagina 1138
Ti stai perdendo delle opportunità di trading:
- App di trading gratuite
- Oltre 8.000 segnali per il copy trading
- Notizie economiche per esplorare i mercati finanziari
Registrazione
Accedi
Accetti la politica del sito e le condizioni d’uso
Se non hai un account, registrati
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.
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.
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?
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 viciniNon 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 viciniOK, ma un po' più tardi - in questo momento tutte le macchine stanno ansimando per una storia :)
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.
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
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.
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.
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.
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