Home Page di InvestireOggi
Le ultime
NEWS
FINANZIARIE
Quotazioni e Grafici E.o.D. Real Time
FTSE Mib
13.057
-50.5

Rispondi
 
Strumenti discussione Cerca in questa discussione
Vecchio 16-11-2011, 11:51   #1 (permalink)
Utente Senior
 
L'avatar di Skarso
 
Data registrazione: Jun 2009
Località: Neanderthal
Messaggi: 398
TS costruiti con metodi non convenzionali

apro un nuovo thread in quanto quello su FI è stato scorrettamente inquinato con grafici voodoo ed argomenti OT da un personaggio molto invasivo . . .
che “minkia cccentrrano” i grafici voodoo con la logica fuzzy ? nulla proprio nulla . . .
inoltre personalmente non capisco e quindi detesto questi grafici ed i programmi “pacco” che li generano perché – imo - se talvolta spiegano il passato cioè quello che è successo prima, quasi sempre toppano quando si vuole prevedere il futuro . . .
il problema – imo – è che i grafici vanno bene x dati ed eventi deterministici mentre i dati di borsa sono a volte caotici, quasi sempre pieni di noise, direi “casinisti” . . .
x rispondere alla domanda di reef
“al verificarsi delle condizioni, si prendono le uscite yield2 (16.00-Close, ma perchè queste non sono normalizzate?) in corrispondenza delle colonne R-V, cercando il rapporto causa-effetto nei numeri.”
dirò che occorre dare dei valori alle 5 regole corrispondenti alle 5 suddivisioni del rendimento del titolo e ciò viene fatto con una media esponenziale attribuendo a ciascuna regola ogni volta la porzione di risultato ( yield2 ) di sua spettanza

passiamo ora ad esaminare un altro metodo “non convenzionale” di costruire TS, secondo il principio dei Nearest Neighbour ( vicini + vicini ) utilizzato nel file PROVA-FI-NN disponibile come al solito su Dropbox ( x molti ma non x tutti . . . )
il metodo è abbastanza intuitivo: l’ idea di base è che stati simili nel breve periodo avranno successori ( cioè esiti ) simili
poiché i valori dei successori di stati simili sono noti , questi possono essere utilizzati per predire il valore futuro di stati correnti simili
un esempio in linguaggio Basic, che è simile all’ inglese parlato, chiarirà forse meglio ( o peggio ? . . . )
For k = 1 to Last
FindNN Input1(), k
R_pevis( 3 + k ) = bestx
Next k

Sub FindNN(fx() As Double, k As Integer)
Dim i As Integer
Dim j As Integer
Dim m As Integer
Dim dist As Double
Dim cumx As Double

'
Ultimo = k: Primo = 1
'
BW = 0
For m = 1 To 10
BW = BW + 0.05
j = 0
For i = Primo To Ultimo - 1
If Abs(Input1(k) - Input1(i)) < BW Then
j = j + 1
dist = (1 - Abs(Input1(k) - Input1(i)) / BW)
If j = 1 Then
cumx = dist * Input2(i)
Else
cumx = (1 - Beta * dist) * cumx + Beta * dist * Input2(i)
End If
End If
Next i
If j >= Nvic Then Exit For
Next m
Bestx = cumx
Best0 = j
'
End Sub
Skarso non è connesso   Rispondi citando
Avviso pubblicitario - i seguenti Banner Pubblicitari permettono al sito di offrirvi il consueto, alto standard qualitativo.
 
Vecchio 16-11-2011, 12:09   #2 (permalink)
Utente Senior
 
L'avatar di Skarso
 
