← Makalelere geri dön
August 3, 2026
5 dakikalık okuma

Topluluk Yöntemleri: Güçlü Alfa için Zayıf Öğrenenleri Birleştirmek

Topluluk Yöntemleri: Güçlü Alfa için Zayıf Öğrenenleri Birleştirmek
#machine-learning
#ensemble
#bagging
#stacking
#alpha

Ticaret toplulukları hakkında yazılanların çoğu, daha fazla modelin daha iyi olduğunu savunuyor. Bu yanlış eksendir. Bir topluluğun hatası üç terime ayrışır ve ticarette bunlardan yalnızca biri bağlayıcı sınırlamadır.

Bu makale, bu terim ve bu blogun geri kalanının kapsamadığı iki sonucu hakkındadır: açık bir sinyal kombinasyon katmanı olarak istifleme ve birçok sinyalin birleştirilmesinin, işlemler piyasaya ulaşmadan önce ciroyu gerçekten düşürüp düşürmediği.

Aslında Bağlayan Terim: Önyargı-Varyans-Kovaryans

Bir regresyon topluluğu için NN modeller, ortalama tahminin beklenen kare hatası fˉ\bar{f} şu şekilde ayrışır:

E[(fˉy)2]=bias2+1Nvariance+(11N)covarianceE\left[\left(\bar{f} - y\right)^2\right] = \overline{\text{bias}^2} + \frac{1}{N}\overline{\text{variance}} + \left(1 - \frac{1}{N}\right)\overline{\text{covariance}}

Üç terim, üç kaldıraç:

  • Bagging, önyükleme örnekleri üzerinden ortalama alarak varyans terimine saldırır.
  • Artırma, artıkları tekrar tekrar düzelterek önyargı terimine saldırır.
  • Yığınlama, eşit ağırlıkları varsaymak yerine kombinasyon ağırlıklarını öğrenerek kovaryans terimine saldırır.
  • Artan NN yalnızca varyans katkısını küçültür. Kovaryansa hiçbir şey yapmaz - (11/N)(1 - 1/N) katsayısı zaten 0,99 N=100N = 100.

Bu son nokta tüm argümanı oluşturuyor. Ticarette modeller, aynı fiyat serisinin neredeyse aynı dönüşümleri olan hedeflere karşı, aynı tarih boyunca, aynı enstrümanlar üzerinde eğitilir. Hataları bağımsızlığa yakın değil. Yani kovaryans terimi büyüktür ve varyans terimi zaten tükenmiştir; bu, model sayısının size neredeyse hiçbir şey kazandırmayacağı ve yapısal farklılığın size her şeyi satın alabileceği anlamına gelir.

İddianın somut, yanlışlanabilir biçimi: 101'inci gradyanla güçlendirilmiş ağacın eklenmesi, topluluk metriğini yapısal olarak farklı bir modelin eklenmesinden daha az hareket ettirmelidir - bir LSTM, ayrık bir özellik alanında doğrusal bir model, farklı endüktif önyargıya sahip herhangi bir şey. Kenardaki ağaç, kitapta zaten bulunan ağaçlarla neredeyse aynı doğrultudadır; yapısal olarak farklı bir model değildir.

Model sayısı değil korelasyon, bir topluluğun etkin genişliğini belirler. Türetme, varlık sınıfına göre kriptoyla ölçülen korelasyon faktörleri ve gerçek çift verilerine karşı simülasyon, Sinyal Korelasyonu: İzlenecek Kaç Çift bölümünde yer almaktadır.

Topluluk çeşitliliğini tek bir sayıya indirgemeyin. Deflated Sharpe Oranı beş etkili- hesaplar:NN gerçek bir 640 hücreli ızgara üzerindeki tahmin ediciler (ortalama korelasyon, katılım oranı, PCA-%95, Kaiser, Cheverud-Nyholt) bunların yayıldığını gösterir NeffN_{\text{eff}} 1,6'dan 370'e kadar ve herhangi bir tek nokta tahmininin değil, bandın teslim edilebilir olduğunu savunuyor. Grubu bildirin.

Sinyal Kombinasyon Katmanı Olarak Yığınlama

Torbalama ve güçlendirme başka yerlerde iyi bir şekilde ele alınmıştır. Makine Öğrenimi ile Yayılım Modelleme, gradyan artırma kurulumunu, çarpık hedefler için kayıp seçimini, SHAP önem bulgularını, özellik sınıflandırmasını ve boşluğu harekete geçiren ileri pencere örtüşmesiyle temizlenmiş bir ileri yürüme bölünmesini sunar. Oradan başlayın; bu bölüm bunu varsayar.

