Phương pháp tập hợp: Kết hợp những người học yếu để có Alpha mạnh mẽ
Hầu hết các bài viết về các nhóm giao dịch đều lập luận rằng càng nhiều mô hình thì càng tốt. Đó là trục sai. Lỗi của một tập hợp được chia thành ba số hạng và trong giao dịch, chỉ một trong số chúng là ràng buộc ràng buộc.
Bài viết này nói về một thuật ngữ đó và về hai hậu quả của nó mà phần còn lại của blog này không đề cập đến: xếp chồng như một lớp kết hợp tín hiệu rõ ràng và liệu việc kết hợp nhiều tín hiệu có thực sự làm giảm doanh thu trước khi giao dịch tiếp cận thị trường hay không.
Thuật ngữ thực sự ràng buộc: Độ lệch-Phương sai-Hiệp phương sai
Đối với một tập hợp hồi quy của mô hình, sai số bình phương kỳ vọng của dự đoán trung bình phân hủy như sau:
Ba điều khoản, ba đòn bẩy:
- Bagging tấn công số hạng phương sai bằng cách lấy trung bình trên các mẫu bootstrap.
- Tăng cường tấn công số hạng sai lệch bằng cách sửa lỗi số dư lặp đi lặp lại.
- Xếp chồng tấn công thuật ngữ hiệp phương sai bằng cách học các trọng số kết hợp thay vì giả sử các trọng số bằng nhau.
- Tăng dần chỉ thu gọn phần đóng góp phương sai. Nó không ảnh hưởng gì đến hiệp phương sai - hệ số đã là 0,99 rồi .
Điểm cuối cùng đó là toàn bộ lập luận. Trong giao dịch, các mô hình được đào tạo về cùng một công cụ, trong cùng một lịch sử, chống lại các mục tiêu mà bản thân chúng là những biến đổi gần giống nhau của cùng một chuỗi giá. Lỗi của họ không gần với độc lập. Vì vậy, số hạng hiệp phương sai lớn và số hạng phương sai đã cạn kiệt, điều đó có nghĩa là số lượng mô hình hầu như không mua được gì cho bạn và sự khác biệt về cấu trúc mua cho bạn mọi thứ.
Hình thức xác nhận quyền sở hữu cụ thể, có thể sai lệch: việc thêm cây được tăng cường độ dốc thứ 101 sẽ di chuyển số liệu tổng hợp ít hơn so với việc thêm một mô hình khác về cấu trúc - LSTM, một mô hình tuyến tính trên miền tính năng rời rạc, bất kỳ thứ gì có độ lệch quy nạp khác. Cây cận biên gần như thẳng hàng với các cây đã có trong sách; mô hình có cấu trúc khác nhau thì không.
Mối tương quan, chứ không phải số lượng mô hình, đặt ra độ rộng hiệu quả của một tập hợp — đạo hàm, các hệ số tương quan được đo bằng tiền điện tử theo loại nội dung và mô phỏng đối với dữ liệu cặp thực đều có trong Tương quan tín hiệu: Số lượng cặp cần theo dõi.
Đừng giảm sự đa dạng của quần thể thành một con số duy nhất. Tỷ lệ Sharpe giảm phát tính toán năm hiệu quả- công cụ ước tính (tương quan trung bình, tỷ lệ tham gia, PCA-95%, Kaiser, Cheverud-Nyholt) trên lưới 640 ô thực, cho thấy chúng trải rộng từ 1,6 đến 370 và lập luận rằng phạm vi - không phải bất kỳ ước tính điểm nào - là có thể phân phối được. Báo cáo ban nhạc.
Xếp chồng dưới dạng lớp kết hợp tín hiệu
Đóng bao và tăng cường được bảo hiểm tốt ở những nơi khác. [Mô hình hóa trải rộng với Machine Learning](/en/blog/post/ Spread-modeling-machine-learning) cung cấp thiết lập tăng cường độ dốc, lựa chọn tổn thất cho các mục tiêu bị lệch, các phát hiện quan trọng về SHAP, phân loại tính năng và phân chia từng bước đã được loại bỏ với sự chồng chéo cửa sổ chuyển tiếp tạo ra khoảng cách. Bắt đầu ở đó; phần này giả định nó.
Cấp độ trên không được đề cập đến: một người học siêu dữ liệu lấy các dự đoán của mô hình cơ sở làm tính năng đầu vào và học cách kết hợp chúng.
- Cấp 0 (người học cơ bản): các mô hình đa dạng đưa ra dự đoán từ các tính năng thô.
- Cấp độ 1 (siêu học): một mô hình tìm hiểu xem người học nên tin tưởng cơ sở nào và khi nào.
Cơ chế làm cho điều này trở nên an toàn là các siêu tính năng vượt trội. Người học meta không bao giờ được nhìn thấy dự đoán mô hình cơ sở được tạo ra trên dữ liệu mà mô hình cơ sở đã được đào tạo - những dự đoán đó có thành kiến lạc quan theo cách không tồn tại trong giao dịch trực tiếp và người học meta sẽ cân nhắc chúng theo đó.
import numpy as np
import pandas as pd
from sklearn.base import clone
from sklearn.model_selection import TimeSeriesSplit
class TradingStackingEnsemble:
"""
Two-level stacking ensemble for return prediction.
Level 0: base learners, each on its own feature domain
Level 1: meta-learner trained on out-of-fold base predictions
"""
def __init__(self, base_models: list, meta_model, n_splits: int = 5):
self.base_models = base_models # list of (name, model, feature_cols)
self.meta_model = meta_model
self.n_splits = n_splits
self.fitted_base_models_ = {}
def _generate_meta_features(
self,
X: pd.DataFrame,
y: pd.Series
) -> pd.DataFrame:
"""Out-of-fold predictions from each base model."""
tscv = TimeSeriesSplit(n_splits=self.n_splits)
meta_features = pd.DataFrame(index=X.index)
for name, model, feature_cols in self.base_models:
oof_preds = pd.Series(np.nan, index=X.index)
for train_idx, val_idx in tscv.split(X):
X_train = X.iloc[train_idx][feature_cols]
y_train = y.iloc[train_idx]
X_val = X.iloc[val_idx][feature_cols]
fold_model = clone(model)
fold_model.fit(X_train, y_train)
if hasattr(fold_model, 'predict_proba'):
oof_preds.iloc[val_idx] = fold_model.predict_proba(X_val)[:, 1]
else:
oof_preds.iloc[val_idx] = fold_model.predict(X_val)
meta_features[name] = oof_preds
return meta_features.dropna()
def fit(self, X: pd.DataFrame, y: pd.Series):
meta_features = self._generate_meta_features(X, y)
y_meta = y.loc[meta_features.index]
self.meta_model.fit(meta_features, y_meta)
for name, model, feature_cols in self.base_models:
model.fit(X[feature_cols], y)
self.fitted_base_models_[name] = model
return self
def predict(self, X: pd.DataFrame) -> np.ndarray:
meta_features = pd.DataFrame()
for name, model, feature_cols in self.base_models:
fitted = self.fitted_base_models_[name]
if hasattr(fitted, 'predict_proba'):
meta_features[name] = fitted.predict_proba(X[feature_cols])[:, 1]
else:
meta_features[name] = fitted.predict(X[feature_cols])
return self.meta_model.predict(meta_features)
Kỷ luật phân chia ở đây không phải là tùy chọn và không mới lạ - hãy sử dụng một bước đi đã được thanh lọc, bị cấm vận và hiểu giá trị của mỗi loại rò rỉ trong Sharpe bị thổi phồng trước khi tin tưởng vào bất kỳ con số nào trong số này. Cả hai đều đã được đo lường: phân loại sai lệch nhìn về phía trước định lượng mức độ rò rỉ thực thi, chỉ báo và chuẩn hóa trong một trình mô phỏng được kiểm soát và tối ưu hóa chuyển tiếp bao gồm các cửa sổ cố định và cửa sổ cuộn, CPCV, thanh lọc và chẩn đoán suy giảm WFER.
Ba quyết định thiết kế dành riêng cho việc xếp chồng và đáng được nêu rõ.
Sự đơn giản của siêu học. Sử dụng mô hình tuyến tính — hồi quy sườn, dây, hồi quy logistic. Những người học cơ bản xử lý tính phi tuyến tính; meta-learner chỉ xử lý sự kết hợp. Một trình học meta phức tạp nằm trên các trình học cơ sở phức tạp là trang bị quá mức bậc hai và việc chính quy hóa L1 ở lớp kết hợp có tác dụng phụ hữu ích là loại bỏ các mô hình cơ sở chỉ gây ra nhiễu.
Xác suất xuất ra trên nhãn cứng. predict_proba mang thông tin về độ tin cậy mà nhãn lớp loại bỏ và cho phép người học meta đánh giá cao hơn các dự đoán cơ sở tự tin.
Phân vùng miền tính năng. Đây là đòn bẩy đa dạng có đòn bẩy cao nhất và nó xuất phát trực tiếp từ đối số hiệp phương sai: các mô hình có các tính năng giống nhau sẽ tạo ra các lỗi tương quan bất kể thuật toán.
FEATURE_GROUPS = {
'momentum': ['ret_5d', 'ret_10d', 'ret_21d', 'ret_63d'],
'volatility': ['vol_21d', 'vol_ratio', 'vol_skew', 'garch_vol'],
'volume': ['volume_ratio', 'obv_slope', 'vwap_dist', 'adv_ratio'],
'mean_reversion': ['dist_from_ma21', 'dist_from_ma63', 'rsi_14', 'bb_pct'],
'microstructure': ['bid_ask_spread', 'kyle_lambda', 'amihud_illiq'],
'fundamental': ['ep_ratio', 'bp_ratio', 'roe', 'accruals'],
}
base_models = []
for domain, features in FEATURE_GROUPS.items():
model = GradientBoostingClassifier(
n_estimators=200, max_depth=3,
learning_rate=0.05, subsample=0.7
)
base_models.append((domain, model, features))
Mỗi mô hình cơ sở trở thành một chuyên gia miền: mô hình động lượng tìm hiểu các mô hình động lượng mà không bị nhiễu âm lượng gây nhiễu và người học siêu dữ liệu sẽ tìm hiểu chuyên gia nào đáng tin cậy trong những điều kiện nào.
Hai lưu ý về điều khoản cuối cùng đó. Đầu tiên, trọng số có điều kiện của chế độ là một vấn đề đã được giải quyết và đã được công bố — phát hiện chế độ bằng HMM tìm ra các chế độ một cách chính xác thông qua Forward/Viterbi/Baum-Welch và cung cấp chúng dưới dạng tính năng cho một tập hợp xuôi dòng, đồng thời [các chiến lược kết hợp động](/en/blog/post/dynamic-ckết hợp-strategies) bao gồm sự đảo ngược trung bình theo trọng số chế độ so với động lượng với các kết quả được báo cáo. Không thay thế một proxy ký hiệu động lượng đặc biệt cho một trong hai. Thứ hai, việc lựa chọn dựa trên hiệu suất trong mẫu sẽ tạo ra những người chiến thắng không tồn tại; cơ chế chung và khả năng phòng thủ của CSCV được đo bằng xác suất của backtest overfitting. Xếp chồng là một ví dụ hẹp hơn của chính xác vấn đề đó.
Để tính trọng số dòng trả về thay vì dự đoán mô hình, không lấy lại phương sai trung bình. 12 thuật toán tối ưu hóa danh mục đầu tư, được so sánh chạy đua HRP, HERC, GHRP, MHRP, Black-Litterman, NCO, MVO, mức độ rủi ro tương đương và trọng số bằng nhau với các kết quả được đo lường và mã nguồn mở; Lý thuyết danh mục đầu tư Markowitz cho tiền điện tử có triển khai phương sai trung bình SLSQP; và kết quả 1/N khó đánh bại đã được thử nghiệm với HRP và CVaR trong đường dẫn danh mục đầu tư HRP/CVaR.
Lưới doanh thu: Kiểm tra giá trị yêu cầu bồi thường
Đây là một phần của đối số thư viện alpha mà cụm chi phí thực thi của blog này hiện không bao gồm.
Khi Alpha #4.721 nói "mua MSFT" và Alpha #8.392 nói "bán MSFT" trong cùng một lần tái cân bằng, các giao dịch đó sẽ giao nhau trong nội bộ. Chỉ có vị thế ròng mới tiếp cận được thị trường. Tuyên bố là với đủ tín hiệu, một phần lớn tổng doanh thu dự kiến sẽ bị hủy trước khi phát sinh chênh lệch giá, phí hoặc tác động thị trường - điều đó có nghĩa là một tổ hợp sẽ hoạt động rẻ hơn so với tổng các thành phần của nó chứ không chỉ ổn định hơn.
Đây là một cơ chế khác biệt với những gì điều phối chiến lược xếp tầng đã xử lý. Cascade giải quyết xung đột ở cấp độ khe: cùng một cặp, hướng ngược lại bị cấm và giải quyết theo điểm số, việc trục xuất giữa các cặp chạy qua hàng đợi ưu tiên và bài viết chứng minh bằng thực nghiệm rằng PnL theo từng chiến lược không thể được tính tổng một cách đơn giản do sự chồng chéo về thời gian và hạn chế về vốn. Lưới là về số học vị trí tổng trên ròng làm giảm số lượng giao dịch.
Việc làm sai lệch cũng không tốn kém: tính toán tổng doanh thu so với doanh thu ròng trên các lần thực hiện thực khi các tín hiệu thành phần được kết hợp, sau đó định giá cả hai thông qua bộ máy chi phí hiện có — phí nhà sản xuất và giảm giá, thiếu hụt triển khai và TCA và chi phí trượt giá models.
Một ghi chú về tỷ lệ, vì khung thư viện alpha mời gọi nó. Báo cáo của WorldQuant đã tạo ra một thư viện alpha rất lớn và [101 bảng chữ cái công thức] của Kakushadze (https://arxiv.org/pdf/1601.00991) ghi lại hình dạng của từng tín hiệu. Nhưng việc khai thác bảng chữ cái ở quy mô công nghiệp cũng là cỗ máy thử nghiệm đa năng lớn nhất có thể tưởng tượng được và quan điểm của blog này về điều đó đã được giải quyết: tìm kiếm kích thước phải giảm bớt so với kết quả may mắn được mong đợi của một tìm kiếm ở quy mô đó. Tỷ lệ Sharpe giảm phát hiển thị lưới 640 ô đã phá vỡ thử nghiệm có ý nghĩa ban đầu và [Tỷ lệ âm tính trung thực](/en/blog/post/trung thực-âm tính-no-robust-edge) hiển thị tìm kiếm ~37.000 lần thử tạo ra kết quả chiến thắng ngoài mẫu +16,35% giảm xuống DSR 0,00. Kích thước thư viện không phải là bằng chứng về lợi thế. Đó là mẫu số bạn phải trả.
Kết hợp nó lại với nhau
Raw Data
|
v
Feature Engineering
|
v
Feature Subsets (partitioned by domain -> decorrelated errors)
|
+---> Base Model 1: RF on momentum features
+---> Base Model 2: GBM on volatility features
+---> Base Model 3: LSTM on price sequences
+---> Base Model 4: Lasso on fundamental features
+---> Base Model 5: XGBoost on microstructure features
|
v
Out-of-Fold Predictions (purged walk-forward)
|
v
Meta-Learner (Ridge)
|
v
Combined Signal -> Net Position -> Execution
|
v
DSR >= 0.95 and PBO <= 0.2 gate, or it does not ship
Hộp cuối cùng không phải là vật trang trí. Xếp chồng lên nhau mô hình cơ sở là một thủ tục lựa chọn kích thước , và một bài viết tổng hợp không xẹp xuống là không thể bào chữa được.
Đồ ăn mang về
- Sự khác biệt về cấu trúc đánh bại số lượng mô hình. Thuật ngữ hiệp phương sai không co lại theo . Việc thêm cây tương quan thứ sáu không phải là đa dạng hóa; thêm một lớp mô hình khác hoặc một miền tính năng riêng biệt.
- Báo cáo hiệu quả- dải chứ không phải điểm. Năm công cụ ước tính, năm câu trả lời, đôi khi cách nhau hai bậc độ lớn.
- Giữ tuyến tính cho meta-learner. Độ phức tạp ở lớp kết hợp hầu như luôn luôn được trang bị quá mức và L1 có tính năng lựa chọn mô hình tự động hữu ích.
- Ngoài màn hình hoặc không có gì. Một người học meta được đào tạo về các dự đoán cơ sở trong mẫu sẽ học được các trọng số sai với độ tin cậy cao.
- Xóa nhóm chính nó. Xếp chồng là một tìm kiếm. Giá nó như một.
Đọc thêm:
- Kakushadze, Z. (2016). 101 bảng chữ cái công thức
- Học tập theo nhóm trong đầu tư — Quỹ nghiên cứu của Viện CFA, 2025
- Dự đoán lợi nhuận hàng tồn kho: Xếp chồng nhiều loại mô hình — Tạp chí Kinh tế Tài chính
- Jansen, S. Học máy cho giao dịch thuật toán, ấn bản thứ 2
Tác Giả
Trading-systems engineer
Trading-systems engineer building bots since 2017: cross-exchange arbitrage (connected up to 30 venues), cointegration-based pairs arbitrage across spot and futures, scalping, news and sentiment-driven strategies, trend algorithms, and portfolio management and balancing algorithms. Also builds sub-millisecond order execution, big-data warehouses, backtesting engines, AI agents, and trading interfaces (incl. open-source profitmaker.cc). Stack: JS/TS, Python, Rust/Zig/Go, DevOps, backend, frontend, architecture.