背景知識:特徴量エンジニアリングの一般的な落とし穴

クオンツ取引におけるAlphaの80%は特徴量エンジニアリングから来るが、失敗の80%も特徴量エンジニアリングから来る。


落とし穴1:未来情報の漏洩

問題:特徴量の計算で誤って未来のデータを使用してしまう。

# 間違った例:当日の終値を指標に使用するが、寄付で判断
df['ma20'] = df['close'].rolling(20).mean()  # 当日の終値を含む
signal = df['close'] > df['ma20']  # 当日の終値で判断

# 正しいアプローチ:shift(1)で過去のデータのみ使用を保証
df['ma20'] = df['close'].rolling(20).mean().shift(1)
signal = df['close'] > df['ma20']

検出方法

  • 特徴量とラベルの相関 > 0.9 → 漏洩の可能性が高い
  • モデル精度 > 90% → ほぼ確実に漏洩

落とし穴2:グローバル正規化

問題:データセット全体の統計量で正規化すると、未来の分布情報が漏洩する。

# 間違った例
mean = df['close'].mean()  # 未来のデータを含む
std = df['close'].std()
df['normalized'] = (df['close'] - mean) / std

# 正しいアプローチ:ローリングウィンドウ正規化
df['normalized'] = (
    (df['close'] - df['close'].rolling(20).mean()) /
    df['close'].rolling(20).std()
)

落とし穴3:高相関特徴量の冗長性

問題:複数の特徴量が高度に相関し、情報の冗長性と過学習リスクを生む。

特徴量グループ相関問題
MA5, MA10, MA200.95以上ほぼ同一の情報
RSI, Stochastic0.8以上両方とも過買い/過売りを測定
Close, VWAP0.99ほぼ同一

解決策

  • 相関 > 0.7 の場合は1つの特徴量のみ保持
  • PCAで次元削減
  • 最も説明力のある代表を選択

落とし穴4:ノイズへの過学習

問題:特徴量が多いほど、訓練データのノイズを記憶する可能性が高まる。

特徴量数とサンプル数の経験則:

Samples / Features > 20  -> セーフゾーン
Samples / Features = 10  -> 警告ゾーン
Samples / Features < 5   -> 危険ゾーン

例:1000サンプル、最大50特徴量を使用

解決策

  • 再帰的特徴量削除、検証セットのパフォーマンスを観察
  • L1正規化で自動選択
  • ドメイン知識が統計的有意性より優先

落とし穴5:カテゴリ特徴量のエンコードエラー

問題:カテゴリ特徴量の不適切な処理が情報損失や偽の関係を引き起こす。

# 間違った例:直接数値エンコード(順序を暗示)
sector_map = {'Technology': 1, 'Healthcare': 2, 'Finance': 3}
df['sector'] = df['sector_name'].map(sector_map)  # モデルは 3 &gt; 2 &gt; 1 と考える

# 正しいアプローチ:One-Hotエンコード
df = pd.get_dummies(df, columns=['sector_name'])

落とし穴6:時変相関の無視

問題:特徴量の予測力が異なる期間で不安定。

期間Momentum Factor ICValue Factor IC
2015-20170.050.02
2018-20190.010.04
2020-20210.06-0.02

解決策

  • 単一のICではなくローリングICを使用
  • IC安定性(IC/std(IC))が絶対IC値より重要
  • レジーム条件下での特徴量の有効性を考慮

落とし穴7:データスヌーピング

問題:「有効な」特徴量が見つかるまで繰り返しテストし、実際には過学習。

100個の特徴量をテスト
-> p<0.05で5個が「有意」と予想
-> これらの5個は単なるランダムノイズの可能性

解決策

  • Bonferroni補正を使用:p値閾値 = 0.05 / テスト数
  • 独立したOOSデータセットを予約
  • 「成功した」特徴量だけでなく、すべてのテスト特徴量を記録

落とし穴8:取引コストの影響を無視

問題:高回転率の特徴量は実際の取引でコストに食われる。

Feature A: IC = 0.05, 回転率 200%/
Feature B: IC = 0.03, 回転率 50%/

片道コスト0.2%と仮定:
Feature Aのコスト: 200% x 0.2% x 2 = 0.8%/
Feature Bのコスト: 50% x 0.2% x 2 = 0.2%/

コスト後、Feature Bの方が良いかもしれない

特徴量エンジニアリングチェックリスト

チェック項目合格基準
未来情報なしすべての特徴量がshift(1)以前のデータを使用
ローリング正規化グローバルmean/stdを使用しない
低相関特徴量間の相関 < 0.7
サンプル比Samples / Features > 20
IC安定性IC / std(IC) > 0.5
コスト実現可能性回転率コスト後もプラスリターン
この章を引用する
Zhang, Wayland (2026). 背景知識:特徴量エンジニアリングの一般的な落とし穴. In AIクオンツ取引:ゼロからイチへ. https://waylandz.com/quant-book-ja/Feature-Engineering-Common-Pitfalls
@incollection{zhang2026quant_Feature_Engineering_Common_Pitfalls,
  author = {Zhang, Wayland},
  title = {背景知識:特徴量エンジニアリングの一般的な落とし穴},
  booktitle = {AIクオンツ取引:ゼロからイチへ},
  year = {2026},
  url = {https://waylandz.com/quant-book-ja/Feature-Engineering-Common-Pitfalls}
}