Yukarıdaki seviye kapsanmamaktadır: temel model tahminlerini girdi özellikleri olarak alan ve bunları nasıl birleştireceğini öğrenen bir meta-öğrenici.

  • Seviye 0 (temel öğrenciler): ham özelliklerden tahminler üreten çeşitli modeller.
  • Seviye 1 (meta-öğrenen): Hangi temel öğrenenlere ne zaman güveneceğini öğrenen bir model.

Bunu güvenli kılan mekanizma, kullanıma hazır meta özelliklerdir. Meta-öğrenici, temel modelin üzerinde eğitim aldığı veriler üzerinde yapılan bir temel model tahminini asla görmemelidir; bu tahminler, canlı ticarete dayanamayacak kadar iyimser bir şekilde önyargılıdır ve meta-öğrenici bunları buna göre ağırlıklandıracaktır.

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)

Buradaki bölme disiplini isteğe bağlı değildir ve yeni değildir; temizlenmiş, ambargolu bir ilerleme kullanın ve bu rakamlardan herhangi birine güvenmeden önce şişirilmiş Sharpe'ta her bir sızıntı sınıfının değerinin ne olduğunu anlayın. Her ikisi de zaten ölçülmektedir: ileriye dönük önyargı sınıflandırması kontrollü bir simülatörde yürütmeyi, göstergeyi ve normalleştirme sızıntısını ölçer ve ileriye doğru ilerleme optimizasyonu, sabitlenmiş ve dönen pencereleri, CPCV'yi, temizlemeyi ve WFER bozulma teşhislerini kapsar.

Üç tasarım kararı istiflemeye özeldir ve belirtilmeye değerdir.

Meta-öğrenici basitliği. Sırt, kement, lojistik regresyon gibi doğrusal bir model kullanın. Temel öğrenenler doğrusal olmamayı ele alır; meta-öğrenici yalnızca kombinasyonu yönetir. Karmaşık temel öğrenicilerin üzerinde karmaşık bir meta-öğrenici, ikinci dereceden aşırı uyumdur ve kombinasyon katmanındaki L1 düzenlemesi, yalnızca gürültüye katkıda bulunan temel modellerin sıfırlanması gibi yararlı bir yan etkiye sahiptir.

Katı etiketler üzerinden olasılık çıktıları. predict_proba bir sınıf etiketinin attığı güven bilgisini taşır ve meta-öğrencinin kendinden emin temel tahminlere daha fazla ağırlık vermesine olanak tanır.

Özellik alanı bölümleme. Bu, en yüksek kaldıraçlı çeşitlilik kaldıracıdır ve doğrudan kovaryans argümanından kaynaklanır: aynı özellikleri gören modeller, algoritmadan bağımsız olarak ilişkili hatalar üretir.

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))

Her temel model bir alan uzmanı haline gelir: momentum modeli, hacim gürültüsünden etkilenmeden momentum modellerini öğrenir ve meta-öğrenen, hangi koşullar altında hangi uzmana güveneceğini öğrenir.

Bu son maddeyle ilgili iki uyarı. Birincisi, rejime bağlı ağırlıklandırma çözülmüş ve yayınlanmış bir sorundur — HMM'lerle rejim tespiti, Forward/Viterbi/Baum-Welch aracılığıyla rejimleri düzgün bir şekilde türetir ve bunları aşağı yönlü bir topluluğa özellikler olarak besler ve dinamik olarak birleştirme stratejileri rejim ağırlıklı konuları kapsar raporlanan sonuçlarla ortalamaya dönüş ve momentum. İkisinin de yerine geçici bir momentum işareti proxy'si koymayın. İkincisi, örneklem içi performansa dayalı seçim, hayatta kalamayan kazananlar üretir; genel mekanizma ve CSCV savunması backtest overfitting olasılığı cinsinden ölçülür. Yığınlama tam olarak bu sorunun daha dar bir örneğidir.

Model tahminleri yerine dönüş akışlarını ağırlıklandırmak için ortalama varyansı yeniden türetmeyin. 12 Portföy Optimizasyon Algoritması, Karşılaştırıldı ölçülen sonuçlar ve açık kaynak kodu ile HRP, HERC, GHRP, MHRP, Black-Litterman, NCO, MVO, risk paritesi ve eşit ağırlık yarışları; Kripto için Markowitz portföy teorisi SLSQP ortalama varyans uygulamasına sahiptir; ve 1/N-geçilmesi zor sonuç, HRP/CVaR portföy hattında HRP ve CVaR'ye karşı zaten test edilmiştir.

