package finance

// VWAP calcula el Volume Weighted Average Price.
// prices y volumes deben tener la misma longitud.
// Retorna 0 si el volumen total es 0 o los slices estan vacios.
func VWAP(prices, volumes []float64) float64 {
	if len(prices) == 0 || len(prices) != len(volumes) {
		return 0
	}
	var cumPV, cumV float64
	for i := range prices {
		cumPV += prices[i] * volumes[i]
		cumV += volumes[i]
	}
	if cumV == 0 {
		return 0
	}
	return cumPV / cumV
}
