Hệ Thống Phân Tích Định Lượng Trong Giao Dịch Tự Động
· 3 min read
1. Xử Lý Dữ Liệu Tài Chính
Trước khi phân tích hoặc xây dựng mô hình, ta cần làm sạch và chuẩn hóa dữ liệu:
- Loại bỏ dữ liệu trùng lặp, thiếu, hoặc ngoại lệ.
- Tính toán các chỉ số như đường trung bình động (MA), RSI, Bollinger Bands.
- Chuyển đổi dữ liệu thời gian về dạng chuẩn.
Ví dụ xử lý dữ liệu với pandas
:
import pandas as pd
# Đọc dữ liệu từ CSV
df = pd.read_csv("stock_data.csv")
# Xử lý giá trị thiếu
df.fillna(method='ffill', inplace=True)
# Tính đường trung bình động 20 ngày
df['MA20'] = df['Close'].rolling(window=20).mean()
print(df.head())
2. Tích Hợp API Tài Chính
Chúng ta có thể sử dụng yfinance
, Alpha Vantage
, hoặc Binance API
để lấy dữ liệu.
Ví dụ với yfinance
:
import yfinance as yf
# Tải dữ liệu cổ phiếu Apple
data = yf.download("AAPL", start="2023-01-01", end="2024-01-01")
print(data.head())
3. Các Chiến Lược Giao Dịch Phổ Biến
3.1. Mean Reversion
Dựa trên giả thuyết rằng giá sẽ quay về giá trị trung bình.
df['Signal'] = 0
df.loc[df['Close'] < df['MA20'], 'Signal'] = 1 # Mua khi giá thấp hơn MA20
df.loc[df['Close'] > df['MA20'], 'Signal'] = -1 # Bán khi giá cao hơn MA20
3.2. Momentum Trading
Mua khi xu hướng mạnh lên, bán khi xu hướng yếu đi.
df['Momentum'] = df['Close'].pct_change(periods=5)
df['Signal'] = df['Momentum'].apply(lambda x: 1 if x > 0 else -1)
4. Tối Ưu Hóa Chiến Lược Giao Dịch
- Backtesting: Kiểm tra hiệu suất chiến lược dựa trên dữ liệu quá khứ.
- Walk-forward optimization: Tối ưu tham số qua từng giai đoạn.
- Risk Management: Sử dụng Stop-Loss, Take-Profit hợp lý.
Ví dụ backtest đơn giản:
initial_capital = 10000
df['Returns'] = df['Signal'].shift(1) * df['Close'].pct_change()
df['Equity'] = initial_capital * (1 + df['Returns']).cumprod()
print(df[['Close', 'Equity']].tail())
5. Triển Khai Mô Hình Machine Learning
5.1. Dự Đoán Giá với Hồi Quy Tuyến Tính
from sklearn.linear_model import LinearRegression
import numpy as np
df['Future_Close'] = df['Close'].shift(-5) # Dự đoán giá sau 5 ngày
X = np.array(df[['Open', 'High', 'Low', 'Close']].dropna())
y = np.array(df['Future_Close'].dropna())
model = LinearRegression()
model.fit(X[:-5], y[:-5]) # Loại bỏ 5 ngày cuối
predicted_price = model.predict(X[-5:])
print(predicted_price)
5.2. Sử Dụng LSTM Để Dự Đoán Giá
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import LSTM, Dense
model = Sequential([
LSTM(50, return_sequences=True, input_shape=(X.shape[1], 1)),
LSTM(50),
Dense(1)
])
model.compile(optimizer='adam', loss='mse')
Kết Luận
Bài viết này đã giới thiệu các bước cơ bản để xây dựng hệ thống phân tích định lượng cho giao dịch tự động. Bạn có thể mở rộng bằng cách kết hợp thêm AI, tối ưu hóa chiến lược, và tích hợp hệ thống thực chiến. 🚀