2017-07-19 24 views
5

Tôi hiện đang viết mã liên quan đến một số tính toán tài chính. Cụ thể hơn là một số trung bình di chuyển theo hàm mũ. Để thực hiện công việc tôi đã cố gắng Pandas và Talib:Trung bình di chuyển theo hàm mũ Pandas vs Ta-lib

talib_ex=pd.Series(talib.EMA(self.PriceAdjusted.values,timeperiod=200),self.PriceAdjusted.index) 
pandas_ex=self.PriceAdjusted.ewm(span=200,adjust=True,min_periods=200-1).mean() 

Cả hai đều hoạt động tốt, nhưng họ cung cấp kết quả khác nhau vào lúc bắt đầu của mảng:

200 day EMA - Talib vs Pandas

Vì vậy, có một số tham số để thay đổi thành EWMA của gấu trúc hay là lỗi và tôi nên lo lắng?

Cảm ơn trước

Luca

Trả lời

3

Đối với ema Talib, công thức là:

Vì vậy, khi sử dụng gấu trúc, nếu bạn muốn làm cho gấu trúc ema giống như talib, bạn nên sử dụng nó như:

pandas_ex = self.PriceAdjusted.ewm (span = 200, adjusting = False, min_periods = 200-1) .mean()

Đặt điều chỉnh như False theo tài liệu (https://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.ewm.html) nếu bạn muốn sử dụng cùng một công thức như Talib:

Khi điều chỉnh là True (mặc định), trọng số trung bình được tính theo trọng số (1-alpha) (n-1), (1-alpha) (n-2), ..., 1-alpha, 1.

Khi điều chỉnh là Sai, trọng số trung bình được tính toán đệ quy là: weighted_average [0] = arg [0]; weighted_average [i] = (1-alpha) weighted_average [i-1] + alpha arg [i].

Bạn cũng có thể tham khảo ở đây: https://en.wikipedia.org/wiki/Moving_average

PS: Tuy nhiên, trong dự án của tôi, tôi vẫn thấy một số khác biệt nhỏ giữa Talib và pandas.ewm và không biết tại sao nhưng ...

Các vấn đề liên quan