Machine Learning in Finance: Alpha Research and Signal Generation
Module: Fintech AI | Difficulty: Advanced
Overfitting in Finance
Feature Engineering
Cross-Validation for Time Series
Evaluation
| Metric | Definition | |--------|-----------| | IC | Correlation of signal and return | | Rank IC | Spearman correlation | | Sharpe | Return / Volatility | | Turnover | Trading volume / AUM |
import numpy as np
from sklearn.model_selection import TimeSeriesSplit
class FinancialML:
def __init__(self, model):
self.model = model; self.feature_importance = None
def time_series_cv(self, X, y, n_splits=5):
tscv = TimeSeriesSplit(n_splits=n_splits)
scores = []
for train_idx, val_idx in tscv.split(X):
self.model.fit(X[train_idx], y[train_idx])
pred = self.model.predict(X[val_idx])
ic = np.corrcoef(pred, y[val_idx])[0,1]
scores.append(ic)
return np.mean(scores), np.std(scores)
def purged_cross_validation(self, X, y, embargo=5):
# Remove overlap between train and test
pass
Research Insight: Financial ML is fundamentally different from other domains because the signal-to-noise ratio is extremely low. A model with IC=0.05 is considered good. The key is to avoid overfitting through rigorous cross-validation and simplicity bias.