Every way to raise monthly returns, listed and tested

Trend · 3 min

Increasing monthly returns for an algorithmic trading system essentially boils down to three paths: raising risk by consuming your drawdown budget…

Increasing monthly returns for an algorithmic trading system essentially boils down to three paths: raising risk by consuming your drawdown budget, improving the return-to-drawdown ratio to allow for higher leverage, or implementing pyramiding, which requires a significant engine upgrade.

Quantifying the risk frontier

When looking at risk, the true constraint is not the total drawdown but the M1 worst. This is the worst single-day loss found by rebuilding equity from 1-minute bars. My testing shows that a risk setting of 0.0035 (0.35% of capital) is the safe upper limit.

MetricRisk 0.0035 (Adopted)Risk 0.004
Monthly Return0.44%-
Drawdown-8.2%-
MC Pass Rate82.5%-
M1 Worst4.68%5.28%
At a risk level of 0.004, I recorded a single-day loss of 5.28%. Since this exceeds the 5% threshold for intraday disqualification, it is a non-starter. Sticking to 0.0035 provides an immediate, safe way to boost returns from 0.38% to 0.44% without triggering a failure.

Re-evaluating equity overlays

I previously experimented with portfolio_engine.py to see if overlaying equity could improve performance, but it turns out that these overlays do not actually improve the return-to-drawdown ratio. Whether using symmetric or asymmetric re-leveraging, the results consistently fall short of the clean ‘overlay off’ version.

ConfigurationMonthly ReturnDrawdownMC Pass RateM1 Worst
Overlay OFF (Risk 0.003)0.47%-9.0%85.1%4.05%
Overlay ON (Risk 0.0035)0.44%-8.2%82.5%4.68%
In other words, the overlay does not improve your efficiency. While the overlay does offer a slight cushion against extreme tail-risk events (a 1.3% disqualification rate compared to 1.5% when off), removing it entirely and re-adjusting your base risk allows you to reach a monthly return of 0.47% to 0.50%. This is a potential increase of 25% to 30% over the current baseline. Whether to keep the overlay is a trade-off between absolute return and protection against rare, catastrophic days.

Final outlook

The realistic upper limit for monthly returns within the current system structure is approximately 0.5%. To push toward a goal of 2% per month, I would need to move beyond simple parameter tweaks and address the third path: pyramiding. This involves adding to winning positions during a trend, which is the largest untapped source of leverage for this engine. For now, the core system remains unchanged, though I have updated the code to allow build_system(overlay=False) so you can evaluate the performance without the overlay yourself. The decision to adjust risk or remove the overlay remains a matter of personal risk tolerance.

How this connects

This verification builds on earlier ones (what failed before and what I tried this time, comparisons between approaches).