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

Low, Medium, High risk labels need to forecast forward volatility

Six AI portfolio studies inform an untested risk classifier; our US adaptation returned 7.68%, 2020 to mid-2024.

2026-10-31 · 7 min read · Machine Learning Risk Classification and Portfolio Risk Management · US equities

Reviewing: AI-Based Stock Risk Classification and Portfolio Analysis · Bhoomika Nitin Patil and Rashmi Kulkarni · Read it on openalex

Our backtest of this idea

Our automated quick test, not the paper's

Purged Forward-Volatility Classification and Defensive Top-500 Selection

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

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

The paper reports no results of its own

This is a theoretical paper — derivations and proofs, with no measurement on market data. The backtest below is a strategy we built from its idea, not a test of anything the authors claimed.

Run on a different market than the paper

No required market substitution: the proposed stock-risk framework is market-agnostic. US equities provide an implementation universe, not a replication of the foreign-market studies reviewed.

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

This is not a replication of the paper

  • The framework does not establish a single calibrated risk-label definition or allocation rule in the supplied text. The proposed future-volatility labels and monthly low-risk allocation are explicit research design choices, so the resulting backtest tests an operationalization rather than replicating an author-reported strategy.

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

  • Hypothesis next-session adjusted-open execution.: Use next-session adjusted close for every portfolio and transaction. (invalidates: Any hypothetical results specific to next-open rather than next-close fills)

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 7.7%Jul 2024
Sharpe
0.19
Total Return
7.7%
Max Drawdown
-20.6%
CAGR
1.7%
Volatility
9.1%
Beta vs SPY
0.25
Trades
11,117

A Low/Medium/High risk label earns its place only by telling you something about next month's volatility beyond what last month's volatility already says. Patil and Kulkarni name the ingredients for that test: future-window labels and rule-based baselines. Their review never brings them together in a comparison of forecasts against trailing volatility. It gets close enough to a working system to leave the implementer with one unresolved choice, the choice that determines whether classifier accuracy means anything.

The classifier exists on paper

Patil and Kulkarni present a narrative review with no empirical findings of their own. They draw on six external studies and Patil's own M.E. project synopsis to propose a desktop application. It would classify each stock as Low, Medium or High risk, then use those classifications to describe the portfolio. The aim is decision support. Retail tools display prices and profit or loss; the proposed application would identify risky holdings and show how much portfolio value they represent. The authors claim no return edge, leaving no performance figure of theirs for a backtest to confirm or refute.

The design starts with six indicators for each stock: returns, volatility, moving averages, RSI, beta and maximum drawdown. A Random Forest, an ensemble of decision trees trained on those six indicators, assigns the risk classes. A Decision Tree provides an interpretable comparison; K-Means offers an optional step for grouping stocks. The portfolio layer would show the value assigned to each class, concentration in the largest holdings, diversification and overall exposure. Planned evaluation uses Accuracy, Precision, Recall, F1 and a confusion matrix. Scores would be macro-averaged across the three classes, with chronological splits instead of random ones.

The six studies span five named markets and asset types. Singh et al. used CNN-LSTM stock selection followed by a Mean-Variance optimizer on 21 NSE stocks from January 2005 to December 2021. Benli et al. forecast covariance matrices for high-frequency Turkish insurance equities. Alameer and Alshehri trained a CVaR-penalized direct reinforcement learner using 15-minute SPY bars from August 2018 to August 2021. Nanayakkara et al. developed a platform combining an LSTM and Brownian Motion for the Colombo Stock Exchange. Solin et al. combined an ANN and a genetic algorithm for stock portfolios, without naming a market. Muganda and Kasamani trained an LSTM on 10 years of energy-spread prices.

The review acknowledges that this literature does not supply its exact end-to-end design: classify individual stocks into Low/Medium/High Risk, then interpret the portfolio's combined exposure. Benli et al. come closest. Their volatility-state classifier routes observations to regime-specific learners to improve turning-point detection.

What does High predict?