Data registrazione: Jun 2009
Località: Neanderthal
Messaggi: 398
scusate, ho omesso di dire che la “similitudine” tra stati ( in questo caso i valori di Input1 ) si ricava tramite una misura di “distanza”
vi sono vari metodi per calcolare questa distanza, nel programma ne ho utilizzato uno molto semplice, noto come mappa triangolare o tent map la cui equazione è
dist = 1 - | x1 – x2 |/ v
essendo v l’ intervallo ammesso di variazione
è anche molto usata la funzione pseudo – normale
dist = exp( 0.5*( - (( x – media )/sigma) ^2 )
Skarso non è connesso   Rispondi citando
Vecchio 16-11-2011, 12:14   #3 (permalink)
...
 
L'avatar di reef
 
Data registrazione: Jun 2003
Messaggi: 3,223
Citazione:
Originalmente inviato da Skarso Visualizza messaggio
il metodo è abbastanza intuitivo: l’ idea di base è che stati simili nel breve periodo avranno successori ( cioè esiti ) simili
poiché i valori dei successori di stati simili sono noti , questi possono essere utilizzati per predire il valore futuro di stati correnti simili
Ottima partenza...

Citazione:
Originalmente inviato da Skarso Visualizza messaggio
un esempio in linguaggio Basic, che è simile all’ inglese parlato, chiarirà forse meglio ( o peggio ? . . . )
Magari così è più leggibile?

Codice:
For k = 1 to Last
	FindNN Input1(), k
	R_pevis( 3 + k ) = bestx
Next k
‘
Sub FindNN(fx() As Double, k As Integer)
	Dim i As Integer
	Dim j As Integer
	Dim m As Integer
	Dim dist As Double
	Dim cumx As Double

'
	Ultimo = k: Primo = 1
'
	BW = 0
	For m = 1 To 10
		BW = BW + 0.05
		j = 0
		For i = Primo To Ultimo - 1
			If Abs(Input1(k) - Input1(i)) < BW Then
				j = j + 1
				dist = (1 - Abs(Input1(k) - Input1(i)) / BW)
				If j = 1 Then
					cumx = dist * Input2(i)
				Else
					cumx = (1 - Beta * dist) * cumx + Beta * dist * Input2(i)
				End If
			End If
		Next i
		If j >= Nvic Then Exit For
	Next m
	Bestx = cumx
	Best0 = j
'
End Sub
reef non è connesso   Rispondi citando
Vecchio 16-11-2011, 12:45   #4 (permalink)
f4f
翠鸟科
 
L'avatar di f4f
 
Data registrazione: Oct 2003
Località: taglialegna da CiubeBBa;at Tokyo as Zenigata;capt Orr;lednàcèk;Orazio;and miles to go before I sleep
Messaggi: 34,061
Citazione:
Originalmente inviato da Skarso Visualizza messaggio
apro un nuovo thread in quanto quello su FI è stato scorrettamente inquinato con grafici voodoo ed argomenti OT da un personaggio molto invasivo . . .
che “minkia cccentrrano” i grafici voodoo con la logica fuzzy ? nulla proprio nulla . . .
inoltre personalmente non capisco e quindi detesto questi grafici ed i programmi “pacco” che li generano perché – imo - se talvolta spiegano il passato cioè quello che è successo prima, quasi sempre toppano quando si vuole prevedere il futuro . . .
il problema – imo – è che i grafici vanno bene x dati ed eventi deterministici mentre i dati di borsa sono a volte caotici, quasi sempre pieni di noise, direi “casinisti” . . .
x rispondere alla domanda di reef
“al verificarsi delle condizioni, si prendono le uscite yield2 (16.00-Close, ma perchè queste non sono normalizzate?) in corrispondenza delle colonne R-V, cercando il rapporto causa-effetto nei numeri.”
dirò che occorre dare dei valori alle 5 regole corrispondenti alle 5 suddivisioni del rendimento del titolo e ciò viene fatto con una media esponenziale attribuendo a ciascuna regola ogni volta la porzione di risultato ( yield2 ) di sua spettanza

passiamo ora ad esaminare un altro metodo “non convenzionale” di costruire TS, secondo il principio dei Nearest Neighbour ( vicini + vicini ) utilizzato nel file PROVA-FI-NN disponibile come al solito su Dropbox ( x molti ma non x tutti . . . )
il metodo è abbastanza intuitivo: l’ idea di base è che stati simili nel breve periodo avranno successori ( cioè esiti ) simili
poiché i valori dei successori di stati simili sono noti , questi possono essere utilizzati per predire il valore futuro di stati correnti simili
un esempio in linguaggio Basic, che è simile all’ inglese parlato, chiarirà forse meglio ( o peggio ? . . . )
For k = 1 to Last
FindNN Input1(), k
R_pevis( 3 + k ) = bestx
Next k

Sub FindNN(fx() As Double, k As Integer)
Dim i As Integer
Dim j As Integer
Dim m As Integer
Dim dist As Double
Dim cumx As Double

'
Ultimo = k: Primo = 1
'
BW = 0
For m = 1 To 10
BW = BW + 0.05
j = 0
For i = Primo To Ultimo - 1
If Abs(Input1(k) - Input1(i)) < BW Then
j = j + 1
dist = (1 - Abs(Input1(k) - Input1(i)) / BW)
If j = 1 Then
cumx = dist * Input2(i)
Else
cumx = (1 - Beta * dist) * cumx + Beta * dist * Input2(i)
End If
End If
Next i
If j >= Nvic Then Exit For
Next m
Bestx = cumx
Best0 = j
'
End Sub

posso?

scusa l'ignoranza, ma ...
la variabile input2 come è definita ?
lo 0.05 nella definizione di BW da cosa deriva?


grazie
__________________
per aspera ad astra,
ma che fatica però
f4f non è connesso   Rispondi citando
Vecchio 16-11-2011, 13:04   #5 (permalink)
Utente Senior
 
L'avatar di Skarso
 
Data registrazione: Jun 2009
Località: Neanderthal
Messaggi: 398
Citazione:
Originalmente inviato da f4f Visualizza messaggio
posso?

scusa l'ignoranza, ma ...
la variabile input2 come è definita ?
lo 0.05 nella definizione di BW da cosa deriva?


grazie
domande + che legittime, debbo io scusarmi x la fretta e la conseguente poca chiarezza . . .
se guardi le dichiarazioni e le assegnazioni ( Sub Inizia ) Input2 è il rendimento successivo alle 16.00 fino alla close oppure a scelta alla open successiva
sono stati stabiliti come necessari 11 ( numero dispari intorno a 10 ) vicini - se si trovano – per calcolare la previsione come media esponenziale dei rendimenti + simili passati
BW è il campo di variazione x il calcolo della distanza che aumenta progressivamente a step di 0.05% quando non ci sono sufficienti vicini cioè quando i valori di Input1 sono + lontani dalla media
si poteva ovviamente anche scegliere un valore di step + fine ( es 0.01% ) ma 0.05 mi è sembrato un buon trade-off ( compromesso ) almeno così risulta dall' esperienza . . .
Skarso non è connesso   Rispondi citando
Vecchio 19-11-2011, 16:19   #6 (permalink)
Utente Senior
 
L'avatar di Skarso
 
Data registrazione: Jun 2009
Località: Neanderthal
Messaggi: 398
proviamo ora ad aggiungere un secondo predittore, il rendimento 16. 00 vs 15.30 del DJ ottenendo il file PROVA-FI-NN-2
come distanza tra 2 configurazioni ( giornate ) ”k” ed “i” scegliamo la cosiddetta “distanza euclidea”:
dist = Sqr( ( Input1( k ) – Input1( i ) )^2 + (Input2( k ) – Input2( i ) )^2 )
in pratica il Teorema di Pitagora che si studia alla scuola dell’ obbligo
se il valore dell’ intervallo di variabilità è BW per entrambe le coppie allora questo valore di distanza varierà tra un minimo = 0 ed un max = BW*Sqr( 2 )
però x i calcoli è + comodo indicare con 1 il valore della distanza minima ( punti coincidenti nel piano delle variabili Input1, Input2 ) e 0 quello distanza max ( punti posti negli estremi dell’ intervallo BW ) e di conseguenza la formula della distanza diviene:
dist = 1 - Sqr( ( Input1( k ) – Input1( i ) )^2 + (Input2( k ) – Input2( i ) )^2 )/( BW*Sqr( 2 ) )
nella subroutine FindNN che calcola la previsione, il loop for m = 1 to 20 fa sì che m e di conseguenza BW cresce quando ci sono nell’ intervallo pochi vicini il che accade generalmente quando i valori di Input1 e/o Input2 sono abbastanza alti
i risultati pur nel difficile periodo sembrano abbastanza soddisfacenti in termini di indici di performance:
trade positivi = 65% Omega = 2.243 MDD = - 4.36%
Codice:
Sub FindNN(fx() As Double, k As Integer)
    Dim i        As Integer
    Dim j        As Integer
    Dim m        As Integer
    Dim n        As Integer
    Dim dist     As Double
    Dim cumx     As Double
    '
    '
    ' Ultimo = giorno in esame x previsione
    ' Primo = giorno da cui iniziare
    ' BW = ampiezza banda di variazione ammessa x calcolo distanza
    ' cumx = variabile di comodo x accumulo media exp
    ' j = contatore vicini
    ' Input1(k) = rendimento del titolo nel giorno in esame
    ' Input2(k) = rendimento del DJIA nel giorno in esame
    ' Input1(i) = rendimento del titolo nel giorno i
    ' Input2(i) = rendimento del DJIA nel giorno i
    ' BW * Sqr(2) = distanza max relativ. a intervalli di ampiezza BW
    ' Nvic = numero di vicini desiderato
    ' Beta = fattore di smoothing
    '
    Ultimo = k: Primo = 1
    BW = 0
    For m = 1 To 20
        BW = BW + 0.05
        j = 0: cumx = 0
        For i = Primo To Ultimo - 1
            If Abs(Input1(k) - Input1(i)) < BW And Abs(Input2(k) - Input2(i)) < BW Then
                j = j + 1
                dist = 1 - Sqr((Input1(k) - Input1(i)) ^ 2 + (Input2(k) - Input2(i)) ^ 2) / (BW * Sqr(2))
                If j = 1 Then
                    cumx = dist * Yield2(i)
                Else
                    cumx = (1 - Beta * dist) * cumx + Beta * dist * Yield2(i)
                End If
            End If
        Next i
        If j >= Nvic Then Exit For
    Next m
    Bestx = cumx
    Best0 = j
    Best4 = BW
    '
End Sub
Skarso non è connesso   Rispondi citando
Vecchio 19-11-2011, 19:17   #7 (permalink)
f4f
翠鸟科
 
L'avatar di f4f
 
Data registrazione: Oct 2003
Località: taglialegna da CiubeBBa;at Tokyo as Zenigata;capt Orr;lednàcèk;Orazio;and miles to go before I sleep
Messaggi: 34,061
Citazione:
Originalmente inviato da Skarso Visualizza messaggio
proviamo ora ad aggiungere un secondo predittore, il rendimento 16. 00 vs 15.30 del DJ ottenendo il file PROVA-FI-NN-2
come distanza tra 2 configurazioni ( giornate ) ”k” ed “i” scegliamo la cosiddetta “distanza euclidea”:
dist = Sqr( ( Input1( k ) – Input1( i ) )^2 + (Input2( k ) – Input2( i ) )^2 )
in pratica il Teorema di Pitagora che si studia alla scuola dell’ obbligo
se il valore dell’ intervallo di variabilità è BW per entrambe le coppie allora questo valore di distanza varierà tra un minimo = 0 ed un max = BW*Sqr( 2 )
però x i calcoli è + comodo indicare con 1 il valore della distanza minima ( punti coincidenti nel piano delle variabili Input1, Input2 ) e 0 quello distanza max ( punti posti negli estremi dell’ intervallo BW ) e di conseguenza la formula della distanza diviene:
dist = 1 - Sqr( ( Input1( k ) – Input1( i ) )^2 + (Input2( k ) – Input2( i ) )^2 )/( BW*Sqr( 2 ) )
nella subroutine FindNN che calcola la previsione, il loop for m = 1 to 20 fa sì che m e di conseguenza BW cresce quando ci sono nell’ intervallo pochi vicini il che accade generalmente quando i valori di Input1 e/o Input2 sono abbastanza alti
i risultati pur nel difficile periodo sembrano abbastanza soddisfacenti in termini di indici di performance:
trade positivi = 65% Omega = 2.243 MDD = - 4.36%
Codice:
Sub FindNN(fx() As Double, k As Integer)
    Dim i        As Integer
    Dim j        As Integer
    Dim m        As Integer
    Dim n        As Integer
    Dim dist     As Double
    Dim cumx     As Double
    '
    '
    ' Ultimo = giorno in esame x previsione
    ' Primo = giorno da cui iniziare
    ' BW = ampiezza banda di variazione ammessa x calcolo distanza
    ' cumx = variabile di comodo x accumulo media exp
    ' j = contatore vicini
    ' Input1(k) = rendimento del titolo nel giorno in esame
    ' Input2(k) = rendimento del DJIA nel giorno in esame
    ' Input1(i) = rendimento del titolo nel giorno i
    ' Input2(i) = rendimento del DJIA nel giorno i
    ' BW * Sqr(2) = distanza max relativ. a intervalli di ampiezza BW
    ' Nvic = numero di vicini desiderato
    ' Beta = fattore di smoothing
    '
    Ultimo = k: Primo = 1
    BW = 0
    For m = 1 To 20
        BW = BW + 0.05
        j = 0: cumx = 0
        For i = Primo To Ultimo - 1
            If Abs(Input1(k) - Input1(i)) < BW And Abs(Input2(k) - Input2(i)) < BW Then
                j = j + 1
                dist = 1 - Sqr((Input1(k) - Input1(i)) ^ 2 + (Input2(k) - Input2(i)) ^ 2) / (BW * Sqr(2))
                If j = 1 Then
                    cumx = dist * Yield2(i)
                Else
                    cumx = (1 - Beta * dist) * cumx + Beta * dist * Yield2(i)
                End If
            End If
        Next i
        If j >= Nvic Then Exit For
    Next m
    Bestx = cumx
    Best0 = j
    Best4 = BW
    '
End Sub


eccellente
gran lavoro .... grazie
__________________
per aspera ad astra,
ma che fatica però
f4f non è connesso   Rispondi citando
Vecchio 21-11-2011, 10:20   #8 (permalink)
...
 
L'avatar di reef
 
Data registrazione: Jun 2003
Messaggi: 3,223
Ho qualche domanda sul codice. Anzitutto sarebbe eccellente se riuscissi, in qualche modo, a dare qualche riferimento di partenza a monte del codice, tipo un articolo, qualche formula... Francamente, dal codice non riesco a risalire banalmente a quel che ci sta dietro.

Nonostante ciò, ti sottopongo una richiesta di chiarimento, che magari sarà un'occasione di approfondimento.

Citazione:
Originalmente inviato da skarso
Codice:
	Ultimo = k: Primo = 1
'
	BW = 0
	For m = 1 To 10
		BW = BW + 0.05
		j = 0
		For i = Primo To Ultimo - 1
Prendi sempre in esame tutta la serie dati, non sarebbe meglio considerare una finestra di n elementi? Tipo:
Codice:
	Window=40 'il numero di elementi da considerare nell'ottimizzazione
	If Ultimo<Window w=Ultimo else w= Window
	For m = 1 To 10
		BW = BW + 0.05
		j = 0
		For i = Ultimo-w To Ultimo - 1
Il considerare tutta la serie comporta, inoltre, che pesi di più valori lontani a minore distanza (=BW), piuttosto che valori più vicini a distanza inferiore. Hai fatto delle prove in questo senso?

Grazie ancora per gli ottimi spunti

Ultima modifica di reef : 21-11-2011 alle ore 10:45.
reef non è connesso   Rispondi citando
Vecchio 21-11-2011, 11:30   #9 (permalink)
Utente Senior
 
L'avatar di Skarso
 
Data registrazione: Jun 2009
Località: Neanderthal
Messaggi: 398
Citazione:
Originalmente inviato da reef Visualizza messaggio
Ho qualche domanda sul codice. Anzitutto sarebbe eccellente se riuscissi, in qualche modo, a dare qualche riferimento di partenza a monte del codice, tipo un articolo, qualche formula... Francamente, dal codice non riesco a risalire banalmente a quel che ci sta dietro.

Nonostante ciò, ti sottopongo una richiesta di chiarimento, che magari sarà un'occasione di approfondimento.



Prendi sempre in esame tutta la serie dati, non sarebbe meglio considerare una finestra di n elementi? Tipo:
Codice:
    Window=40 'il numero di elementi da considerare nell'ottimizzazione
    If Ultimo<Window w=Ultimo else w= Window
    For m = 1 To 10
        BW = BW + 0.05
        j = 0
        For i = Ultimo-w To Ultimo - 1
Il considerare tutta la serie comporta, inoltre, che pesi di più valori lontani a minore distanza (=BW), piuttosto che valori più vicini a distanza inferiore. Hai fatto delle prove in questo senso?

Grazie ancora per gli ottimi spunti

il metodo dei ”nearest neighbour” rientra nella categoria dei metodi di “classificazione”, cercando con queste parole chiave credo tu possa trovare articoli sul web
questi metodi non parametrici che apprendono dai dati ( data in rules out ) non funzionano bene quando soffrono della cosiddetta “curse of dimensionality” cioè in pratica dell’ insufficienza di dati disponibili
di qui la scelta di considerare l’ intero data set anche se i dati + lontani nel tempo sono meno significativi
come soluzione si potrebbe pensare ad una pesatura dei dati secondo il tempo ma non ho fatto prove in tal senso
Skarso non è connesso   Rispondi citando
Vecchio 22-11-2011, 09:29   #10 (permalink)
...
 
L'avatar di reef
 
Data registrazione: Jun 2003
Messaggi: 3,223
Citazione:
Originalmente inviato da Skarso Visualizza messaggio
il metodo dei ”nearest neighbour” rientra nella categoria dei metodi di “classificazione”, cercando con queste parole chiave credo tu possa trovare articoli sul web
questi metodi non parametrici che apprendono dai dati ( data in rules out ) non funzionano bene quando soffrono della cosiddetta “curse of dimensionality” cioè in pratica dell’ insufficienza di dati disponibili
di qui la scelta di considerare l’ intero data set anche se i dati + lontani nel tempo sono meno significativi
come soluzione si potrebbe pensare ad una pesatura dei dati secondo il tempo ma non ho fatto prove in tal senso
Provo a fare un riepilogo da newbie. Vediamo cosa ho capito.
1. Per raggiungere un risultato positivo (gain alle 17.30), fisso un'orario X<17.30, orario al quale deciderò se e come procedere con l'acquisto di un titolo, sulla base di uno o più indicatori.
2. Nel primo dei due esempi l'indicatore è l'andamento del titolo dall'apertura all'orario X, diciamo G%
3. Per determinare la probabilità di guadagno, misuro la relazione causa-effetto in un set di dati, assegnando punteggi di "winning bet" al verificarsi di alcune condizioni, es. G%<A, G%<B, G%>C, G%>D. A,B,C,D sono soglie stabilite sulla base della distribuzione dei risultati.
4. Per dare robustezza al sistema, nel secondo esempio individuo una variabile esogena che influisce sull'andamento della scommessa (quindi ben correlata a quella sotto osservazione), valutando la relazione causa-effetto tra le due variabili (esogena e osservata).

Se fin qui va bene, poi procedo

Ultima modifica di reef : 22-11-2011 alle ore 09:31.
reef non è connesso   Rispondi citando
Rispondi

Segnalibri

« Discussione precedente | Nuova discussione »

Utenti attualmente attivi che stanno leggendo questa discussione: 1 (0 utenti e 1 ospiti)
 
Strumenti discussione Cerca in questa discussione
Cerca in questa discussione:

Ricerca avanzata

Regole messaggi
Tu non puoi inviare nuove discussioni
Tu non puoi replicare
Tu non puoi inviare allegati
Tu non puoi modificare i tuoi messaggi

Il codice BB è Attivato
Le faccine sono Attivato
Il codice [IMG] è Attivato
Il codice HTML è Disattivato
Trackbacks are Attivato
Pingbacks are Attivato
Refbacks are Disattivato


Discussioni simili
Discussione Autore discussione Forum Risposte Ultimo messaggio
Come fare la miscela olio benzina sulla Vespa: tecniche, metodi, analisi funzionali. patatina 77 L'Isola dei Forumers 40 22-07-2011 10:45
Metodi innovativi per la vendita di obbligazioni Gianni.Mello Obbligazioni, Bond e Titoli di Stato 1 19-02-2011 14:06
Macroeconomia
Strumenti non convenzionali BCE ?!
borsaro Piazza Affari 9 05-05-2009 21:36
Aumento rendite finanziarie: diversi metodi di calcolo idefix Tutela Legale, di persona e patrimonio 5 04-04-2006 12:25
metodi contabili COMPIACENTI per il calcolo dell'inflazione tontolina Piazza Affari 0 27-11-2005 16:33


Tutti gli orari sono GMT +2. Adesso sono le 00:03.


vBulletin®
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Content Relevant URLs by vBSEO 3.6.0
(C) Copyright InvestireOggi 2000-2010