Buongiorno volevo codificare uno screener che dato un paniere di asset con carattere mean reverting mi vada a selezionare come primo step i 6 più forti per valore percentuale a 12 mesi e in seconda battuta i 3 più deboli per variazione percentuale nell’ultimo mese.
Naturalmente mi deve restituire solamente i 3 più deboli all’interno di uno scenario di forza di lungo periodo
Cosa intendi con la frase “con carattere mean reverting“? Puoi fare un esempio?
Perché possono essere mean reverting quando si verifica un certo pattern fuori dalle Bande di Bollinger, o altro…
Sono io che l’ho chiamata mean reverting perché va a cercare la debolezza in un contesto di forza di più lungo periodo. E’ una strategia di investing, non di trading, opera sui settori dell’Sp500, ogni fine mese va a cercare i 3 settori più deboli in un contesto rialzista e si posiziona su questi per il mese seguente. Quindi lo screener dovrebbe cercare i 6 più forti per valore percentuale a 12 mesi e poi restituirmi i 3 più deboli per variazione percentuale nell’ultimo mese. Non ci sono indicatori di analisi tecnica, ma solo il valore percentuale a 12 mesi prima e a 1 mese poi. Spero di essere stato chiaro. Grazie
Quindi prima cerca i 6 settori che sono cresciuti di più a 12 mesi, di questi 6 cerca i 3 settori che sono cresciuti meno nell’ultimo mese
Puoi usare questo screener:
roc12M = roc[252](close)
roc1M = roc[21](close)
screener(roc12M as "%12M", roc1M as "%1M")
Prima ordini l'elenco per %12 e poi per %1M
Nell'immagine puoi vedere cosa intendo
Grazie un’ultima cosa:
quando definisco i vari ROC su diversi orizzonti temporali (12, 6, 3 e 1 mese) è meglio utilizzare il timeframe mensile in questo modo:
Timeframe(Monthly)
roc12 = ROC[12](close)
roc6 = ROC[6](close)
roc3 = ROC[3](close)
roc1 = ROC[1](close)
oppure il giornaliero come sotto?
Timeframe(Daily)
roc12 = ROC[252](close)
roc6 = ROC[126](close)
roc3 = ROC[63](close)
roc1 = ROC[21](close)
Se desideri comunque usare come riferimento i dati mensili, meglio usare 1 mese che 21 giorni, perché non sempre 21 giorni corrispondono ad 1 mese.
Se decidessi di usarli entrambi (anche per verificare le differenze), devi usare nomi diversi per i vari timeframe, ad esempio basta che tu aggiunga una lettera ai nomi del Daily (es.: Roc12d, invece di Roc12).
Le ripongo la domanda di cui sopra ma con l’utilizzo di prorealtime end of day (quindi senza i dati in tempo reale). Siccome con i dati di fine giornata si è indietro di una barra, quando in uno screener definisco i vari ROC su diversi orizzonti temporali (12, 6, 3 e 1 mese) è meglio utilizzare il timeframe mensile in questo modo:
Timeframe(Monthly)
roc12 = ROC[12](close)
roc6 = ROC[6](close)
roc3 = ROC[3](close)
roc1 = ROC[1](close)
oppure il giornaliero come sotto?
Timeframe(Daily)
roc12 = ROC[252](close)
roc6= ROC[126](close)
roc3= ROC[63](close)
roc1 = ROC[21](close)
Mi verrebbe da pensare che senza i dati in tempo reale, se lo screener non considera l’ultima barra, sarebbe meglio utilizzare il timeframe giornaliero, è corretto? Altrimenti c’è una soluzione migliore?
E’ valida la risposta data nel post https://www.prorealcode.com/topic/mean-reverting-strategy-2/#post-235802, in quanro il timeframe mensile è più preciso dei singoli timeframe giornalieri per calcolare i dati mensili.
Grazie, quindi utilizzando il timeframe mensile end of day e operando su borsa italiana quando posso ritenere chiusa la candela mensile per far girare lo screener? Dopo le 18 o la mezzanotte dell’ultimo giorno di apertura della borsa del mese, oppure dopo le 18 o la mezzanotte dell’ultimo giorno del mese?
Devi provare, oppure chiedere a ProrealTime, so che i dati non vengono aggiornati immediatamente alla chiusura della candela, credo qualche ora dopo (forse l’indomani mattina).