Questa è la fonte di una funzione per trovare le strategie miste ottimali per un gioco a somma zero tra due individui, tenendo conto della minimizzazione dei costi per il giocatore di fila (i valori positivi nella matrice di payoff sono vittorie per il giocatore di fila e perdite per il giocatore di colonna). Il codice sorgente funziona. Controllato, nessuna mina.
public double[] getData(double[][] a) { int m = a. length; int n = a[0]. length; double[] p = new double[ m]; double[] q = new double[ n]; double[] x = new double[ m]; double[] y = new double[ n]; int r = rand. nextInt( m); int c = 0; for (int t = 0; t < 100; t++) { System. out. print("Progress: " + t + "% \r"); for (int u = 0; u < 10000; u++) { for (int j = 0; j < n; j++) { y[ j] = y[ j] + a[ r][ j]; } c = 0; for (int j = 1; j < n; j++) { if (( y[ j] == y[ c]) && rand. nextBoolean()) { c = j; } if ( y[ j] > y[ c]) { c = j; } } q[ c] = q[ c] + 1 d; for (int i = 0; i < m; i++) { x[ i] = x[ i] + a[ i][ c]; } r = 0; for (int i = 1; i < m; i++) { if (( x[ i] == x[ r]) && rand. nextBoolean()) { r = i; } if ( x[ i] < x[ r]) { r = i; } } p[ r] = p[ r] + 1 d; } } System. out. println("Progress: 100%"); for (int i = 0; i < n; i++) { q[ i] = q[ i] / 1000000 d; } double ep = 0 d; for (int i = 0; i < m; i++) { double result = 0; for (int j = 0; j < n; j++) { result = result + a[ i][ j] * q[ j] * p[ i] / 1000000 d; } ep = ep + result; } System. out. println("Expected Payoff = " + ep); return q; }
Chiunque cerchi di costruire un modello di mercato in base al principio di massima approssimazione del modello a una certa parte delle serie temporali dello stesso mercato si mette nei guai.
È difficile non essere d'accordo.
Riempiamo con le stesse differenze dei prezzi di apertura un array di numeri dove la barra orizzontale sarà il tempo della sessione - le singole barre dall'inizio della sessione, e la barra verticale - le sessioni stesse, cioè le date del calendario. Abbiamo così ottenuto una matrice di pagamento. Se lo risolviamo per il giocatore per colonne, otterremo una soluzione al nostro problema, cioè a che ora e con quale volume dovremmo entrare in una posizione lunga. Come menzionato sopra, questa sarà la peggiore stima della situazione per aspettativa matematica - il prezzo del gioco.
Grande! Ora passiamo ad altri calcoli e regolazioni.
Solo chi dice che le "quotazioni a 15 giorni" riassunte nella matrice sono la strategia di mercato ottimale, e non un'altra, ma perversa, sezione della serie temporale?
Tanto più che la natura, scusate il mercato, non deve aderire a questa matrice...
Mi ricorda la poesia sul culo e il suo amato cane...
Lo tsutzik ha una gran voglia di carne. ;)
Morale della favola: il giardiniere non ha capito il nuovo chip "ottimizzazione al volo".
Spiega le differenze rispetto ai metodi di montaggio convenzionali, per favore.
A quanto pare. Supponendo che il mercato abbia questa strategia ottimale. Personalmente preferisco l'analogia di giocare con la natura, dove la natura non costruisce strategie significative.
Provato. Non si adatta. Poiché in "natura" si presuppone consapevolmente una totale assenza di qualsiasi tipo di strategia. Non resta che scegliere uno dei tanti criteri, che può risultare non essere nemmeno vicino al mercato.
Quindi è meglio attenersi all'opinione che il mercato non è una "natura" stupida che fa quello che vuole, ma è più efficiente di quanto si possa pensare. Quindi è meglio fare un calcolo considerando che cercherà di imbrogliare il commerciante e lo farà nel modo più efficace.
Come dice uno dei miei amici (anche lui commerciante): nel nostro mestiere, è meglio essere sicuri che dispiaciuti.
Ma chi dice che le "quotazioni a 15 giorni" riassunte in una matrice siano una strategia di mercato ottimale, e non il segmento successivo, ma perverso, della serie temporale?
Tanto più che la natura, mi scuso, non è obbligata ad aderire a questa matrice...
...
Spiegare le differenze rispetto ai metodi di montaggio convenzionali, il fuoco.
Ci sono metodi di test di adattamento aggiuntivi per questo. Per esempio, nei test in avanti.
Il mio compito è quello di mostrare solo uno dei metodi di applicazione, e come usate questo materiale e lo modellate è un vostro problema personale. Il mio compito è di offrire, il tuo compito è di rifiutare. Quindi, se avete un'opinione personale su come evitare il montaggio, nessuno vieta di usarlo. E se non è così, non ci dovrebbe essere alcun giudizio.
Se non ti piace la storia dei 15 giorni, non c'è motivo per cui tu non possa prenderne di più o di meno.
Per questo è meglio attenersi all'opinione che il mercato non è una "natura" stupida che agisce come meglio crede, ma è più efficiente di quanto si possa pensare. E quindi, è meglio fare un calcolo basato sul fatto che cercherà di superare in astuzia il trader e farlo nel modo più efficace.
Allora forse dovremmo risolvere il problema di identificare la presunta strategia ottimale di un insieme di trader sui dati attuali. poi trovare quella proverbiale strategia di mercato antagonista dei trader.
E poi verrà il nostro "ottimale rispetto a lei". ;)
Come giardiniere, non mi intendo molto di giochi, soprattutto se sono del tipo "io so che lui sa che io so...".
Allora forse si dovrebbe risolvere il problema di identificare la presunta strategia ottimale di un insieme di commercianti sulla base dei dati attuali. Poi trovare questa famigerata strategia di mercato antagonista in relazione ai commercianti.
e poi arriverà il nostro "ottimale in relazione ad esso". ;)
Come giardiniere, non mi intendo molto di giochi, soprattutto se sono del tipo "io so che lui sa che io so...".
Vi è stato detto che potete usare tutti i modelli che volete per i vostri scopi, cioè tutti i commercianti senza eccezione + modelli di intervento di emergenza + azioni dei governatori delle banche centrali + azioni dei governi + .... + terremoti + possibili effetti dell'invasione aliena, ecc. Cioè, cosa vi impedisce di modellare più di tutti i commercianti, se avete davvero risorse di calcolo illimitate per tenere conto di tutto e di più?
Ma questo thread dovrebbe discutere il modello proposto dal topicstater, e non idee diverse da tutti i tipi di generatori di sciocchezze.
Come giardiniere, non so molto di giochi, soprattutto se sono come "so che lui sa che io so..."
Avete sempre qualche buon consigliere, che sa tutto come un maiale nelle arance.
per i tuoi scopi personali puoi usare qualsiasi modello tu voglia, ... + i possibili effetti di un'invasione aliena ecc. fino al punto di perdere il polso.
Ma questo thread dovrebbe discutere il modello proposto dal topikstater, non le varie idee di tutti i tipi di divagatori.
Grazie per essere costruttivo nel gioco della scienza e dei numeri.
Domande rimosse.
Sono onorato.
Solo un promemoria:
Due giocatori T-rader:) e B-time:) giocano un gioco basato sul lancio di una moneta. I giocatori contemporaneamente e indipendentemente l'uno dall'altro scelgono cresta (G - vendere - prezzo giù) o croce (P - comprare - prezzo su) .
Se i risultati di due lanci di moneta sono uguali (cioè GH o RR), il giocatore T riceve un dollaro dal giocatore B.
Altrimenti il giocatore T paga un dollaro al giocatore B.
La seguente matrice dei pagamenti al giocatore T mostra i valori degli elementi minimi delle righe e gli elementi massimi delle colonne corrispondenti alle strategie
di entrambi i giocatori.
| BP |
| ||||
---|---|---|---|---|---|---|
TG | 1 | -1 | -1 | |||
TR | -1 | 1 | -1 | |||
Massimi della colonna | 1 | 1 |
I valori massimi e minimi (prezzi) per questo gioco sono rispettivamente 1$ e 1$. Poiché questi valori non sono uguali tra loro, il gioco
non ha soluzione in strategie pure.
In particolare, se il giocatore T usa la strategia TG, il giocatore B sceglierà la strategia BP per ottenere un dollaro dal giocatore T.
Se questo accade, il giocatore T può passare alla strategia TP per cambiare il risultato del gioco e ottenere un dollaro dal giocatore B.
La tentazione costante per ogni giocatore di passare a una strategia diversa indica che una soluzione di strategia pura è inaccettabile.
Invece, entrambi i giocatori devono usare una combinazione casuale appropriata delle loro strategie.
Moulin E. Teoria dei giochi con esempi di economia matematica. M.: Mondo,
va notato che la decisione a strategia mista presuppone che ci siano probabilità che il mercato applichi una o un'altra strategia.
Grazie per essere costruttivo nella scienza.
Domande rimosse.
Sono onorato.
Non c'è di che. Siamo sempre contenti di fare una soffiata su qualche platessa.
Non c'è di che. Siamo sempre contenti di fare una soffiata su qualche platessa.
Grazie per i punteggi.
Basta che sia divertente. :)
Ci sono diversi modi per farlo, il più comune è:
1. Attraverso la programmazione lineare, cioè con il metodo Simplex. Il metodo non è molto buono perché può incepparsi (a seconda dell'implementazione) se la matrice di pagamento non ha soluzioni, e in alcuni casi se c'è un punto di sella nella matrice di pagamento o nessuna soluzione (a seconda dell'implementazione).
2. metodo iterativo. Ad ogni passo del metodo iterativo, si raggiunge la convergenza ad una delle soluzioni potenziali della matrice di pagamento. Il punto è che se il passo successivo è ambiguo, la scelta viene fatta da un generatore di numeri casuali. Pertanto, il metodo può produrre soluzioni diverse quando si ricomputa la stessa matrice di pagamento. Se non ci sono soluzioni, o il prezzo del gioco è zero, allora l'aspettativa di convergenza tenderà a zero.
Non si può semplificare la cosa guardando solo una parte degli scambi che soddisfano certe condizioni, o scartando una parte degli scambi?
Supponiamo di avere un sistema intraday con molti scambi. Lasciamo le operazioni lunghe che hanno avuto luogo in una candela giornaliera ribassista e quelle corte in modo corrispondente. Può essere non solo ribassista, ma le 50 operazioni più ribassiste della storia del commercio e così via. È possibile pensare a molti criteri di filtraggio. In realtà, è solo una selezione delle situazioni peggiori per un trader - una risposta asimmetrica condizionata (:)) del mercato.
Può essere il contrario: si possono cercare le migliori strategie non sull'intera storia, ma solo sulle parti più sfavorevoli, secondo alcuni criteri, della storia per long e short.
Non si può semplificare questo considerando solo una parte degli scambi che soddisfano certe condizioni, o scartando una parte degli scambi?
Supponiamo di avere un sistema intraday con molte operazioni. Lasciamo le operazioni lunghe che hanno avuto luogo su una candela giornaliera ribassista e le operazioni corte di conseguenza. Può essere non solo ribassista, ma le 50 operazioni più ribassiste della storia del commercio e così via. È possibile pensare a molti criteri di filtraggio. In realtà, è solo una selezione delle situazioni peggiori per un trader - una risposta asimmetrica condizionata (:)) del mercato.
Si può fare il contrario: cercare le migliori strategie non sull'intera storia, ma solo sui periodi storici più sfavorevoli, secondo certi criteri, per i long e i short.
In sostanza, la soluzione del gioco è la più sfavorevole, secondo determinati criteri, delle parti della storia, poiché quando si seleziona una strategia per il mercato, come ho detto prima, le sessioni in cui un trader potrebbe ottenere un profitto saranno escluse o addirittura eliminate dalla scelta.
Per quanto riguarda le strategie miste per short e long, al fine di cercare i tempi più appropriati per le posizioni long e short, è fattibile. Per esempio, se eseguiamo una ricerca di strategie solo per le posizioni lunghe, allora proprio questa strategia consiglierebbe a un trader di aprire con volume zero a certe ore. Cioè, è meglio non comprare in questi momenti. Sarà possibile cambiare il segno per tutti i numeri nelle colonne della matrice salariale corrispondenti a tali ore, il che significherebbe essenzialmente considerare le posizioni corte. Se la soluzione risulta essere valori non nulli, sarà possibile cortocircuitare. La cosa più importante, come ho detto, è ottenere un gioco di prezzo positivo per il trader.
Grazie per l'idea suggerita di strategie miste per short e long!
- App di trading gratuite
- Oltre 8.000 segnali per il copy trading
- Notizie economiche per esplorare i mercati finanziari
Accetti la politica del sito e le condizioni d’uso
È noto che i mercati non sono stazionari. È molto facile dimostrarlo: prendiamo un modello di mercato per qualche strumento finanziario e lo adattiamo a una certa sezione di dati storici, approssimandolo il più possibile (approssimazione). Otteniamo un estremo di una differenza tra i dati storici e il nostro modello - il residuo. Eseguiamo il modello ottenuto come descritto sopra su un'altra sezione di dati storici - fuori dal campione, dello stesso strumento di mercato. Otteniamo un risultato molto peggiore per quanto riguarda i residui.
I mercati cambiano costantemente - sono non stazionari.
Quindi, chiunque cerchi di costruire un modello di mercato secondo il principio della massima approssimazione del modello a una certa parte specifica della serie temporale dei dati dei prezzi di mercato si trova nei guai. Poiché tutti questi modelli di approssimazione sono calcolati sul fatto che i mercati non cambieranno, le loro caratteristiche statistiche e probabilistiche rimarranno le stesse. Ma sappiamo che questo non è vero. Ne consegue che tutti i tentativi di costruire i più accurati modelli (formule) di mercato basati su alcuni dati storici sono destinati a fallire, perché qualsiasi cambiamento del mercato su cui il modello è stato costruito lo renderebbe quanto meno impreciso.
Cosa fare in questo caso? Forse dovremmo rifiutare qualsiasi ottimizzazione - adeguamento ai dati storici?
La risposta è ovvia: per costruire un modello di mercato ottimale l'ottimizzazione dovrebbe essere fatta in modo tale che il modello di mercato sia dinamico piuttosto che statico. Cioè per dare al modello alcuni gradi di libertà.
Sembra che l'ultima affermazione sia banale. Sì. Ma guardate cosa si fa quando si costruiscono modelli di mercato, e noterete che una verità così banale non viene quasi mai usata.
È altrettanto ovvio che l'ottimizzazione dovrebbe essere effettuata utilizzando algoritmi di ricerca della soluzione ottimale per il gioco di due persone (cioè il sistema di trading del commerciante e del mercato) con strategie a somma zero e miste (libertà di scelta della strategia per entrambi i giocatori) utilizzando matrici di pagamento. Perché in questo caso abbiamo:
1. Un modello consapevolmente dinamico del secondo giocatore, il mercato, assumendo gradi di libertà per lui di scegliere la sua strategia - una strategia mista.2. Apparato matematico e algoritmico già pronto per procedere immediatamente. L'apparato matematico per il gioco di due persone con strategie miste e a somma zero è completo, cioè non contiene alcun "punto bianco", e quindi si ottiene o la soluzione, o la famigerata risposta che non esiste soluzione.
Ma, soprattutto, la soluzione della matrice di pagamento per il gioco a somma zero di due persone ci dà non una ma due soluzioni ottimali che minimizzano i costi di ogni giocatore: una per la strategia di mercato potenziale, l'altra per il sistema di trading del commerciante.
E poiché la strategia ottimale nella risoluzione della matrice di pagamento è la minimizzazione dei costi, cioè la peggiore opzione dell'aspettativa matematica di profitto che un giocatore può ottenere seguendo rigorosamente la sua strategia, allora a causa della non stazionarietà del mercato, la probabilità che il mercato non segua la propria strategia ottimale e quindi necessariamente ridurre la parte di costo del sistema di trading del trader, mentre aumenta la parte di profitto, se questo stesso sistema di trading seguirà strettamente la strategia ottimale con
Non andrò oltre a descrivere alcuni dettagli matematici del gioco a somma zero per due persone per strategie miste e le sue caratteristiche speciali, poiché tutte le informazioni sono aperte e disponibili su Internet, come questo link: Strategie miste per giochi a somma zero per due persone
Matrice di pagamento
La matrice di pagamento per un gioco a somma zero per due persone è uno spazio numerico bidimensionale. Il punto è che l'aspettativa per una riga o una colonna di questa stessa matrice è calcolata tenendo conto delle strategie ottimali di entrambi i giocatori. L'aspettativa totale (finale) dell'intero gioco, cioè per tutte le righe o per tutte le colonne tenendo conto delle strategie ottimali di entrambi i giocatori è chiamata il prezzo del gioco.
Pertanto, la matrice di pagamento è più spesso riempita con valori di pagamento. In sostanza, la matrice di pagamento è quindi le regole del gioco. Se il numero è positivo, il primo giocatore paga al secondo un importo pari al valore specificato nella cella. Se è negativo, allora il secondo giocatore paga il primo giocatore nella quantità assoluta del valore specificato.
Così, le matrici di pagamento permettono di modellare un insieme di giochi, i cui risultati dipendono dalla scelta dei giocatori di uno o un altro risultato del gioco, a condizione che nessuno di loro conosca in anticipo la scelta del secondo giocatore. Rispetto al trading abbiamo un'analogia, dato che il commerciante non sa in anticipo in che direzione andrà il prezzo, e il mercato non sa in che direzione un certo commerciante aprirà una posizione, a meno che il commerciante non sia un insider (detentore di una parte significativa di beni nel mercato con cui può influenzare notevolmente le quotazioni).
Esempio pratico
Supponiamo di negoziare azioni alla Borsa di Chicago. La nostra strategia è di comprare e tenere il titolo per un certo periodo di tempo. Il problema è formulato come segue: in quale momento della sessione e con quale volume in lotti è più redditizio per noi prendere una posizione lunga?
La sessione di trading dura 7 ore e 30 minuti. Così, si scopre che l'intera sessione può essere divisa in 15 parti uguali di 30 minuti ciascuna. Pertanto, l'analisi sarà effettuata sull'orizzonte temporale M30.
Prendiamo le quotazioni degli ultimi 15 giorni - tre settimane complete di trading. Supponiamo che il risultato di ogni periodo sia la differenza tra il prezzo aperto di una barra e il prezzo aperto della barra precedente, cioè per la barra numero n nei dati storici sarà Open[n] - Open[n + 1]. Il tempo è basato sul numero di barra n + 1
Riempiamo proprio con queste differenze nei prezzi di apertura un array di numeri dove la barra orizzontale è il tempo della sessione - le singole barre dall'inizio della sessione, e la barra verticale è la sessione stessa, cioè le date del calendario. Abbiamo così ottenuto una matrice di pagamento. Se lo risolviamo per il giocatore per colonne, otterremo una soluzione al nostro problema, cioè a che ora e con quale volume dovremmo entrare in una posizione lunga. Come menzionato sopra, questa sarà la peggiore stima della situazione per aspettativa matematica - il prezzo del gioco.
Dato che sappiamo cosa significa la decisione per il sistema di trading del trader, allora cosa significa esattamente la decisione in relazione al mercato, cioè il giocatore riceve anche alcuni valori lungo le linee? Proprio questi valori sono i più redditizi per il mercato e svantaggiosi per il trader che aderisce a una strategia rialzista, intervalli per le singole sessioni di trading. Cioè, quando si sceglie una soluzione di matrice di pagamento in relazione al mercato, le gamme più grandi sono state scelte per i giorni con una tendenza ribassista, mentre per le barre con una tendenza rialzista. Di conseguenza, c'è un compromesso per il mercato e il trader, secondo il quale, se il trader si attiene alla strategia ottimale, nessun cambiamento nel range della sessione può peggiorare il payoff atteso.
Nota: La linea di fondo è che quando si sceglie una strategia per il mercato, se la strategia di un trader è rialzista, allora i range per i giorni ribassisti saranno aumentati, e per i giorni rialzisti, o rimossi dalla considerazione del tutto (range zero). Cioè, alla fine, se i dati storici esaminati hanno mostrato un chiaro movimento di prezzo rialzista, allora nel ricalcolo, tenendo conto degli intervalli di diminuzione-aumento delle singole sessioni per la strategia di mercato, la previsione sarà fatta per una tendenza ribassista. Cioè, la strategia del trader, in questo caso, si ridurrà a cercare le candele rialziste più frequenti durante le sessioni ribassiste. Ma non preoccupatevi, se tali candele sono sufficientemente probabili, troveremo sicuramente una bella soluzione.
Per essere più sicuri dobbiamo calcolare l'aspettativa matematica, che è il prezzo del gioco tenendo conto di entrambe le strategie. Se è positivo, è quello che ti serve, quindi la stima peggiore è un profitto garantito.
Ma cosa fare se l'aspettativa matematica che tiene conto delle strategie del trader e del mercato risulta essere negativa? Alcune persone che hanno letto cattivi libri possono sostenere che la strategia del trader dovrebbe rimanere la stessa in termini di volumi, ma invece di comprare e tenere il titolo, dovrebbero vendere - inversione della strategia. Ma questo non dovrebbe essere fatto. Perché? Perché dopo aver calcolato la soluzione ottimale per la strategia toro e averla cambiata in una strategia ribassista, la valutazione minima risultante, sarà la massima. Può essere positivo, ma sarà il massimo, come se lo avessimo ottenuto nel nostro ottimizzatore terminale con il fitting terminale. E poiché il mercato non è stazionario, è improbabile che una tale strategia di inversione tenga al massimo calcolato. Molto probabilmente, diventerà di nuovo negativo. Dopo tutto, secondo la strategia prima del flip, i maggiori volumi di acquisto erano su candele con una tendenza rialzista prevalente. E ora, se iniziamo a fare trading con umori ribassisti su candele rialziste, le spese aumenteranno e di conseguenza, la probabilità di entrare in un'aspettativa matematica negativa aumenterà.
Sì, in caso di payoff atteso negativo e considerando le strategie ottenute, dovremo effettivamente passare dalla strategia rialzista a quella ribassista. Ma così facendo, dovremo ricalcolare l'intera matrice di pagamento non per colonne per un giocatore, ma per righe per un giocatore. Oppure cambiate i segni in tutte le celle della stessa matrice e poi potete ricalcolare le colonne per il giocatore, cioè non cambiate l'algoritmo. Ora la strategia cambierà e anche l'aspettativa cambierà non solo di segno ma anche di valore.
Come ottenere soluzioni per la matrice di pagamento già preparata?
Ci sono diversi modi, tra i quali i più comuni sono:
1. Attraverso la programmazione lineare, cioè il metodo Simplex. Il metodo non è molto buono perché può incepparsi (a seconda dell'implementazione) se la matrice di pagamento non ha soluzioni, e in alcuni casi se c'è un punto di sella nella matrice di pagamento o nessuna soluzione (a seconda dell'implementazione).
2. metodo iterativo. Ad ogni passo del metodo iterativo, si raggiunge la convergenza verso una delle soluzioni potenziali della matrice di pagamento. Il punto è che se il passo successivo è ambiguo, la scelta viene fatta da un generatore di numeri casuali. Pertanto, il metodo può produrre soluzioni diverse quando si ricomputa la stessa matrice di pagamento. Se non ci sono soluzioni, o il prezzo del gioco è zero, allora l'aspettativa di convergenza tenderà a zero.
Personalmente uso il metodo iterativo, l'algoritmo è mostrato qui sotto. Il listato è in Java, il che lo rende facile da convertire in C usando utility speciali o ricompilare in codici macchina usando GCJ. Teoricamente, tutto potrebbe essere scritto in MQL4 o MQL5 in una volta sola, ma la bassa velocità di MQL4 e i bug in MQL5 non permettono di usare questo algoritmo nei suddetti linguaggi di programmazione.
Una matrice di pagamento in forma di matrice è data come input alla funzione - matrice
L'output è un array di numeri come la strategia del giocatore per colonne. Se diventa necessario ricalcolare la strategia per un giocatore per righe, il segno per tutti i valori in tutte le celle deve essere cambiato nella matrice di pagamento.La funzione emette alla console il valore attuale dell'algoritmo passato (progresso) come percentuale e l'aspettativa matematica, tenendo conto delle strategie ottimali per il giocatore per righe e colonne.