← back

Research

Portfolio optimization at the seam of operations research and machine learning — what I work on, and what I've published.

  • Multi-period portfolio optimizationAllocation across horizons, rebalancing as conditions change — not single-shot mean–variance.
  • Risk parity & hierarchical methodsDistributing risk across structure — sectors, then assets — rather than chasing returns.
  • Reinforcement learning for allocationPolicies that learn to allocate under uncertainty, instead of assuming a fixed model.
  • Operations research & convex optimizationThe constraints, duality, and structure underneath it all — the OR core of the PhD.

The idea

Most portfolios either assume a fixed model of risk or chase returns directly. RL-BHRP does neither: it spreads risk hierarchically across sectors and the stocks within them, then uses reinforcement learning to adapt those exposures as market conditions shift — learning how to allocate, rather than assuming.

The method, formally

wi=Wg(i) ηi∣g(i)w_i = W_{g(i)}\,\eta_{i\mid g(i)}
Two-level weights — each holding is its sector’s share times its share within that sector.
Ut+1=wt⊤Rt+1−c∥wt−wt−1∥1−λ[αVwithin+(1−α)Vacross]\begin{aligned} U_{t+1} = {}& w_t^{\top} R_{t+1} - c\lVert w_t - w_{t-1}\rVert_1 \\ &{} - \lambda\big[\alpha V_{\text{within}} + (1-\alpha) V_{\text{across}}\big] \end{aligned}
The learning signal: gross return, minus turnover cost, minus a risk-dispersion penalty.
∑i=1NRCi(w)=σp2(w)\sum_{i=1}^{N} \mathrm{RC}_i(w) = \sigma_p^2(w)
Risk contributions sum exactly to portfolio variance — the basis for parity.
Σ~gh=(η(g))⊤Σgh η(h)\tilde{\Sigma}_{gh} = (\eta^{(g)})^{\top}\Sigma_{gh}\,\eta^{(h)}
Within-sector weights aggregate asset covariance up to the sector level.

Equations from arXiv:2508.11856.

Results · out-of-sample

~120%
wealth compounded, out-of-sample 2020–25 (vs 101% static, 91% sector ETF)
~15% / yr
average annual growth (vs 13% and 12%)
comparable
drawdowns — value added while staying diversified
MetricRL-BHRPBHRPBenchmark
Cumulative return1.201.010.91
CAGR15.2%13.4%12.3%
Annual volatility17.4%16.5%17.3%
Sharpe0.900.850.76
Sortino1.651.531.37
Max drawdown−20.3%−19.1%−18.3%
Calmar0.750.700.67
Information ratio0.690.22—
CVaR 5%−10.2%−9.7%−10.3%
Hit rate (>0)64.2%64.2%62.7%
Full period · 2020-02 to 2025-08 · RL-BHRP vs static BHRP vs sector benchmark

Earlier work

Self-Attention on RNN-based Text Classification

CNSSE / SPIE, vol. 12290