S.t.a.r.c.a Model

Io l'ho interpretato così.

E se guardi, la tua equity è diversa.
Prova a usare questa al posto di EMA() e dimmi se fa quello che dovrebbe fare :)

EMA.ss <- function(r, alpha, ss, Ann) {

tmp <- rep(NA, length(r))
tmp[1] <- 0

for(i in 2:length(r)) {

tmp <- tmp[i-1] * alpha + r * (1 - alpha) + ss / Ann


}

tmp <- xts(tmp, index(r))
return(tmp)

}
 
Ultima modifica:
Allora, buongiorno a tutti, forse oggi ho un po' di tempo.

Per avere l'equity line corretta con segnale in open mensile

dovete aggiungere nella parte finale, dove viene riportato il rendimento mensile del "DAX", esempio, utile al calcolo della equityline, salvo errori, le seguenti istruzioni.:



r:=100*Log(C/Ref(C,-1));

r:=If(dtx+dtx1 <> Ref(dtx+dtx1,-1),100*Log(C/O),r);

Ovvero, dato il rendimento logaritmico percentuale canonico, esso si trasforma in rendimento chisura apertura mensile se precedentemente vi è stato un cambio di segnale. Altrimenti rimane intonso.

Questa da l'equity corretta in backtest...con questa modalità rudimentale.

[.....]

Pek, ci sei o hai perplessità, o chiunque altro? Il concetto di self generator (autosegnale) sullo S&P500, è chiaro perchè DEVE essere sporco (ovvero, se fosse pulito o stiamo finendo a gambe all'aria stile culmine crisi ultimi anni o c'è qualcuno che ha deciso di facilitare il compito di previsione agli economisti di tutto il mondo)

:)
 
Prova a usare questa al posto di EMA() e dimmi se fa quello che dovrebbe fare :)

EMA.ss <- function(r, alpha, ss, Ann) {

tmp <- rep(NA, length(r))
tmp[1] <- 0

for(i in 2:length(r)) {

tmp <- tmp[i-1] * alpha + r * (1 - alpha) + ss / Ann

}

tmp <- xts(tmp, index(r))
return(tmp)

}


yes, I belive so.

In genere in questi casi pongo

tmp[1] = r[1]

per scorciare il transitorio.
 
Ciao a tutti, ho letto i 2 3d iniziati da Ernesto sul fol ed ho trovato che Ernesto diceva che lo starca model può funzionare bene anche su timeframe più brevi, solo che necessitava di ritarature e la cosa era complicata da fare.
Chiedo al Sig. Ernesto se è possibile seguire anche questa strada, mi metto a disposizione per la parte di programmazione ed automazione della taratura.
Potremmo allora osservare il modello all'opera dal vivo in tempi ragionevoli e non solo in back test.

Cosa ne pensa Sig. Ernesto?
 
Ciao a tutti, ho letto i 2 3d iniziati da Ernesto sul fol ed ho trovato che Ernesto diceva che lo starca model può funzionare bene anche su timeframe più brevi, solo che necessitava di ritarature e la cosa era complicata da fare.
Chiedo al Sig. Ernesto se è possibile seguire anche questa strada, mi metto a disposizione per la parte di programmazione ed automazione della taratura.
Potremmo allora osservare il modello all'opera dal vivo in tempi ragionevoli e non solo in back test.

Cosa ne pensa Sig. Ernesto?


Ciao autotrader, ilmodello teoretico funziona certamente bene a tf minori dove, tuttavia, intervengono fattori che sono completametne assenti nel time frame mensile.

D'altronde, uno dei papers più interessanti degli ultimi 10anni a mio avviso è l'utilizzo di proxy"sporchi" per ottenere maggiore robustezza nella stima.

Che impiego hai in mente? Giornaliero? Che tf?

Più accorci più divengono preponderanti le caratteristiche fisiche del tuo approccio.

Se sei interessato (purtroppo anche oggi sono stato travolto dal lavoro), prepara lo storico di tuo interesse, butta giù le tue idee o preferenze e adattiamo la frequenza(alpha) e la soglia (ss). Poi si testa.

Tenendo presente che, intraday, quello che fa il modello lo fanno in mille modi diversi la maggiorparte degli operatori HF..

:)
 
Codice Amibroker tradotto dal Metastock originale del Sig.E.
Da una verifica veloce sembra che più o meno torni... :up:

Codice:
alpha=0.81; //Questo valore sembra un'ottimizzazione ma non lo è...e risulta ottimo su tutti i sottostanti che ho testato.
ann=12;

mv=Param("Max Volat Richiesta:",3.5,0,50,1);
leva=Param("Leva:",1,0,10,1);
rf=Param("Risk Free Disponibile:",3,0,100,1);
ss=1.2; //Questa è una blanda ottimizzazione..è uno shift verticale alla media che vedrai usata come soglia.
sec=Foreign("^GSPC","C"); //MENSILE
r=100*log(sec/Ref(sec,-1));
k=Ref(r,-1)*alpha+r*(1-alpha)+ss/ann;
dt=IIf(r<k,1,0);
lpm=hpm=1;
lpm=(Ref(lpm,-1)*alpha +(r*dt-k)*(1-alpha));
dt=IIf(r>k,1,0);
hpm= (Ref(hpm,-1)*alpha +abs(k-r*dt)*(1-alpha));
tar=hpm+lpm+k;
dtx=IIf(Ref(tar,-1)>0,1,0);
dtx1=IIf(Ref(tar,-1)<0,-1,0);
mr=volat=r;
mr=Ref(mr,-1)*alpha+r*(1-alpha);
volat=sqrt(Ref(volat,-1)^2*(alpha)+(1-alpha)*(r-mr)^2);
volat=mv/(volat*sqrt(ann));
alpha1=0.97;
osa=IIf(tar*volat<0,0,tar*volat);
osa=Ref(osa,-1)*alpha1+(IIf(osa>leva,leva,osa))*(1-alpha1);
r=100*log(C/Ref(C,-1)); // -----> C=DAX MENSILE o Symbol corrente
eq=Cum(r*Ref(osa,-1)*dtx+r*Ref(osa,-1)*dtx1); //+(rf/ann)*(1-Ref(osa,-1)));

//Grafico
eqi = FirstVisibleValue(eq);
Ci = FirstVisibleValue(C);
Plot(100*((C-Ci)/Ci), "sec", colorRed);
Plot(100*((eq-eqi)/eqi), "equity", colorBlack);
 

Allegati

  • starca.png
    starca.png
    13,7 KB · Visite: 807
Se ci fosse qualcuno che traducesse il codice anche in VT gli sarei veramente grato a quel punto avrei storici multiframe su azioni, indici, etf , materie prime e fondi con cui fare test,che forse potrebbero servire da controllo ai Vostri lavori oltre che da spunto di studio per me. io provero comunque a tradurmelo..
Grazie al Sig.Ernesto e company c'è veramente molto da imparare.
 
Crengi, che significa xts?
Non era strettamente necessaria come istruzione ma ho pensato di metterla comunque perchè, nel processo di creazione del vettore con relazione ricorsiva, l'informazione su data e ora di ogni osservazione in input si perde.

In questo modo, invece, l'informazione è conservata e restituita, visto che quella specie di EMA "modificata" assume lo stesso indice temporale dei rendimenti che gli passi in ingresso, in modo che tu non sia costretto eventualmente a doverli allineare in un momento successivo.
 

Allegati

  • Immagine.png
    Immagine.png
    26,2 KB · Visite: 359

Users who are viewing this thread

Back
Alto