Honest limitations
Every gap in the methodology, data, and execution that an interviewer (or a sceptical PM) would push on. Listed in one place so you can pre-empt the conversation. The point isn't that the project is broken — it's that knowing where the cracks are matters more than papering over them.
Data limitations
Universe survivorship bias
The universe is sourced from currently-outstanding bonds. Bonds that defaulted, were called early, or had material corporate-action shocks during the backtest period are absent. Real historical performance was messier than what we see.
No historical conversion-price data
Refinitiv subscription doesn't expose historical conversion prices (only the current snapshot). For reset-clause bonds whose conversion price has changed during the backtest, today's price is applied retroactively — making them look artificially cheap in the past. Mitigation: a separate "no-reset bonds only" backtest is run alongside the main one.
Dealer mid is indicative, not transacted
Refinitiv TR.MidPrice is what dealers SAY they'd quote, not what trades actually happen at. The bid/ask version of the backtest models execution at the dealer's quoted bid (sell) / ask (buy), but even these can be soft. Real slippage probably 30-100bp more than modeled.
Credit spread is rating-based
Issuer-specific CDS isn't pulled per-trade; instead a rating-spread lookup table is used. Some issuers have CDS that's wider or tighter than their rating implies. The signal you see is sensitive to this — a 100bp mismark on credit spread can flip cheap-to-rich.
Stock borrow assumed free + permanent
To delta-hedge you short the underlying. On the unrated small-caps that top the cheap list, borrow may be unavailable at any price, cost 5-10% annualized, or get recalled at the worst time. Borrow costs alone would erase the alpha on some signals.
No transaction costs above 60bp simulated
Modeled costs assume tight-spread dealer quotes. In a vol spike, dealer spreads widen 2-3×. The strategy was never tested through such an environment in the backtest window.
Backtest limitations
3 years is still short
The backtest covers May 2023 → May 2026. Doesn't include a global vol crisis (2008, 2020) or a JP-specific event (1990 crash, 2011 earthquake). Sharpe in a stress regime is unknown.
77 trades is statistically thin
Bootstrap 95% CI on alpha is [-1.7%, +7.1%] annualized. The true expected return is somewhere in that range — we can't yet claim the signal is statistically real with 5% confidence.
Top 5 issuers = 113% of P&L
The strategy's edge is concentrated in a handful of names (Rohm, Daifuku, Taiyo Yuden, Nikkon, Obara). The other 12 bonds traded were net flat or negative. Is the signal robust, or are we lucky in 5 specific issuers? Can't tell with 3 years.
No walk-forward parameter tuning
The 60-day exit horizon, 5% cheap threshold, and 25% cheap cap were picked from the data, not derived from theory. With more time these would be re-optimized on each rolling window separately to avoid the obvious data-mining bias.
Hedged-trade delta is entry-only
Delta is computed at entry and held fixed through the trade. Real desks rebalance the hedge as delta drifts. The backtest's "5-day rebalance" line item is a cost approximation, not a true rebalanced P&L.
No regime adaptive sizing
Position sizing is uniform (1/N of equity per slot). A real strategy would size up in high-vol regimes (where the backtest shows 62% win rate) and size down in low-vol (40% win rate). Not implemented.
Operational limitations
No execution layer
This is a screening tool. There's no FIX connectivity, no order-management system, no broker integration. A real desk would wire this into an existing OMS.
No counterparty / funding limits
Backtest assumes unlimited repo availability and stock-borrow lines. In practice prime brokerage is gated by relationship and capital. Capacity is in part a counterparty problem.
No corporate-action handling
Splits, special dividends, mergers, tender offers — all ignored. In real trading these create one-off events that hit the bond and stock differently and require manual handling.
Refinitiv Workspace must be running
The live data pull depends on a logged-in Refinitiv Workspace on a specific machine. If Workspace closes, the daily agent falls back to free sources (equity prices via yfinance, JGB curve via MoF) — which means equities stay fresh but bond prices don't update.
Total book vega cap not enforced
The risk-limits page defines a vega cap but the simulator doesn't yet enforce it on a trade-by-trade basis. Would require per-trade vega tracking and a running sum. Listed in the roadmap.
No stress tests
Parallel rate shifts, equity crashes, vol spikes — none implemented. A real desk runs these nightly. The risk framework defines limits but doesn't simulate scenarios where they'd bind.
Model limitations
Constant volatility (no vol surface)
The TF tree uses a single vol number (60-day realized) for the entire option's life. Real CB pricing should use a term structure of implied vols. The Goldman-Sachs CB model handles this better.
Constant credit spread
Spread is held fixed through the option's life. No credit-spread vol, no spread-equity correlation, no jump-to-default modeling.
Continuous dividend yield
Dividends are modeled as a continuous yield, not discrete payments. For short-dated bonds with high payouts this introduces small pricing error.
European reset only in MC
The Monte Carlo reset pricer assumes the reset trigger fires at fixed dates with fixed terms (80% trigger / 70% floor). Real prospectus terms vary and can be path-dependent in more complex ways. Reset bonds are flagged but the MC handles the common case only.
QuantLib sanity check ±1%, not zero
Our pricer matches QuantLib's binomial CB engine within 0.5-1% on plain-vanilla bonds. The residual reflects different conventions for how the credit spread is applied to the conversion leg's discount factor. Not a bug, but real desks would converge to a single convention.
No model uncertainty quantification
The cheap% number has no error bars. In reality the model price has uncertainty from vol input, spread input, etc. A proper version would propagate input uncertainty through to a cheap%-with-CI.
What to ask me about these
If you read all of this and want to push back, the most fertile questions are: (1) "How would you fix the historical conversion-price problem if you had Bloomberg instead of Refinitiv?" — answer: pull issuer SEDOL or ISIN with date-parameterised TR.IRConvCurrentPrice equivalent, or parse EDINET prospectuses, or maintain a reset-event log manually. (2) "If borrow costs 5% annualized on the cheap small-caps, does the strategy still work?" — answer: probably not on those names; the alpha would compress to IG-rated names where borrow is free, dramatically shrinking the universe. (3) "What's the one thing you'd change before sizing this up to $10M?" — answer: extend the backtest to a stress regime, even if synthetic (e.g., 2008 stocks/vol re-anchored to today's JP names) before deploying.