Phân tích
Danh sách các hàm chuyên dùng để tính hiệu suất
Hàm diff
Mục đích: Dùng để tính hiệu giữa giá trị hiện tại và giá trị trong quá khứ của một chuỗi thời gian (time series), theo một khoảng trễ (lag) xác định.
Cấu trúc hàm: diff(x, obs=1)
Các tham số
x
Series
Chuỗi thời gian (giá, lợi suất...) đầu vào
obs
int, str hoặc Window
Độ trễ: số quan sát để tính hiệu. Có thể là:
- int
: số quan sát, ví dụ: 1
, 5
- str
: khoảng thời gian, ví dụ '3d'
(3 ngày), '1w'
(1 tuần), '1m'
(1 tháng)
- Window
: đối tượng cửa sổ từ FiinQuantX.timeseries.helper.Window
Ý nghĩa toán học: Hàm này tính
Trong đó:
: giá trị tại thời điểm hiện tại
: giá trị tại thời điểm trước đó
obs
quan sát: hiệu (return thô, không phải phần trăm)
Giá trị trả về:
Series
: chuỗi thời gian dạngpandas.Series
với timestamp và hiệu tương ứng.
Ví dụ mẫu tính hiệu giữa giá trị hiện tại và giá trị của 1 tuần trước của mã HPG cho dữ liệu từ 25/06/2024 - 25/06/2025:
import pandas as pd
from FiinQuantX import FiinSession
from FiinQuantX.timeseries.analysis import diff
from datetime import datetime
from dateutil.relativedelta import relativedelta
username = "REPLACE_WITH_YOUR_USERNAME"
password = "REPLACE_WITH_YOUR_PASSWORD"
client = FiinSession(
username=username,
password=password
).login()
# Lấy dữ liệu HPG trong vòng 1 năm đổ lại
data = client.Fetch_Trading_Data(
realtime=False,
tickers=["HPG"],
fields=["close"],
adjusted=True,
by="1d",
from_date=(datetime.now() - relativedelta(years=1)).strftime("%Y-%m-%d")
).get_data()
# Copy data sang biến df để tránh ảnh hưởng đến dữ liệu gốc
df = data.copy()
df = df[["timestamp", "close"]]
# Biến df từ dataframe thành Series với Index là timestamp
df["timestamp"] = pd.to_datetime(df["timestamp"])
df.set_index("timestamp", inplace=True)
# Tính hiệu suất trong vòng 1 tuần
diff_series = diff(df["close"], obs="1w")
# Ghép vào dataframe ban đầu
data["one_week_change"] = df.index.map(diff_series)
print(data)
Kết quả trả ra (code chạy tại ngày 25/06/2025)
ticker timestamp close 1_week_change
0 HPG 2024-06-25 00:00 28700.0 NaN
1 HPG 2024-06-26 00:00 28900.0 NaN
2 HPG 2024-06-27 00:00 28850.0 NaN
3 HPG 2024-06-28 00:00 28300.0 NaN
4 HPG 2024-07-01 00:00 28350.0 NaN
.. ... ... ... ... ...
245 HPG 2025-06-19 00:00 26900.0 100.0
246 HPG 2025-06-20 00:00 27000.0 600.0
247 HPG 2025-06-23 00:00 26850.0 100.0
248 HPG 2025-06-24 00:00 27000.0 150.0
249 HPG 2025-06-25 00:00 27200.0 50.0
Last updated