Ciro Netleştirme: Test Edilmeye Değer İddia

Alfa kitaplığı argümanının bu blogun yürütme maliyeti kümesinin şu anda kapsamadığı kısmı buradadır.

Alfa #4,721 aynı yeniden dengelemede "MSFT satın al" derken ve Alfa #8,392 "MSFT sat" dediğinde, bu işlemler dahili olarak kesişir. Sadece net pozisyon piyasaya ulaşır. İddia, yeterli sinyallerle brüt amaçlanan cironun büyük bir kısmının, spread, ücretler veya piyasa etkisine yol açmadan önce iptal edildiğidir; bu, bir topluluğun yalnızca daha istikrarlı değil, aynı zamanda bileşenlerinin toplamından daha ucuz olduğu anlamına gelir.

Bu, basamaklı strateji orkestrasyonunun halihazırda uyguladığı mekanizmadan farklı bir mekanizmadır. Cascade, çatışmaları slot düzeyinde çözer: aynı çift, ters yön yasaklanır ve puana göre belirlenir, çiftler arası tahliye bir öncelik kuyruğundan geçer ve makale, strateji başına PnL'nin zaman çakışması ve sermaye kısıtlamaları nedeniyle basitçe toplanamayacağını ampirik olarak kanıtlar. Netleştirme, brütten nete konum aritmetiğiyle işlem gören miktarın azaltılmasıyla ilgilidir.

Sahteciliği de ucuzdur: bileşen sinyalleri birleştirildiğinde gerçek dolumlarda brüt ve net ciro hesaplaması yapın, ardından hem mevcut maliyet mekanizmasına göre fiyatlandırın — üretici-alıcı ücretleri ve indirimler, uygulama açığı ve TCA ve kayma maliyeti modeller.

Alfa kütüphanesi çerçevesi onu davet ettiği için ölçekte bir not. WorldQuant, çok büyük bir alfa kitaplığı ve Kakushadze'nin 101 Formülik Alfa bireysel sinyallerin şeklini belgeler. Ancak endüstriyel ölçekte alfa madenciliği aynı zamanda hayal edilebilecek en büyük çoklu test makinesidir ve bu blogun bu konudaki konumu bellidir: boyut arayışı KK bu büyüklükteki bir aramanın beklenen en iyi şansına karşı söndürülmesi gerekir. Deflated Sharpe Oranı, 640 hücreli bir ızgaranın zaten saf anlamlılık testini kırdığını gösteriyor ve The Honest Negative, +%16,35'lik bir örnek dışı kazanan üreten ~37.000 deneme aramasını gösteriyor DSR 0,00'a düşer. Kitaplığın boyutu üstünlüğün kanıtı değildir. Ödemeniz gereken paydadır.

Bir Araya Getirmek

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

Son kutu dekorasyon değildir. Üst üste yığılma KK temel modeller bir boyut seçim prosedürüdür KKve sönmeyen bir topluluk makalesi savunulamaz.

Çıkarımlar

  1. Yapısal farklılık model sayısından daha fazladır. Kovaryans terimi NN. Altıncı bir ilişkili ağacın eklenmesi çeşitlendirme değildir; farklı bir model sınıfı veya ayrık bir özellik alanı eklemek.
  2. Etkili olanı rapor edin.NN bant, bir puan değil. Beş tahminci, beş cevap, bazen iki büyüklük sırası farkla.
  3. Meta-öğreniciyi doğrusal tutun. Kombinasyon katmanındaki karmaşıklık neredeyse her zaman aşırı uyum sağlar ve L1 burada yararlı otomatik model seçimi yapar.
  4. Ya da hiç yok. Örneklem içi temel tahminler konusunda eğitim almış bir meta-öğrenici, yanlış ağırlıkları yüksek bir güvenle öğrenir.
  5. Topluluğun kendisini söndürün. Yığınlama bir aramadır. Bir tane gibi fiyatlandırın.

Daha fazla okuma:

Sorumluluk Reddi: Bu makalede sağlanan bilgiler yalnızca eğitim ve bilgilendirme amaçlıdır ve finansal, yatırım veya ticaret tavsiyesi niteliği taşımaz. Kripto para ticareti önemli bir kayıp riski içerir.

Yazarlar

Eugen Soloviov
Eugen Soloviov

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.

Newsletter

Piyasanın Önünde Olun

Özel yapay zeka ticaret içgörüleri, piyasa analizi ve platform güncellemeleri için bültenimize abone olun.

Gizliliğinize saygı duyuyoruz. İstediğiniz zaman abonelikten çıkabilirsiniz.