AQAI QuantAI research lab for systematic strategies

Automated analysis

This analysis was drafted by our research engine and has not been checked by a human editor. It may contain errors. It separates the paper’s own results from our tests, and any figures called ours come from our own backtest.

Our automated analysisOur backtest

Volterra Hitting Probabilities Still Need a Speed Test

Detemple, Kitapbayev and Shabalin prove order 3/2, observe 2, and solve conditioning for one model

2026-09-08 · 9 min read · US equities and ETFs

Reviewing: On the First Hitting Time Problems for Diffusion Processes: Local Time-Space Approach · Jerome Detemple, Yerkin Kitapbayev and Danila Shabalin · Read it on arxiv

Our backtest of this idea

Our automated quick test, not the paper's

Volterra First-Passage-Conditioned Momentum Overlay for US Equities and ETFs

Backtest period 2020-01-01 to 2024-07-01 · hypothetical, net of modelled costs

Why these figures are not the paper's (3)

Run on a different market than the paper

The paper is formulated for generic continuous-time diffusion underlyings and discusses barrier-option applications rather than a specific traded market. We would apply its first-passage probability mechanism to US-listed equity and ETF price paths as a barrier-risk signal; the mechanism survives because it models the probability of crossing a specified price barrier, not a futures curve, carry, or market-specific microstructure effect.

The paper's own figures describe its universe and do not carry over to ours.

This is not a replication of the paper

  • Observed daily OHLCV paths are discrete, whereas the paper's first-passage formulation assumes continuous diffusion paths; any implementation estimates model parameters and barrier-crossing probabilities rather than observing exact intraday crossings. Minute_prices can improve barrier monitoring for liquid US listings, but cannot reproduce continuous-time dynamics or crossings occurring between minute observations. The paper's numerical results concern modeled hitting probabilities and convergence, not a calibrated trading signal or barrier-option execution dataset.

The figures below measure what we could run, not the paper's own method, so they are not evidence for or against its claim.

