strategy quant

Transcript

strategy quant
www.sapienzafinanziaria.com
Corso Sapienza Trading Automatico
la formazione finanziaria è il miglior investimento
per il tuo domani
Lezione n. 11
Edizione marzo / luglio 2015
www.sapienzafinanziaria.com
Strategy Quant
STRATEGY QUANT
StrategyQuant è un programma che genera automaticamente
nuove strategie di trading per forex, azioni o ETF.
Usando StrategyQuant, è possibile trovare strategie di trading
profittevoli per qualsiasi mercato, qualsiasi periodo di tempo e di
qualsiasi tipo di grafico.
Strategy Quant è un processo di elaborazione, test e
ottimizzazione. In quanto processo va oltre le conoscenze di
analisi tecnica. Le competenze necessarie sono relative all’analisi
di ottimizzazione, e robustezza.
Cosa fa Strategy Quant
Con StrategyQuant è possibile:
•
Generare un numero illimitato di strategie di trading per qualsiasi mercato o periodo di tempo
•
Salvare le strategie come MetaTrader Expert Advisor o Ninja Trader con codice sorgente
completo
•
Eliminare il lavoro manuale tipico dell’elaborazione di sviluppo di una strategia
•
Trovare nuove strategie di trading che non solo sono uniche, ma anche non ovvie
•
Ridurre il tempo necessario per costruire una strategia da settimane e mesi a minuti!
•
Migliora le tue strategie esistenti
•
Ottimizzare le strategie e trova i migliori parametri
•
Testare le tue strategie in robustezza e analizzare le loro prestazioni
Cosa fa Strategy Quant
Strategy Quant per il trader discrezionale.
È possibile utilizzare per StrategyQuant per generare le idee di trading.
Sarà sorprendente trovare molte strategie redditizie in base a regole relativamente
semplici, che non avremmo mai immaginato.
Ogni strategia che è stato creata da StrategyQuant può essere esportata in un leggibile
«pseudo codice», con la descrizione completa delle regole di trading, che posso
utilizzare nel trading manuale.
E’ possibile inoltre generare successivamente un EA che mi dà segnali di trading
attraverso messaggi suoi miei devices.
Cosa fa Strategy Quant
Cosa aspettarsi da Strategy Quant
StrategyQuant è uno strumento potente, ma non è una scatola magica che vi farà
iniziare a fare soldi con un clic del mouse. Deve essere utilizzato nel modo giusto per
ottenere i risultati.
Generare nuove strategie con Strategy Quant è solo circa il 50% del lavoro.
Il resto del lavoro è fatto dal valutare le strategie generate, e filtrare quelli che sono in
curve fitting, non sono robusti o sovraottimizzati.
Spetta a voi per valutare le vostre nuove strategie correttamente e conoscere i propri
punti di forza, debolezze e le limitazioni prima di metterli a mercato.
Può facilmente accadere che da tutte le strategie redditizie generate da StrategyQuant
solo 1 su 10 passa la valutazione e la consideriamo utile per il trading dal vivo.
Ma dato che il numero di strategie che possiamo generare è quasi infinita, quindi,
anche il 5-10% da infinito è un bel gran numero :-)
Prima di iniziare
Prima di iniziare:
Hardware: StrategyQuant richiede molta potenza di processore. Quindi più veloce è il
computer più strategie verranno generate e testate.
L’elememto più importante del pc è la CPU. SQ è in grado di funzionare in
multiprocessore. Migliori risultati si ottengono attualmente con processori i5 o
Installazione: non installare SQ nella PROGRAM FILE DIRECTORY. Installa in C:\
Utilizzo: è possibile usare le strategie generate in: MetaTrader4 / NinjaTrader /
Tradestation. Adottare le previste attenzioni descritte nel manuale
Prima di iniziare
Prima di iniziare:
Hardware: StrategyQuant richiede molta potenza di processore. Quindi più veloce è il
computer più strategie verranno generate e testate.
L’elememto più importante del pc è la CPU. SQ è in grado di funzionare in
multiprocessore. Migliori risultati si ottengono attualmente con processori i5 o
Installazione: non installare SQ nella PROGRAM FILE DIRECTORY. Installa in C:\
Utilizzo: è possibile usare le strategie generate in: MetaTrader4 / NinjaTrader /
Tradestation. Adottare le previste attenzioni descritte nel manuale
Principi di funzionamento
Principi di funzionamento:
StrategyQuant è un programma: non ha il cervello o l'esperienza di un trader, e non sa
come creare una strategia proficua. Ciò che fa è combinare in modo casuale vari
blocchi (i blocchi rappresentano indicatori, prezzi, ecc) per creare nuove regole di
tradeng. Alla strategia risultante viene datto un backtest su una serie storiche
predefinita, per vedere se è redditizia.
La generazione RANDOM è il fondamento di StrategyQuant. Strategie generate in
questo modo possono essere ulteriormente migliorate (evoluto) con l'evoluzione
genetica.
Principi di funzionamento
Generazione random di strategie di trading:
Una strategia di trading nella popolazione iniziale (prima quantità di strategie
generabile con i blocchi definiti) è costruita utilizzando una combinazione di pattern di
prezzo, indicatori tecnici, tipi di ordine, e altre parti per formare le regole d'ingresso e
di uscita.
StrategyQuant può utilizzare tutti gli indicatori tecnici standard e oscillatori (come CCI,
RSI, Stocastico, ecc), i valori di time frame(come H1, D, 1M,) e pattern di prezzo. Questi
blocchi sono poi combinati utilizzando gli operatori logici e di uguaglianza (e, o,>, <,
ecc) in modo da formare una regola di entrata o di uscita. Inoltre, supporta l'ingresso
diverso e tipi di ordini di uscita (ordine di mercato, limit order, target di profitto fisso, ,
uscita dopo X bar, ecc).
Con tutte le possibili combinazioni di regole e ordini, StrategyQuant è in grado di
generare letteralmente trilioni (miliardi di miliardi 10 18) di possibili strategie differenti
(!fattoriale)
Principi di funzionamento
Generazione random di strategie di trading:
30 blocchi: 50 32 combinazioni (più o
meno.. )
Il processo di costruzione è di per sé del tutto casuale. SQ sceglie casualmente diversi
blocchi da quelli selezionati li combina per creare regole d'ingresso, tipo di ordine e
regola di uscita.
Ci sono alcuni vincoli di validità che assicurano che, per esempio, il prezzo non viene
confrontato con il valore del tempo, ecc Il risultato è una struttura completamente
nuova strategia di trading casuale. Naturalmente, non ogni strategia creata a caso è
redditizio, ma SQ può produrre e testare migliaia di nuove strategie all’ora, e ci
possono esserne molte di queste redditizie.
Principi di funzionamento
Evoluzione genetica
Genetica Evolution rende il processo di ricerca delle
strategie ancora più adeguato. In questa modalità
SQ prima crea una serie di strategie casuali, che
vengono utilizzate come popolazione iniziale
nell'evoluzione.
Questa generazione iniziale di strategie è quindi
"evoluta" nelle successive generazioni usando la
tecnologia di programmazione genetica.
Questo processo imita l'evoluzione - l'algoritmo
sceglie le strategie più idonee (con criteri di
rendimento) in ogni generazione, e il gruppo di
candidati più in prestanti viene poi utilizzato per la
produzione di nuova generazione di strategie di
trading.
Come nell’evoluzione, ciò dovrebbe comportare
sempre migliori candidati, nel nostro caso strategie
più redditizie, più stabili, o in generale migliori nei
criteri di rendimento.
Principi di funzionamento
Esempio di «pseudo
codice»
Ecco un esempio di pseudo codice di
una strategia generato da SQ. Si può
vedere che la strategia ha ordini di
entrata, uscita e ordini comandi di
gestione trading - come i movimenti
trailing stop, ecc. Ogni strategia
generata dal programma può essere
visualizzata in questo pseudo codice
o esportati sotto forma di
MetaTrader Expert Advisor (EA),
strategia # NinjaTrader NinjaScript C
o EasyLanguage per Tradestation /
Multicharts.
============================================================
Entry conditions
============================================================
LongEntryCondition = (Stoch(40, 1, 3) < 50)
ShortEntryCondition = (Stoch(40, 1, 3) > 50)
============================================================
== Entry orders
============================================================
-- Long entry
if LongEntryCondition is true {
if No position is open then Buy at Ichimoku(6, 18, 38, Kijun-sen) + (0.4 * ATR(86)) Limit;
Stop/Limit order expires after 34 bars.
Stop Loss = 190 pips;
Profit Target = (0.74 * ATR(87)) pips;
// Move SL to BE (on close)
Move Stop Loss to Entry price when in profit at least (77 * ATR(12)) pips;
// Profit trailing (on close)
Profit Trailing by 222 pips;
// Stop trailing (on close)
Move Stop to (Close(1) + (0.5) * BBWidthRatio(20, 2.0))) on bar close;
}
-- Short entry
if ShortEntryCondition is true {
if No position is open then Sell at Ichimoku(6, 18, 38, Kijun-sen) + (-0.4 * ATR(86)) Limit;
Stop/Limit order expires after 34 bars.
Stop Loss = 190 pips;
Profit Target = (0.74 * ATR(87)) pips;
}
====================================================================
== Exit orders
====================================================================
-- Long exit
if MarketPosition is Long {
if (Bars Since Entry >= 33) {
Close position at market;
}
}
Principi di funzionamento
Evoluzione genetica in 3 parti
Normalmente in ottimizzazione, viene usato il metodo In sample + Out of sample, e quindi
anche in evoluzione genetica.
Con l’approccio in 3 parti, possiamo dividere i dati In Sample in 2 parti, così abbiamo nel
totale 3 parti:
In Sample Training (IS Training) questa parte viene utilizzata per l'evoluzione delle strategie.
La bontà della strategia è misurata su questa parte di dati, e le strategie con migliore
idoneità verranno scelte per produrre la prossima generazione.
In Sample Validation (IS Validation) questa parte viene utilizzato per confrontare le
prestazioni con la parte di Training. La bontà della strategia è misurata anche su questa
parte,ed è possibile riavviare l'evoluzione una volta che l'idoneità o le prestazioni iniziano a
ristagnare su dati di Validation, o se le prestazioni di strategia (utile netto, fattore di profitto,
ecc) in Validation non corrispondono con quelli di Training.
Out of Sample (OOS) questa terza parte di dati viene utilizzata per verificare la strategia sui
dati sconosciuti. Siccome usiamo i dati IS Validation per influenzare l'evoluzione, che non è
più un elemento "sconosciuto" di dati, dovremmo testare la strategia di nuovo, in OOS, cioè
nella «vera» parte di dati sconosciuta per verificarne le prestazioni in modo indipendente.
Principi di funzionamento
Evoluzione genetica in 3 parti
Se si sceglie una strategia nel databank e guadiamo l’equity, si può vedere come si è diviso
in tre parti e le prestazioni in ciascuna di esse. In questo esempio la strategia performa
negativamente nella parte IS Validation.
Principi di funzionamento
Evoluzione genetica in 3 parti
Una strategia migliore dovrebbe essere più simile a nell'esempio qui sotto, in cui tutte
le tre parti hanno più o meno le stesse prestazioni (visibile dalla linea rossa). Questa
strategia non è ancora perfetta (dradown troppo elvato).
All’interno di SQ troveremo tutte le impostazioni di configurazione (Genetic Options)
Funzionalità
Blocchi supportati
SQ attualmente supporta i seguenti componenti (blocchi) per costruire le regole di
entrata e uscita:
Indicators: Simple Moving Average - Exponential Moving Average - Weighted Moving Average - Commodity Channel Index (CCI) Relative Strength Index (RSI) - Stochastic –MACD - Bollinger Bands - Qualitative Quantitative Estimation (QQE) - Triple Exponential
Moving Average - Custom Indicators -Average Directional Movement -Index (ADX) - Average True Range (ATR) - Momentum Williams % Range - True Range - Price Difference – Highest, Lowest - Keltner Channel - Parabolic SAR - Ichimoku
Price Values: Open – High - Open Daily - High Daily - Heiken Ashi Open - Heiken Ashi High - Today Open - Pivots - Low - Close - Low
Daily- Close Daily - Heiken Ashi Low -Heiken Ashi Close - This Bar Open
Candle Patterns: Doji – Hammer – Bullish - Engulfing - Shooting Star - Dark Cloud Cover- Piercing Line - Bearish Engulfing
Operators: Greater – Lower - Crosses Above - Crosses Below – And - Or - Addition (+) - Subtraction (-) - Multiplication (*) - Equals Not Equals - Closes Above
Time Values Hour - Minute - Day of Week
Order Types Enter at Market - Enter/Reverse at Market -Enter at Stop - Enter at Limit
Exit Types Stop Loss - Exit After X Bars - Exit Rule (Price + Operators + Indicators, ...) - Profit Target - Move Stop Loss to Break-even
- Stop Trailing Profit Trailing .
Strategy Quant offre un’ulteriore flessibilità della costruzione di blocchi con indicatori
personalizzati, con la stessa procedura di inserimento di EAWizard
Work Flow
WORK FLOW
1. Configurare i dati per backtest
È possibile utilizzare le serie storiche che sono nel programma o anche di importare i propri dati in formato
MetaTrader. Quindi impostare il periodo che si desidera utilizzare. Se si utilizza la modalità evoluzione genetica
è necessario suddividere i dati in InSample e OutOfSample. È inoltre possibile utilizzare i dati aggiuntivi o test di
robustezza per verificare automaticamente la robustezza strategia.
2. Configurare le impostazioni
Configurare tutti i tipi i di settaggio, impostazioni, indicatori e tipi di ordini da utilizzare per le regole di
negoziazione.
3. Configurare le opzioni di Ranking
Le opzioni di Ranking consentono di selezionare criteri di selezione strategia - cioè come vengono determinate
le migliori strategie. Si dovrebbero impostare le condizioni personalizzati per filtrare solo le strategie che
superano determinati criteri. Questo consente di chiudere tutte le strategie che hanno troppo poco profitto o
tredes, o troppo piccolo fattore di profitto, o DrawDown.
4. Run Build
Avviare il processo di elaborazione. A seconda delle impostazioni è possibile farlo funzionare diversi minuti,
diverse ore o anche più giorni. Più tempo verrà eseguito, più possibili strategie metterà alla prova. Le migliori di
saranno conservati nella banca dati.
Work Flow
WORK FLOW
5. Valutazione delle strategie generate
Controllare le strategie nel Databank. È possibile valutarle visivamente controllando il loro grafico di eqiaty, o
per il loro ordinamento nei parametri nel Databank. Scegli i migliori per passare alla fase successiva e salvarli in
un file di progetto StrategyQuant (.sqn) in modo da poter lavorare con loro più tardi.
La valutazione può consistere anche nel sottoporre nuovamente le strategie in test cambiando cross e / o tempi
aggiuntivi, o con differenti spread o slippage e confrontando i risultati. È inoltre necessario eseguire test di
robustezza.
L'obiettivo della valutazione della strategia è quello di trovare strategie robuste - che significa che lavorano in
condizioni diverse e non si rompono quando c'è un piccolo cambiamento nei parametri o dati sui prezzi oppure
perdere alcuni trades.
6. Migliorare la strategia
Si può cercare di migliorare la strategia in Improve Strategie. Si può cercare di applicare diverse combinazioni di
regole di uscita o aggiuntive condizioni di entrata, alla ricerca per migliorare le prestazioni.
Dopo il miglioramento si deve ancora eseguire un test di robustezza per assicurarsi che non ha perso la sua
robustezza.
7. Ottimizzare la strategia
È possibile eseguire una semplice ottimizzazione per trovare una migliore combinazione di parametri di input
della vostra strategia. È anche possibile eseguire una Walk Forward Analisys per scoprire se la strategia
trarrebbe beneficio da riottimizzazione periodica. Come ultimo passo, è possibile eseguire una Walk Forward
Matrix Analisys per determinare il periodo migliore riottimizzazione.
SQ Home
STRATEGY QUANT - HOME
SQ Home
DATA MANAGER
SQ Home
DATA MANAGER
Work Flow
BUILT STRATEGIES
Il cuore del programma. Qui si possono generare nuove strategie di trading utilizzando diverse opzioni di
configurazione e di blocchi costruttivi.
Le strategie risultanti devono essere salvati in un file StrategyQuant (.str) in modo da poter lavorare con loro
più tardi.
Modalità di compilazione disponibili:
EVOLUZIONE GENETICA
StrategyQuant prima genera una popolazione iniziale di candidati casuali (utilizzando la modalità casuale
generazione) e quindi utilizza processo evoluzione genetica di evolvere la popolazione e produrre sempre
migliori candidati con ogni generazione.
Il processo termina quando viene raggiunto il numero predefinito di generazioni o quando non c'è un ulteriore
miglioramento.
Pro:
•
In teoria dovrebbe portare a strategie migliore rispetto alla generazione casuale iniziale
•
Ciò significa che le già buone strategie nella prima generazione può essere ulteriormente migliorata
•
Ricerca di strategia proficua in migliaia di miliardi di combinazioni possibili può essere più efficace con il
potere dell'evoluzione
Contro:
•
Evoluzione può essere più lenta
•
Talvolta l'evoluzione può portare alla fine morto, così la generazione dovrebbe essere guardato
•
Il gruppo di strategie generata è limitata dalla dimensione della popolazione
Work Flow
BUILT STRATEGIES
GENERAZIONE RANDOM
In questa modalità StrategyQuant genera continuamente e sperimenta nuove strategie casuali, una dopo
l'altra, finché non viene interrotta manualmente. I candidati migliori (sulla base di criteri predefiniti) sono
memorizzati in Databank modo da poterli rivedere in un secondo momento.
Pro:
•
più veloce e più semplice di evoluzione genetica
•
verrà eseguito fino a quando non viene arrestato, quindi se si lascia correre per un paio di giorni, può
generare e valutare milioni di strategie
Contro:
•
Una volta generate le strategie, non sono ulteriormente migliorate.