C'è un oggetto DataFrame di Pandas con alcuni dati di magazzino. Le SMA sono medie mobili calcolate dai precedenti 45/15 giorni.Python and Pandas - Moving Average Crossover
Date Price SMA_45 SMA_15
20150127 102.75 113 106
20150128 103.05 100 106
20150129 105.10 112 105
20150130 105.35 111 105
20150202 107.15 111 105
20150203 111.95 110 105
20150204 111.90 110 106
Voglio trovare tutte le date, quando SMA_15 e SMA_45 si intersecano.
Può essere fatto in modo efficiente con Pandas o Numpy? Come?
EDIT:
Cosa intendo per 'intersezione':
La riga di dati, quando:
- lungo SMA (45) valore era più grande di breve SMA (15) valore per un periodo SMA più lungo di quello breve (15) e si è ridotto.
- Il valore SMA lungo (45) era inferiore al valore SMA breve (15) per un periodo SMA più lungo del breve (15) ed è diventato più grande.
Cosa significa per SMA_15 e SMA_45 ad intersecano in una certa data? (Nel tuo esempio SMA_45> SMA_15 ovunque, quindi non sembra essere un buon candidato.) – DSM
Se per "intersecare" vuoi dire dove sono gli stessi nella stessa data, allora è una semplice questione di usare l'indicizzazione booleana come in questo modo , 'df [df.sma_15 == df.sma_45]'. –
È solo un pezzo di dati da magazzino casuale. – chilliq