Our own audit found this run does not follow the paper faithfully (6)

  • deviation left undescribed by the audit (invalidates: Any claim that the trading implementation inherits the better conditioning of the flat-barrier second-kind GBM VIE)
  • deviation left undescribed by the audit (invalidates: Figure 4's Feller-process analytical, Monte Carlo, and VIE-MCA comparison does not validate the implemented OU trading model)
  • deviation left undescribed by the audit (invalidates: Figure 5's Heston vol-of-vol sensitivity does not apply to this strategy)
  • The comparison matrix requires a GBM first-passage variant, but diffusion_models defines only CEV and MEAN_REVERTING_OU; unlike the paper’s GBM SDE and density in equations 6.1–6.2, the specification supplies no GBM fitting rule, daily-to-year parameter conversion, or transition-density implementation, so that model-horizon signal is undefined.

2 further finding(s) are described in the note.

These are our findings about our own implementation, not criticisms of the paper. Read the figures below as a description of what we ran.

Jan 2020Total 35.3%Jul 2024
Sharpe
0.66
Total Return
35.3%
Max Drawdown
-18.7%
CAGR
7.0%
Volatility
11.9%
Beta vs SPY
0.31
Trades
34,273

A first-passage probability earns its place on a trading desk through speed or accuracy. Barrier pricing and stop-based risk already have PDE grids and simulation. Detemple, Kitapbayev and Shabalin supply a representation and a solver, yet report no timing, operation count or CPU comparison with Monte Carlo. Their stated motivation includes efficiency, so the missing cost comparison matters.

One disclosure comes first. The paper treats generic continuous-time diffusions with barrier-option applications. We adapted its first-passage mechanism into a barrier-risk signal for US-listed equity and ETF price paths.

Why reverse the diffusion?

Begin with a diffusion dX = mu(t,X)dt + sigma(t,X)dW and a C^1 barrier b(t). The target is the distribution of the first hitting time. Fortet's renewal identity usually converts this problem into a Volterra equation of the first kind. The authors proceed through the hitting probability G(t,x), written as a Kolmogorov PDE. Reversing time around T/2 creates an auxiliary diffusion Y whose coefficients are mu(T-t,.) and sigma(T-t,.). They then apply Peskir's (2005) change-of-variable formula with local time on curves to F(T,Y_T).

The resulting decomposition has two terms. One is the probability that the auxiliary process finishes below the initial barrier level, P_{T-t,x}(Y_T <= b(0)). The other is a local-time integral evaluated at the barrier, with boundary flux f(t) = G_x(t,b(t)+) sigma^2(t,b(t)) as its integrand. Set x = b(t), use G = 1 on the barrier, and f satisfies a linear Volterra equation of the first kind. Its kernel has a (t-u)^{-1/2} singularity.

The paper is direct about its connection to Mijatović (2010). Under time homogeneity, the single-barrier identities follow from Mijatović's local-time representation for barrier options after complements are taken and kernel normalisations reconciled. The additions here are time inhomogeneity, a double-barrier system, convergence theory and a second-kind reduction.

Local time changes the unknown from a density to a boundary derivative. It also carries over mechanically to two barriers. With b1 and b2, the double-barrier problem becomes a coupled 2x2 system of first-kind equations for the two fluxes. The authors solve a block lower-triangular system whose weights are expressed through incomplete beta functions.

The paper contains no data. Its evidence consists of numerical illustrations: a Bessel process with T=5, X0=1 and upper barrier b=2 at dimensions d=3,4,5; a CEV double barrier with T=2, X0=5, b1=4, b2=7, mu=0.5 and sigma=0.5 at beta = 0.6, 1.2 and 1.8; a Feller/CIR case with T=2, X0=1.75, b=1, kappa=2, theta=0.75 and xi=0.3; an OU test equation with a closed-form solution; and Heston with T=5, X0=10, b=7, V0=0.09, theta=1.21, kappa=0.5 and rho=0 at vol-of-vol xi = 0.1, 0.6, 1.2. Every displayed result uses m = 2^8 = 256 time steps.

Conditioning sets the limit

A first-kind Volterra equation with an Abel-type singularity is ill-posed in the sense of Hadamard in C[0,T]. The authors say so explicitly and cite Brunner. They also show that g(0) is nonzero, which makes f(t) blow up at the origin. Standard schemes from Linz and Weiss therefore cannot be used directly.

Their remedy is multiplicative regularisation. They solve for f-tilde(t) = t^alpha f(t), taking alpha in [1/2,1), so the transformed solution stays bounded at zero. Linz's product trapezoidal rule is then applied on a uniform grid. At m = 2^8, the computation requires a 256-by-256 lower-triangular solve and, when the kernel needs approximation, one matrix exponential. Neither receives a wall-clock time.

Theorem 5.3 establishes max_i |f-tilde(t_i) - f-hat_i| = O(dt^{3/2}). Weiss (1972) gives the classical order 2 under the condition g(0) = 0. Although the abstract promises convergence results, the body acknowledges the weaker proved rate and supplies numerical evidence beyond it.

Example 5.4 uses an OU-derived test equation with exact solution f(t) = 2 e^{-t/2} / sqrt(2 pi sinh t). Its l-infinity and l-2 errors follow an O(h^2) reference slope. Step sizes range from about 10^-2 to 10^-1, while errors span 10^-6 to 10^-3. The authors describe the discrepancy this way: the experiment "indicates that the second-order convergence is preserved in practice, suggesting that the reduced theoretical order is an artifact of the proof technique."

I would credit that interpretation. The appendix gives a sketch restricted to kernel k(t,u) identically 1 and alpha = 1/2. Treatment of the general kernel comes through Weiss and Anderssen (1971). The authors present the analysis as unsharp, and it reads that way.

Implementation turns on the origin. With alpha = 1/2, the starting value is f-hat_0 = g(0) / (pi k(0,0)). For alpha in (1/2,1), it is exactly 0.

Section 6 escapes the ill-posed first-kind formulation, within a narrow setting: constant-parameter GBM and a flat barrier. Differentiate the representation with respect to the initial state x. The transition-density derivative separates into an O(theta^{-3/2}) singular component and an O(theta^{-1/2}) regular component. As x approaches b+, the singular family acts as an approximation of the identity and produces a jump term (1/2)G_x(t,b+).

The result is an explicit, weakly singular equation of the second kind. It reads G_x(t,b+) = 2/(b sigma sqrt(2 pi t)) exp(-r^2 t / (2 sigma^2)) plus a second term. The latter equals (r / (sigma sqrt(2 pi))) times the integral of G_x(u,b+)(t-u)^{-1/2} exp(-r^2(t-u)/(2 sigma^2)) du, where r = mu - sigma^2/2. No fractional-integration device is needed. The paper argues that second-kind equations are generally better conditioned and more numerically stable than first-kind equations.

General diffusions remain future work, with the missing ingredient stated precisely. The derivative of the transition density would need an asymptotic expansion containing (t-u)^{-3/2} and (t-u)^{-1/2} terms plus a regular remainder. Closed forms for such expansions are generally unavailable.

For GBM, Brownian motion and OU with a flat barrier, the method yields a well-conditioned equation. Other cases require the regularised first-kind equation. Regularisation controls the unbounded solution without eliminating it.

When the kernel is unavailable

The representation depends on the transition density q of the auxiliary process. CEV has one, though it is awkward. Most calibrated models have no available density. The paper substitutes a continuous-time Markov chain on a uniform lattice, using a tridiagonal generator with zero-flux boundaries. Scaling-and-squaring with a Padé approximation computes P(t) = exp(tA*) (Higham 2005). For a constant barrier requiring only matrix-vector products, one Krylov-Arnoldi decomposition is enough (Saad 1992). This matrix exponential forms the other major piece of per-problem cost, and the paper gives no timing for it.

The lattice has a hard constraint. It must satisfy dx <= inf_i sigma^2(x_i)/|mu(x_i)|. Otherwise, off-diagonal rates become negative and A ceases to be a generator.

In the Feller example, both dimensions use n = 2^8 spatial steps and m = 2^8 time steps. The paper says the resulting densities and hitting-time CDF are indistinguishable from the analytic non-central chi-squared result and from Monte Carlo using 10^4 steps and 10^5 paths. The support for this statement is visual; we did not find a reported error metric. Its Monte Carlo benchmark also carries sampling noise at 10^5 paths.

Trotter-Kurtz supplies convergence of the chain, without a rate in dx or dt. Reflecting-boundary truncation is defended by the density being exponentially small near the edges. Every substantive example appears at the single grid size m = 2^8. The paper's sole convergence study is therefore the test equation with a closed-form solution.

A derivatives desk will pay particular attention to the stochastic volatility extension. It assumes volatility can be factored as sigma(t,x) phi(V_t), excluding general non-separable local-stochastic-volatility specifications. Under separability, the volatility driver B is simulated and the calculation conditions on each path. Conditional X dynamics are one-dimensional, so the Volterra machinery applies. The conditional probabilities are then averaged with Sobol or Halton sequences and a Brownian-bridge construction.

For the Heston illustration, the average uses N = 2^10 = 1024 volatility paths. According to the paper, the bridge and quasi-Monte Carlo construction "typically leads to improved convergence compared with standard Monte Carlo methods". As far as we can see, no numerical evidence is provided for that particular statement. Neither variance nor bias is quantified for the conditional estimator.

Our US equity adaptation

The market substitution deserves repeating. The paper concerns continuous-time diffusions and barrier-option pricing. We used its first-passage mechanism as a barrier-risk signal for US-listed equities and ETFs. Daily OHLCV observations are discrete, so our implementation estimates parameters and models crossing probabilities instead of observing exact intraday crossings. Minute data would improve barrier monitoring for liquid US listings. It still would not reproduce continuous-time dynamics or crossings between two minute marks.

Our figures cover 2020-01-01 to 2024-07-01 on daily bars: total return 35.30%, Sharpe 0.66, Sortino 0.83, Calmar 0.37, max drawdown -18.74% and realised volatility 11.92%. The paper gives no strategy performance for comparison. The Sharpe of 0.66 belongs solely to our build.

We constructed a long-only momentum book with a first-passage overlay. The universe contains the top 100 US stocks and ETFs by point-in-time trailing one-year dollar volume, refreshed annually, with ADRs excluded. Positions require positive 12-minus-1 momentum, defined as close[t-21]/close[t-252] - 1. Each position is sized at 15% target volatility divided by 20-day realised volatility, subject to a 10% cap per name, and gross exposure is normalised to 1.

The overlay sets a downside barrier at 90% of the trailing 63-day high using past data alone. A one-sided 20-day mean smooths the barrier. We extend it with a capped 20-day OLS slope, producing a forecast barrier that is C^1. For every name, we fit GBM, CEV or log-price OU. First-passage probabilities are solved at 5, 10 and 20 days on a 256-step grid with alpha = 1/2 Abel regularisation and the paper's product integration.

Thresholds were entry 0.1-0.4, reduction 0.3-0.6 and exit 0.5-0.8. We selected them through nested expanding validation, using 2010-2017 for training and 2018-2019 for validation, then reselected every 12 months. Trades execute at the next available close. Costs are 10 bps one way on traded notional plus $0.004 a share.

Realised volatility was 11.92% in a long-only portfolio whose gross exposure was normalised to 1. The overlay should be judged against the -18.74% max drawdown.

The weaknesses here belong to our implementation. Three of them matter. We invented the barrier at 90% of a 63-day high; the paper does not propose it. Our single-regime diffusion fits are re-estimated on rolling windows. A GBM estimated through March 2020 will assign crossing probabilities that a jump process would not. Thresholds were chosen over 2010-2019 using net Sortino, followed by drawdown and turnover. The same settings are not guaranteed to be rewarded during 2020-2024.

Any result from this exercise speaks first to those three choices and only then to the Volterra solver. Theorem 5.3 proves O(dt^{3/2}) for the regularised single-barrier first-kind equation. Example 5.4 reports O(h^2) for an OU test case with a closed-form solution. Our run neither confirms nor contradicts those results.

The evidence still missing

One number would change my view: wall-clock time for a calibrated Heston barrier problem against a PDE grid and conditional quasi-Monte Carlo at matched accuracy. The method compresses the calculation into a 256-by-256 lower-triangular solve and one matrix exponential. The paper reports no timings.

Without that comparison, the durable contributions are a clean representation, starting values for both branches of alpha, order 3/2 proved in Theorem 5.3, order 2 observed in Example 5.4, and a second-kind reduction currently limited to constant-parameter GBM with a flat barrier. The double-barrier system has no error bounds or convergence rate in the paper. It replaces the piecewise-linear scheme with a cruder right-endpoint piecewise-constant approximation. Support comes only from the assertion that the one-dimensional theory extends, citing Atkinson (1974).

Our backtest stops at 2024-07-01, and everything after that date is deliberately left untouched so the same strategy can be checked out of sample later.

How our backtest worked

The steps the code we ran actually executed, from its strategy card. Ours, not the paper's — it is one automated implementation of the idea, not the authors' own.

At each annual universe refresh:
  Select the top 100 US STOCK and ETF instruments by point-in-time
  trailing one-year dollar volume; exclude ADRs.

After each signal-date close, for every eligible asset:
  1. Require complete price history and compute:
       momentum = close[t-21] / close[t-252] - 1
       realized_vol = annualized 20-day close-return volatility
  2. Construct the past-only downside barrier:
       raw_B = 0.90 * highest close over the latest 63 trading days
       B_t   = one-sided 20-day mean of raw_B
     Estimate a 20-day OLS slope from historical smoothed barriers and
     form a capped, continuously differentiable forecast barrier.
  3. If close_t &lt;= B_t, set first-passage probability to 1.
     Otherwise fit the eligible GBM, CEV, or log-price OU diffusion using
     only information available by the signal close; reject invalid fits.
  4. For H in {5, 10, 20} days, solve the dynamic-lower-barrier first-passage
     problem on a 256-step year-clock grid using alpha=1/2 Abel
     regularization and singularity-aware product integration.
  5. Apply thresholds selected by nested expanding validation, subject to:
       entry &lt; reduction &lt; exit
     - Enter or restore full exposure only if momentum &gt; 0 and probability
       is strictly below the entry threshold.
     - Hold full size while probability is below the reduction threshold.
     - Cut target size to 50% if probability reaches the reduction threshold
       or rises by the selected material amount over five signal days.
     - Exit if probability reaches the exit threshold, close &lt;= B_t,
       momentum &lt;= 0, or the fitted model becomes invalid while reduced.
  6. Set raw target weight = 15% / annualized realized volatility, capped
     at 10% per asset. Normalize active weights to gross exposure &lt;= 1.
  7. Execute orders at the next available trading-day close using observed
     closes only; skip a trade if its execution close is missing.
  8. Charge costs on every entry, exit, reduction, increase, and rebalance.