The authors identify the label problem themselves. Risk classes, they write, "cannot be treated as naturally existing labels unless the study defines how Low, Medium, and High Risk are constructed". Their conclusion puts this requirement first: "The most important methodological requirement is to define Low, Medium, and High Risk labels transparently and evaluate them without temporal data leakage". They also warn that generating labels from the classifier's input indicators can produce apparent accuracy without predictive value. They propose labels defined "using a transparent rule or future-window outcome", with features computed only from information available on the prediction date.

Those alternatives serve different purposes. Apply a transparent rule to today's volatility, beta and drawdown, and the label describes the stock today. A Random Forest using the same six indicators can learn that rule. Its F1 then records how well the forest memorizes a threshold. Label the stock by realized volatility over the next 21 sessions, and the task becomes forecasting. Only that version gives the classifier something to earn.

The paper puts both alternatives in the same sentence. Its second research gap then excludes labels derived directly from classifier inputs, leaving either a future-window outcome or a rule applied to other data. It makes no choice. Label definition is the authors' leading requirement, yet the definition remains open. Everything claimed by the evaluation section depends on that decision.

A forecast must also clear a demanding baseline. Volatility persists, so trailing volatility is the comparison any forward label needs to beat. The authors set the right bar when they call for "comparison with simple baselines such as rule-based risk thresholds".

Other people's results

Every headline performance figure in the review comes from someone else's system. Singh et al. report a 25.39% average annualized cumulative return for CNN-LSTM+MV. Their full row gives 24.45% for LSTM+MV, 23.91% for CNN+MV, 24.01% for CNN-LSTM+1/N and 19.5% for Random+MV. Against naive equal weighting of the same shortlist, the deep model gains 1.38 points. The gap between CNN-LSTM+MV and Random+MV is 5.89-point, of which the optimizer accounts for 1.38 points when comparing CNN-LSTM+MV with CNN-LSTM+1/N. The review places little weight on that figure. It calls the lesson "architectural rather than numerical", a fair reading.

Two reported results deserve closer examination. Accuracy above 85% for Colombo price forecasts arrives without a definition; for a continuous target, accuracy is ambiguous. The review also approvingly cites Singh et al.'s 10-fold cross-validation. Elsewhere, its own evaluation section warns that random shuffling of financial series can leak future information. We did not find whether the review's account establishes that those folds preserved time order.

The authors recognize the difficulty of transferring results between markets. They name NSE equities, Colombo stocks, Turkish insurance equities, SPY and energy spreads as reasons to doubt generalization. These figures also concern different tasks. Covariance forecasting achieves up to 35% lower error, while price forecasting on energy spreads reports RMSE of 2.25 to 5.62. None of these results measures a three-class stock risk classifier in any market.

Class shares leave correlation out

The portfolio layer starts by reporting the percentage of value assigned to each risk category. That can give a misleading picture. A portfolio made entirely of Low-labelled stocks may still be a large bet on one factor. Twenty utilities, each capped at 5%, could all receive Low labels and still move together. Class shares locate the money; they say nothing about co-movement.

The paper recognizes this in its fourth research gap: "correlations between holdings matter". It says covariance and concentration analysis "should therefore complement individual risk classes". Yet the architecture treats the covariance view drawn from Benli et al. as an advanced add-on, and calls CVaR "optional". The conclusion does include covariance among the system's analyses, together with concentration, diversification and downside risk. Section 4.3 also covers portfolio volatility and each holding's contribution to overall risk.

The objection is therefore about priority. Class shares lead the report while covariance receives the advanced-add-on label. Benli et al. report up to 35% lower out-of-sample covariance error using LightGBM and SVR. Risk Parity delivered the most consistent variance reduction across their stock pairs. Covariance belongs at the centre of the portfolio report, with class shares alongside it as a description.

Our US adaptation

We could not reproduce an authors' strategy because the paper specifies neither labels nor an allocation rule. We implemented one version of the idea, making those design decisions ourselves. The framework is market-agnostic, so we used US equities. This adaptation says nothing about the foreign-market studies reviewed in the paper.

