PPO earns a 0.87 Sharpe after a 0.1% fee across ten coins, against 0.42 for Random Forest, the strongest supervised baseline. That comparison is the paper's most defensible result. Its claim to market neutrality is the weakest.

How El Kehal and colleagues put costs into the decision

The argument starts with the source of trading costs. In the supervised approach, a model forecasts next-day returns by minimizing MSE. An optimizer then turns those forecasts into positions. The paper uses SLSQP to maximize Sharpe across 11 long-only weights, covering ten coins and a zero-return CASH asset, with daily rebalancing. Even small forecast errors can change positions. A fee of 0.1% per trade then consumes the gross edge. XGBoost returns -1.48%, the paper reports, "which does not even cover the transaction fees."

PPO bypasses the return forecast. Its actor-critic maps the current state directly to portfolio weights. That state contains normalized log returns, technical indicators and the previous day's weights. A softmax output keeps allocations long-only and summing to one across the same ten coins plus CASH. The reward deducts λ times the L1 change in weights. This penalty is intended to make the agent trade only when the expected gain exceeds the fee.

ADA, BNB, BTC, DOGE, DOT, ETH, LTC, SOL, TRX and XRP make up the universe. The authors use daily yfinance closes from January 2021 to January 2024. Their out-of-sample figures are:

The abstract explains PPO's success through "the ability to optimize trading efficiency and manage risks." It also says that success "is not based on directional accuracy".

Enough detail to reproduce it?

Much of the feature set is specified. The model uses RSI, MACD calculated as EMA12 minus EMA26 with an EMA9 signal, and rolling volatility over 20-day windows, annualized by √365. The paper never supplies the RSI lookback n. It does specify the fee and universe, along with the long-only simplex and softmax head.

We did not find train/test split dates in the paper's text. Nor did we find network sizes, PPO hyperparameters, training length, seeds or a number of runs. The authors have posted scripts on GitHub, where a replicator would look for those details. A separate inconsistency needs resolving: the methods define rolling volatility, whereas the state description names "GARCH volatility."

The test window requires inference. Ending wealth for PPO is about 1.20, which annualizes to 37% over only roughly seven months. The other models fit that arithmetic: LSTM ends at 1.04, giving about 7%, and XGBoost at 0.99, giving about -1.5%.

The paper's account of wealth, however, suggests an earlier start. Random Forest "reaches 0.73 in June," with PPO already near 0.80 at that point. Every portfolio had therefore lost 20% to 27% before June. Annualization suggests about seven months; the June wealth levels suggest a longer test. The window remains unresolved. We found no confidence intervals either way.

The reward leaves an implementation choice open

The paper presents two rewards. Eq. 13 subtracts λ times L1 turnover from raw portfolio return. Eq. 15 subtracts the same term from a Sharpe-type ratio. According to the text, training uses eq. 15.

That leaves an implementer with two unresolved choices. One is the window used to estimate σ_P for a per-step reward. The other is the penalty's scale. The paper defines λ as the 0.1% fee. Deducting 0.001 from a Sharpe-scaled quantity imposes a much weaker penalty than deducting it from a daily return. The implementation could therefore leave the "friction-aware" agent barely feeling the friction.

Cash is shared; the turnover penalty is not

Both approaches have access to CASH. The SLSQP simplex includes 11 weights, allowing the supervised baselines to retreat into cash too. Turnover is therefore the stated source of the advantage. Yet those baselines rebalance daily without a turnover penalty, and we did not find turnover statistics for any model.

A practitioner would first want a control using SLSQP max-Sharpe with the same L1 penalty. Without that comparison, the 13.68-point return advantage over Random Forest could reflect reinforcement learning or simply less trading. The abstract credits trading efficiency and risk management, yet the paper gives no turnover figure for any model to measure that explanation. Its conclusion also credits safe-haven investment through CASH. The baselines already have that asset in their 11-weight simplex.

Drawdown improves by 0.55 points over Random Forest

The paper credits PPO with protecting capital. PPO's max drawdown is -28.74%; Random Forest's is -29.29%. Against a return gap of 13.68 points, the drawdown improvement is 0.55. The authors describe PPO's wealth as "close to 0.80" from June to October 2023, saying it avoided large drawdowns during that stretch.

Spending four months 20% below starting capital is a large drawdown.

Reconciling beta -0.08 with a long-only book at 42.58% volatility

The reported CAPM figures are hard to reconcile with the portfolio. It is long-only, with annualized volatility of 42.58%. Correlations among its coins are high over 2021-2024: BTC-ETH is 0.81 and ETH-LTC is 0.79. In that universe, reaching beta -0.08 would require holding mostly CASH. A portfolio held mostly in CASH should not have 42% volatility.

Alpha poses another question. Use a zero risk-free rate to match the CASH asset. The equation 37.22 = 46.41 - 0.08 × R_m then implies an equal-weight index return near 115% annualized.

That figure approximately reproduces the supervised models' alphas. With beta 1.04, Random Forest comes out near -96%, just short of the reported -100% to -119%. XGBoost comes out near -121%, just past the reported floor of -119.12. The alphas are thus roughly consistent with each other. They imply an index that more than doubled on an annualized basis during the test window, alongside beta-one baskets of the same coins that captured only a fraction of that return. Table 1 has no equal-weight benchmark row with which to confirm either figure.

PPO's alpha is described as "significantly positive," although we found no standard error or t-statistic supporting that description. A single regression over one short window cannot establish neutrality. Two pieces of evidence would change this verdict: beta estimates across sub-windows, accompanied by standard errors, and the PPO weight path showing its actual allocation to CASH.

The authors acknowledge three limitations: a price-only state, a static 0.1% cost and end-of-day trading. All three are fair. They leave the window length and beta questions untouched.

We could not rerun the strategy. It uses spot prices for these ten coins, and our test data do not cover these ten coins. Substituting another universe would test a different strategy.

The paper leaves a lead worth pursuing. When each trade costs 0.1%, a policy penalized for turnover may outperform daily max-Sharpe rebalancing fed by noisy forecasts. The next experiment is whether that requires PPO. Whether its neutrality survives beyond one short test window also remains open.