Chcę obliczyć średnią ruchomą ważoną, ale coś idzie nie tak. Mają być 2771 odpowiedzi, niejednakowe, ale otrzymuję te same liczby dla każdego wersu. Pierwsza odpowiedź ~` 222,384, ale drukuje mi 77933.848329. Dane w załączniku.
import pandas as pd
import numpy as np
#WMA = ( Price n + Price(1) n-1 + ...+Price( n-1 ) 1) / ( n ( n + 1 ) / 2 ), (n = time period).
def wma(data, N):
#n = len(data)
for i in range(N, 0, -1):
data[i] = i * data[abs(i - N)]
return sum(data) / ((N * (N + 1)) / 2)
data_pd = pd.read_csv('GS.csv')
format = '%m/%d/%Y'
data_pd['Date'] = pd.to_datetime(data_pd['Date'], format=format)
data_pd = data_pd.set_index(data_pd['Date'])
data_pd = data_pd.drop(columns=['Date'])
p2 = 3
data_pd['wma'] = wma(data_pd['Close'].values, p2)
#print(data_pd['wma'])