Our universe comprised the top 500 non-ADR US stocks by capitalization, screened again each year. We traded daily from 2020-01-01 to 2024-07-01. The features followed the paper's indicator families: returns over 5, 21, 63 and 126 sessions, plus volatility over 21, 63 and 126. We also measured distance from the 21, 63 and 200-day averages, with drawdowns over 63 and 252-day windows. A 14-day RSI and 126-day beta against SPY completed the set.

We labelled stocks by annualized volatility over sessions t+1 to t+21, dividing that outcome into terciles using quantiles established only on training data. Each month, we refit on the preceding 756 sessions, requiring at least 504 usable dates. Any label ending after the test month began was purged. The Random Forest had 300 trees, depth 8 and a minimum leaf of 100. The Decision Tree had depth 5. Each model held its own portfolio of predicted-Low stocks, weighted at min(1/N, 5%). Additions occurred monthly and exits daily; fills used the next close, and residual cash earned zero.

The authors report no performance of their own to place beside ours. Our figures come from a single automated pass, answering a narrow question: does a purged classifier of forward volatility select a defensive book?

From 2020-01-01 to 2024-07-01, our headline book returned 7.68% in total. Sharpe was 0.19, Sortino 0.23 and Calmar 0.08. Volatility reached 9.14%, with a worst drawdown of -20.59%. This is weak performance. The book kept volatility low, yet lost a fifth of its value at the worst point in exchange for under 8% total return.

Start with the 9.14% volatility and -20.59% drawdown. Those are the figures on which a defensive portfolio should be judged. We do not report its beta. To justify the classifier, the book would need to beat a trailing-volatility screen after costs, and this run does not report that comparison.

One automated pass using a 21-session label and fixed hyperparameters cannot settle whether the authors' framework works.

Leave optimization until later

The authors recommend understanding stock-level risk characteristics before adding optimization. That sequence holds up. A risk classifier that fails to beat a trailing-volatility threshold out-of-sample contributes no information; putting an optimizer on top would only add noise. I would change my view of the Random Forest's role if its predicted-Low portfolio delivered lower realized volatility and drawdown than the trailing screen across more than one regime. Until a backtest demonstrates that, the proposal's useful contribution is its stated evaluation discipline: chronological splits, macro-averaged scores and rule-based baselines.

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.

For each applicable calendar year:
  Query that year's non-ADR STOCK screen; retain the top 500 by capitalization.
  Use each historical observation's own annual membership.

After each exchange-session close:
  Compute complete trailing features from adjusted closes and aligned SPY returns.
  Do not impute missing observations; abstain when features are incomplete.

At each month-end close:
  Take the preceding 756 candidate signal sessions.
  Retain only complete observations with matured t+1...t+21 volatility labels;
  require label-end dates strictly before the next month's first signal session.
  Require >=504 distinct usable dates and all three target classes.
  Fit pooled target terciles and separate fixed-configuration RF and DT models.
  Freeze each model and its thresholds for the following calendar month.
  If training is unavailable, keep the affected portfolio in cash and queue exits.

For every valid daily prediction:
  Choose the largest class probability; break ties High > Medium > Low.
  Store probabilities, features, model version, training dates and thresholds.
  Queue exits for holdings not predicted Low, lacking predictions, or ineligible.
  Queue trims when observed weight exceeds 5%.

At the monthly allocation decision:
  Use the outgoing frozen model, not the newly fitted model.
  Select all eligible predicted-Low stocks separately for each model.
  Set target weight = min(1/N, 5%); leave unused allocation in cash.
  Do not replace intervening exits until the next monthly allocation.

Execute queued orders at the following exchange-session close:
  Enforce execution-year membership for purchases and cash-funded sizing.
  Skip missing-price trades; retain and retry unresolved required exits.
  Fund transaction costs from cash, reducing purchases when necessary.

Evaluate RF, DT, capped equal-weight and trailing-volatility portfolios separately.
Score classifications only when complete forward outcomes become available.