Back to Community

Alternative data sources for quant models

SHSharpeShooter
Feb 22, 2026
1,396 views
44 posts
strategy
alternative-data

Beyond traditional price/volume data, what alternative data are people using in their research?

Popular sources:

  • Satellite imagery (parking lot counts, crop health)
  • NLP sentiment (news, earnings calls, social media)
  • Web traffic (SimilarWeb, Google Trends)
  • Credit card transactions (spending patterns)
  • Patent filings (innovation signals)
For competitions, we're limited to provided data, but these inform feature engineering intuitions.

43 Replies

11
RIRiskQuant1d ago

For those wondering: yes, you can use external Python packages in submissions, but they must be in the approved list. No custom C extensions.

39
ALAlphaNova Team5d ago

One more thing: the scoring engine uses a held-out test period that you never see. So your validation score is the best you can do.

30
NEnewbie_trader6d ago
import numpy as np

from scipy import optimize

def max_sharpe_portfolio(returns, rf=0.0): n = returns.shape[1] init_w = np.ones(n) / n bounds = [(0.0, 0.1)] * n constraints = {'type': 'eq', 'fun': lambda w: np.sum(w) - 1.0} result = optimize.minimize( lambda w: -(np.mean(returns @ w) - rf) / np.std(returns @ w), init_w, bounds=bounds, constraints=constraints ) return result.x

Here's a simple max-Sharpe optimizer for reference.

40
COCovarianceKid2d ago

One thing to watch out for: survivorship bias in the training data. Make sure you include delisted securities.

3
RIRiskQuant5d ago

Turnover control is crucial. My best performing model has a turnover of only 8% daily. High turnover strategies rarely survive transaction costs.

25
SHSharpeShooter1d ago

I disagree about the GARCH approach. In my experience, realized volatility estimators (like the Rogers-Satchell estimator) outperform parametric models.

5
SHSharpeShooter1d ago
import numpy as np

from scipy import optimize

def max_sharpe_portfolio(returns, rf=0.0): n = returns.shape[1] init_w = np.ones(n) / n bounds = [(0.0, 0.1)] * n constraints = {'type': 'eq', 'fun': lambda w: np.sum(w) - 1.0} result = optimize.minimize( lambda w: -(np.mean(returns @ w) - rf) / np.std(returns @ w), init_w, bounds=bounds, constraints=constraints ) return result.x

Here's a simple max-Sharpe optimizer for reference.

1
BUBugHunter9914h ago

One more thing: the scoring engine uses a held-out test period that you never see. So your validation score is the best you can do.

37
GRGradientHunter5d ago

Interesting thread! I've been exploring reinforcement learning for portfolio allocation. The challenge is defining the right reward function.

Post a Reply