feat: 15 funciones finance — indicadores, riesgo e IO de mercado
11 funciones puras con implementación real: SMA, EMA, RSI, BollingerBands, VWAP, LogReturn, AnnualizedVolatility, SharpeRatio, MaxDrawdown, NormalizeOHLCV, TickToOHLCV 4 funciones impuras (stubs): FetchOHLCV, StreamTicks, WriteOHLCVToParquet, LoadOHLCVFromDuckDB Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,23 @@
|
||||
package finance
|
||||
|
||||
// EMA calcula la media movil exponencial de data con el periodo dado.
|
||||
// El primer valor valido se inicializa con la SMA de los primeros period elementos.
|
||||
// Los primeros period-1 elementos del resultado son 0.
|
||||
func EMA(data []float64, period int) []float64 {
|
||||
n := len(data)
|
||||
result := make([]float64, n)
|
||||
if period <= 0 || period > n {
|
||||
return result
|
||||
}
|
||||
k := 2.0 / float64(period+1)
|
||||
// Seed con SMA
|
||||
var sum float64
|
||||
for i := 0; i < period; i++ {
|
||||
sum += data[i]
|
||||
}
|
||||
result[period-1] = sum / float64(period)
|
||||
for i := period; i < n; i++ {
|
||||
result[i] = data[i]*k + result[i-1]*(1-k)
|
||||
}
|
||||
return result
|
||||
}
|
||||
Reference in New Issue
Block a user