Shared agent run

Point-In-Time Top Five Equity Study

The full research trace: nine point-in-time top-5 equity candidates plus an SPY control, backtested over 2020-2026, swept across 786 evaluations, and taken to a six-fold walk-forward study that rejected the leading candidate.

Open interactive viewStart a new chat

Read the conversation below. Open the interactive view for charts, attachments, and continuing this run.

User

Create and rigorously research one point-in-time, lookahead-safe equity strategy with this thesis:

  • Universe: broad U.S. stocks (not a frozen hindsight roster).
  • Every two weeks, dynamically select the top 5 eligible stocks by market capitalization and rebalance them.
  • Add and systematically sweep momentum mechanisms such as multiple rate-of-change horizons, RSI, and moving-average/trend filters or rank signals. Treat these as candidate mechanisms/parameters to test rather than assuming one is best.
  • Also test point-in-time fundamental eligibility/ranking mechanisms, including revenue growth, net-income growth, stock rating/quality where genuinely available, and descending market-cap rank. Do not fabricate unavailable ratings or use future filings.
  • Test position-level stop-loss and take-profit settings.
  • Primary risk constraint: seek max drawdown below 15% without representing that as guaranteed. Optimize under this constraint with risk-adjusted return and meaningful participation/breadth.
  • Compare against SPY buy-and-hold over the same windows.
  • Use a broad systematic sweep, then validate promising configurations with a genuinely out-of-sample walk-forward study. Do not crown a validation-ranked lottery ticket.
  • Create the portfolio(s) needed for the study and report exact portfolio, backtest, sweep, and walk-forward IDs plus return, max drawdown, Sortino/Sharpe, participation, traded breadth, and benchmark comparison.
  • If no configuration meets the <15% drawdown constraint out of sample, say so plainly and preserve the best honest candidate.
  • Do not deploy, paper trade, live trade, or place orders.

Aurora

  1. Generate Portfolios — In one bulk call, create a diverse set of point-in-time equity candidates over a broad U.S. stock universe. Every candidate must dynamically select exactly the top 5 eligible stocks by descending market capitalization and rebalance every two weeks; vary momentum mechanisms (multiple rate-of-change horizons, RSI, moving-average/trend filters, and rank signals), point-in-time revenue-growth and net-income-growth eligibility or ranking, and stock-rating/quality inputs only where genuinely available. Include a market-cap-only control and an SPY buy-and-hold benchmark; never freeze a hindsight ticker roster or use future filings.
  2. Backtest Portfolios — In one bulk call, backtest every candidate and SPY over matched windows, capital, fees, and biweekly cadence, with position-level stop-loss and take-profit settings represented where applicable and detailed participation/breadth evidence enabled.
  3. Read Backtest — In one bulk read, collect exact portfolio and backtest IDs plus return, max drawdown, Sortino, Sharpe, trade count, participation, distinct names traded, concentration, and comparison with SPY over the same windows.
  4. Audit Backtest Breadth — Audit each candidate’s breadth and participation in parallel, rejecting only structurally broken or hindsight-contaminated candidates; retain every candidate with meaningful trading activity even if its initial parameters lose money.
  5. Get Sweep Surface — Inspect the sweepable axes for every structurally viable candidate, including momentum horizons and thresholds, RSI and trend parameters, fundamental eligibility/ranking fields, market-cap selection settings, stop-loss, take-profit, and position-sizing/risk controls.
  6. Systematic Sweep — Run one broad systematic sweep per viable structure across the full relevant surface, explicitly optimizing for risk-adjusted return and meaningful participation while targeting max drawdown below 15% as a constraint rather than a guarantee. Do not optimize solely for headline return or select a validation-ranked lottery ticket.
  7. Read Optimization — Read the completed sweep results and identify candidates by materialized portfolio IDs, reporting the full in-sample leaderboard, trade breadth, participation, drawdown, and benchmark-relative metrics while preserving multiple credible configurations rather than crowning one fragile winner.
  8. Run Walk-Forward Study — Validate the credible sweep configurations with genuinely out-of-sample rolling or anchored folds, including a stressed/bear sub-window, using the same point-in-time universe rules, biweekly rebalance, capital, fees, and risk controls. Evaluate the <15% drawdown target, risk-adjusted return, participation, and breadth without ranking on validation performance alone.
  9. Read Walk-Forward Study — Read the completed walk-forward results and collect exact study IDs, fold-level and aggregate out-of-sample return, max drawdown, Sortino, Sharpe, participation, traded breadth, and SPY comparison; state clearly whether any configuration actually meets the drawdown target out of sample.
  10. createSubagents — Spawn one general-purpose skeptic to attempt to falsify the leading candidates by checking lookahead safety of filings and ratings, dynamic-universe integrity, data availability, rebalance timing, stop/take-profit implementation, concentration, sparse participation, and fold-level instability; require a survives/refuted verdict with evidence.
  11. waitForSubagents — Wait for the skeptic’s verdict before selecting or preserving a best candidate.
  12. finalAnswer — Reconcile all IDs and evidence, report the best honest out-of-sample candidate and any credible alternatives, compare each with SPY, disclose failed or unavailable data fields, and say plainly if no configuration satisfies max drawdown below 15% out of sample. Do not deploy, paper trade, live trade, or place orders.

User

Generate Portfolios: Create the following portfolios together as a single bulk batch. Use $100,000 initial capital for each equity portfolio. This is a research-only set: do not deploy or place orders. Every strategy portfolio must use a broad, dynamic U.S. stock universe evaluated point-in-time at each rebalance date, select exactly the top 5 eligible stocks by descending market capitalization, and rebalance every two weeks. Do not freeze a ticker roster and do not use future filings. Fundamental observations must be keyed by their actual filing/publication availability dates; if a stock-rating or quality field is not genuinely available with point-in-time history, omit that mechanism and label it unavailable rather than fabricating it. Apply position-level stop-loss and take-profit exits where specified, using realistic portfolio-position percentages. Include participation and breadth in the backtest configuration where supported.

  1. 'Market-Cap Top-5 Control' — dynamic broad U.S. universe; select the five largest eligible stocks by point-in-time market capitalization; equal weight; biweekly rebalance; no momentum or fundamental filter; position stop-loss 15% and take-profit 30%.
  2. 'ROC Momentum Top-5' — same dynamic universe and market-cap eligibility; among eligible stocks, rank by 3-month price rate of change and select the top five by descending market cap subject to the momentum ranking; equal weight; biweekly rebalance; position stop-loss 12% and take-profit 25%.
  3. 'Multi-Horizon Momentum' — require positive 1-month, 3-month, and 12-month price rate of change; rank eligible stocks using a composite of those horizons, then select exactly five by descending market capitalization; equal weight; biweekly rebalance; position stop-loss 12% and take-profit 30%.
  4. 'RSI-Trend Momentum' — require RSI(14) between 50 and 75, price above its 50-day and 200-day moving averages, and positive 6-month rate of change; select the five largest market-cap names among eligible stocks; equal weight; biweekly rebalance; position stop-loss 10% and take-profit 25%.
  5. 'Trend-Rank Momentum' — require price above the 200-day moving average; rank eligible stocks by 6-month rate of change adjusted for 6-month price volatility where the platform supports that native expression, otherwise use the 6-month rate-of-change rank; select exactly five by descending market capitalization from the ranked eligible set; equal weight; biweekly rebalance; position stop-loss 10% and take-profit 30%.
  6. 'Point-in-Time Revenue Growth' — use only revenue-growth observations available by each rebalance date; require positive trailing revenue growth and rank eligible stocks by trailing revenue growth; select the five largest market-cap names among the eligible ranked set; equal weight; biweekly rebalance; position stop-loss 12% and take-profit 30%.
  7. 'Point-in-Time Net Income Growth' — use only net-income-growth observations available by each rebalance date; require positive trailing net-income growth and rank eligible stocks by that growth; select exactly five by descending market capitalization among eligible names; equal weight; biweekly rebalance; position stop-loss 12% and take-profit 30%.
  8. 'Quality Plus Momentum' — combine only genuinely available point-in-time quality inputs such as StockReport rating, positive revenue growth, positive net-income growth, and price above the 200-day moving average; do not fabricate StockReport history or substitute a current rating for historical data; among names passing available quality gates, rank by 6-month rate of change and select the five largest by point-in-time market cap; equal weight; biweekly rebalance; position stop-loss 10% and take-profit 25%.
  9. 'Fundamental-Momentum Composite' — point-in-time positive revenue growth and positive net-income growth eligibility, plus positive 3-month and 12-month rate of change and RSI(14) above 50; rank the surviving names by a composite of fundamental growth and momentum where supported, then select exactly five by descending point-in-time market capitalization; equal weight; biweekly rebalance; position stop-loss 10% and take-profit 25%.
  10. 'SPY Buy-and-Hold Benchmark' — buy 100% of available buying power in SPY when its position value is zero, then hold; no fixed share count, no timing filter, and no stop-loss or take-profit. This is the same-window full-capital benchmark.

Aurora

Created 10 portfolios.

  • Market-Cap Top-5 Control: portfolioId=6a849f4b02281665dc696269; strategies=Dynamic rebalance US stocks weighted by Constant 1, filter (Asset's marketCap > Constant 0) → top 5 by Asset's marketCap, max 5 assets when # of Days Since the Last Filled Buy Order ≥ Constant 14 and # of Days Since the Last Filled Sell Order ≥ Constant 14
  • ROC Momentum Top-5: portfolioId=6a849f4b02281665dc696279; strategies=Dynamic rebalance US stocks weighted by Constant 1, filter (Asset's marketCap > Constant 0) → top 10 by 63 Day Rate of Change → top 5 by Asset's marketCap, max 5 assets when # of Days Since the Last Filled Buy Order ≥ Constant 14 and # of Days Since the Last Filled Sell Order ≥ Constant 14
  • Multi-Horizon Momentum: portfolioId=6a849f4c02281665dc696288; strategies=Dynamic rebalance US stocks weighted by Constant 1, filter (Asset's marketCap > Constant 0) → filter (21 Day Rate of Change > Constant 0 and 63 Day Rate of Change > Constant 0 and 252 Day Rate of Change > Constant 0) → top 10 by 21 Day Rate of Change + 63 Day Rate of Change + 252 Day Rate of Change → top 5 by Asset's marketCap, max 5 assets when # of Days Since the Last Filled Buy Order ≥ Constant 14 and # of Days Since the Last Filled Sell Order ≥ Constant 14
  • RSI-Trend Momentum: portfolioId=6a849f4c02281665dc69628f; strategies=Dynamic rebalance US stocks weighted by Constant 1, filter (Asset's marketCap > Constant 0) → filter (14 Day RSI ≥ Constant 50 and 14 Day RSI ≤ Constant 75 and last price > 50 Day SMA and last price > 200 Day SMA and 126 Day Rate of Change > Constant 0) → top 5 by Asset's marketCap, max 5 assets when # of Days Since the Last Filled Buy Order ≥ Constant 14 and # of Days Since the Last Filled Sell Order ≥ Constant 14
  • Trend-Rank Momentum: portfolioId=6a849f4c02281665dc696293; strategies=Dynamic rebalance US stocks weighted by Constant 1, filter (Asset's marketCap > Constant 0) → filter ( last price > 200 Day SMA and 126 Day Standard Deviation > Constant 0) → top 10 by 126 Day Rate of Change / 126 Day Standard Deviation → top 5 by Asset's marketCap, max 5 assets when # of Days Since the Last Filled Buy Order ≥ Constant 14 and # of Days Since the Last Filled Sell Order ≥ Constant 14
  • Point-in-Time Revenue Growth: portfolioId=6a849f4c02281665dc696296; strategies=Dynamic rebalance US stocks weighted by Constant 1, filter (Asset's marketCap > Constant 0) → top 5 by Asset's marketCap, max 5 assets when # of Days Since the Last Filled Buy Order ≥ Constant 14 and # of Days Since the Last Filled Sell Order ≥ Constant 14
  • Point-in-Time Net Income Growth: portfolioId=6a849f4c02281665dc696299; strategies=Dynamic rebalance US stocks weighted by Constant 1, filter (Asset's marketCap > Constant 0) → top 5 by Asset's marketCap, max 5 assets when # of Days Since the Last Filled Buy Order ≥ Constant 14 and # of Days Since the Last Filled Sell Order ≥ Constant 14
  • Quality Plus Momentum: portfolioId=6a849f4c02281665dc69629f; strategies=Dynamic rebalance US stocks weighted by Constant 1, filter (Asset's marketCap > Constant 0) → filter ( last price > 200 Day SMA) → top 10 by 126 Day Rate of Change → top 5 by Asset's marketCap, max 5 assets when # of Days Since the Last Filled Buy Order ≥ Constant 14 and # of Days Since the Last Filled Sell Order ≥ Constant 14
  • Fundamental-Momentum Composite: portfolioId=6a849f4c02281665dc6962a2; strategies=Dynamic rebalance US stocks weighted by Constant 1, filter (Asset's marketCap > Constant 0) → filter (63 Day Rate of Change > Constant 0 and 252 Day Rate of Change > Constant 0 and 14 Day RSI > Constant 50) → top 10 by 63 Day Rate of Change + 252 Day Rate of Change + 14 Day RSI → top 5 by Asset's marketCap, max 5 assets when # of Days Since the Last Filled Buy Order ≥ Constant 14 and # of Days Since the Last Filled Sell Order ≥ Constant 14
  • SPY Buy-and-Hold Benchmark: portfolioId=6a849f4c02281665dc6962a6; strategies=Buy 100 percent of buying power in SPY Stock when Position market value (SPY) = Constant 0
    Use these portfolioIds directly in subsequent portfolio tools. Do not fetch or ask the user to recover IDs already listed here.

User

Backtest Portfolios: Backtest all ten portfolios in one bulk run from 2020-01-01 through 2026-08-17 using daily bars, $100,000 initial value for each, matched fees and configuration, and SPY buy-and-hold as the comparison baseline: 6a849f4b02281665dc696269 Market-Cap Top-5 Control; 6a849f4b02281665dc696279 ROC Momentum Top-5; 6a849f4c02281665dc696288 Multi-Horizon Momentum; 6a849f4c02281665dc69628f RSI-Trend Momentum; 6a849f4c02281665dc696293 Trend-Rank Momentum; 6a849f4c02281665dc696296 Point-in-Time Revenue Growth; 6a849f4c02281665dc696299 Point-in-Time Net Income Growth; 6a849f4c02281665dc69629f Quality Plus Momentum; 6a849f4c02281665dc6962a2 Fundamental-Momentum Composite; 6a849f4c02281665dc6962a6 SPY Buy-and-Hold Benchmark. Generate detailed participation, breadth, holdings, rebalance, stop-loss, and take-profit events where supported so the point-in-time universe and exits can be audited. Do not deploy or place orders.

Aurora

Started 10 native backtests. Backtest IDs: ["6a849f5cf68259010d385622","6a849f5cf68259010d385624","6a849f5cf68259010d385627","6a849f5cf68259010d385629","6a849f5cf68259010d385626","6a849f5cf68259010d385623","6a849f5cf68259010d385621","6a849f5cf68259010d385625","6a849f5cf68259010d385628","6a849f5cf68259010d38562a"]. Next, call Read Backtest with exactly these backtestIds. Do not run Backtest Portfolios again for the same portfolio and window.

User

Read Backtest: Read these ten completed backtests in one bulk request: 6a849f5cf68259010d385622, 6a849f5cf68259010d385624, 6a849f5cf68259010d385627, 6a849f5cf68259010d385629, 6a849f5cf68259010d385626, 6a849f5cf68259010d385623, 6a849f5cf68259010d385621, 6a849f5cf68259010d385625, 6a849f5cf68259010d385628, and 6a849f5cf68259010d38562a. For each, report total return, annualized return if available, max drawdown, Sortino, Sharpe, trade count, participation rate, median deployment, distinct underlyings traded, concentration, SPY buy-and-hold comparison, and any available holdings, rebalance, stop-loss, and take-profit event summaries. Explicitly flag zero-trade or zero-participation books and any evidence that the dynamic universe or fundamental observations were not point-in-time.

Aurora

Backtests finished (10 complete).

Aurora

Deployment posture

All nine equity strategies have median deployment of approximately 100%, so they were ~always invested. These results should not be described as sparse timing edges or decisively timed strategies. Their signals mostly determine which stocks are held, not whether the portfolio is invested.

SPY’s median deployment was 94.2%, also effectively buy-and-hold.

All results below use the normalized, directly comparable evaluation window:

2020-01-01 to 2026-08-18 — daily bars — windowKey: 2020-01-01|2026-08-18|Day|SPY

There are no warnings entries, but several structural caveats arise from the metrics and breadth audit.

Backtest comparison

Strategy Total return Annualized return Alpha vs SPY Max drawdown Sortino Sharpe Closed trades Participation Distinct names Concentration
Trend-Rank Momentum 475.65% 30.18% +314.27% 45.99% 1.29 0.90 113 1.64% 73 Top 1: 9.81%; Top 5: 31.28%
RSI-Trend Momentum 286.94% 22.62% +125.55% 31.07% 1.42 1.01 109 0.79% 35 Top 1: 13.17%; Top 5: 56.11%
Market-Cap Top-5 Control 250.91% 20.83% +89.52% 43.03% 1.06 0.75 274 0.27% 12 Top 1: 19.00%; Top 5: 79.36%
Point-in-Time Revenue Growth 250.91% 20.83% +89.52% 43.03% 1.06 0.75 274 0.27% 12 Top 1: 19.00%; Top 5: 79.36%
Point-in-Time Net Income Growth 250.91% 20.83% +89.52% 43.03% 1.06 0.75 274 0.27% 12 Top 1: 19.00%; Top 5: 79.36%
Multi-Horizon Momentum 240.59% 20.28% +79.20% 73.04% 0.84 0.59 107 1.89% 84 Top 1: 7.12%; Top 5: 30.60%
Fundamental-Momentum Composite 96.80% 10.74% −64.58% 78.11% 0.59 0.42 117 2.11% 94 Top 1: 7.42%; Top 5: 28.79%
ROC Momentum Top-5 21.70% 3.00% −139.69% 66.57% 0.38 0.27 106 2.29% 102 Top 1: 6.42%; Top 5: 22.94%
Quality Plus Momentum −6.85% −1.06% −168.24% 81.18% 0.27 0.19 86 1.89% 84 Top 1: 5.76%; Top 5: 24.43%
SPY buy-and-hold benchmark 147.67% 14.65% — 33.32% 1.01 0.73 0 100% of one-name universe 1 Top 1: 100%

Important benchmark note

The normalized metrics report the matched-window SPY baseline as 161.38% total return and 15.58% annualized, while the standalone SPY backtest reports 147.67% and 14.65%. These are inconsistent measurements despite sharing the same stated windowKey. The supplied alpha values use the 161.38% normalized baseline, so those alphas should be treated cautiously until the benchmark calculation is reconciled.

Key findings

1. No strategy satisfies the primary risk constraint

The target was maximum drawdown below 15%. None of the portfolios came close out of sample—or, more precisely, in this single full-period test:

  • Best drawdown: RSI-Trend Momentum: 31.07%
  • SPY drawdown: 33.32%
  • Worst drawdown: Quality Plus Momentum: 81.18%

RSI-Trend reduced drawdown modestly relative to SPY, but it still exceeded the 15% objective by a wide margin. The remaining strategies generally took substantially more downside risk than SPY.

There is no genuinely out-of-sample walk-forward evidence here. The validationStatistics entry is effectively the same SPY baseline for every portfolio and shows zero strategy participation, so it should not be interpreted as a meaningful validation run for the individual strategies.

2. Trend-Rank has the strongest headline result, but unacceptable risk

Trend-Rank Momentum produced the highest return:

  • 475.65% total return
  • 30.18% annualized return
  • 1.29 Sortino
  • 45.99% maximum drawdown

That is a strong historical result relative to SPY, but a nearly 46% drawdown is incompatible with the stated risk constraint. It should be treated as a candidate for further robustness testing, not as a deployable winner.

Its participation and breadth are also better than the market-cap control: 73 names versus 12, with lower top-five entry concentration. That suggests the momentum ranking generated more turnover and broader name exposure, but not lower portfolio risk.

3. RSI-Trend is the best risk-adjusted candidate in this batch

RSI-Trend is the most credible candidate based on the supplied risk-adjusted metrics:

  • 286.94% total return
  • 22.62% annualized return
  • 1.42 Sortino, the best of the group
  • 1.01 Sharpe, the best of the group
  • 31.07% maximum drawdown, slightly below SPY’s 33.32%

However, it still fails the <15% drawdown requirement. It is better characterized as the best honest candidate for additional optimization and walk-forward validation, not a strategy ready for deployment.

Its concentration is meaningful: the top five names accounted for 56.11% of entry notional, and the top name accounted for 13.17%.

4. The fundamental strategies appear not to have affected the portfolio

The following three results are exactly identical across return, risk, trading statistics, participation, breadth, and holdings:

  • Market-Cap Top-5 Control
  • Point-in-Time Revenue Growth
  • Point-in-Time Net Income Growth

They all traded the same 12 names, with identical:

  • 250.91% return
  • 43.03% maximum drawdown
  • 274 closed trades
  • 0.27% participation
  • 19% top-name concentration

This is strong evidence that the revenue-growth and net-income-growth mechanisms were not actually applied, were unavailable and silently bypassed, or were encoded equivalently to the market-cap control. The result should not be presented as evidence that the fundamental thesis worked.

The breadth audit also shows millions of nullGatedEvaluations and many names with zero resolution attempts. That does not by itself prove the book is broken—the books did trade—but it reinforces the need to audit the universe/filter pipeline.

5. Quality Plus Momentum failed decisively

Quality Plus Momentum was the weakest result:

  • −6.85% total return
  • −1.06% annualized return
  • 81.18% maximum drawdown
  • 0.27 Sortino
  • 0.19 Sharpe

The created portfolio configuration shown earlier did not contain a genuine historical StockReport rating mechanism; it used a 200-day trend filter and momentum ranking. Therefore, this backtest does not establish that a point-in-time quality or rating signal was tested. Historical rating availability remains unverified and should be labeled unavailable unless separately demonstrated.

6. Momentum did not consistently improve performance

The momentum configurations varied substantially:

  • Trend-Rank: excellent return, high drawdown
  • RSI-Trend: strongest risk-adjusted result, but still too risky
  • Multi-Horizon: high return but 73.04% drawdown
  • ROC-only: barely positive over the full period and far below SPY
  • Fundamental-Momentum Composite: below SPY with 78.11% drawdown

This suggests that the apparent edge is highly dependent on the exact signal construction and may be driven by a small number of regime- or stock-specific outcomes rather than a robust general momentum effect.

Participation and breadth assessment

None of the equity books is a zero-trade or zero-participation book:

  • Each traded between 12 and 102 distinct names
  • Each had positive statistics.participationRate
  • Each had approximately 100% median deployment
  • Each had filled entries and exits

Therefore, these are functioning backtests rather than clearly non-functional pipelines. However, participation as a fraction of the 4,449-name universe was low:

  • Control/fundamental duplicates: 0.27%
  • RSI-Trend: 0.79%
  • Trend-Rank: 1.64%
  • Multi-Horizon and Quality: 1.89%
  • Fundamental-Momentum: 2.11%
  • ROC Momentum: 2.29%

For a top-five portfolio, low universe participation is not automatically erroneous, but the identical fundamental/control output is a material implementation concern.

The very high win rates—roughly 98% to 99.9%—combined with large drawdowns and unusually high profit factors are also worth auditing. They may reflect the platform’s trade accounting, frequent partial fills, or how rebalance transactions are classified rather than genuine strategy-level win rates.

Point-in-time and exit auditability

The supplied results do not provide:

  • Filing/publication timestamps for revenue or net-income observations
  • Evidence that each fundamental observation was available before its rebalance date
  • Holdings by rebalance date
  • A rebalance-event log
  • Stop-loss trigger counts
  • Take-profit trigger counts
  • Exit reason attribution
  • A walk-forward fold report

Accordingly, point-in-time safety of the fundamental inputs cannot be independently confirmed from these results. The identical fundamental/control performance makes this especially important.

The breadth audit lists fills and entry concentration but does not establish whether the specified 10%–15% stop-losses and 25%–30% take-profits actually triggered. Those events need a dedicated event-level audit before relying on the exits.

Overall conclusion

The study does not produce a deployable strategy under the stated requirements.

  • No configuration achieved maximum drawdown below 15%.
  • All timing/signal portfolios were effectively always invested, not sparse timing systems.
  • RSI-Trend Momentum is the best candidate for further research because it had the best Sortino and Sharpe and slightly lower drawdown than SPY.
  • Trend-Rank Momentum had the best return but unacceptable drawdown and should not be crowned without walk-forward confirmation.
  • The revenue-growth and net-income-growth results are not credible as separate fundamental tests because they exactly match the market-cap control.
  • Quality Plus Momentum failed badly, and genuine point-in-time rating history was not demonstrated.
  • The standalone SPY result conflicts with the normalized SPY baseline used for alpha, so benchmark reconciliation is required.

The appropriate next step is to audit and fix the fundamental-filter and event-recording pipeline, reconcile the SPY benchmark, and run a genuine rolling walk-forward study focused first on RSI-Trend and Trend-Rank. If no out-of-sample configuration then remains below 15% drawdown, the correct conclusion is that this strategy family does not meet the research objective.

User

Audit Backtest Breadth: Audit backtestId 6a849f5cf68259010d385622. Report participation, distinct underlyings, resolution attempts, holdings breadth, and whether the dynamic market-cap universe and exits appear to have fired.
Audit Backtest Breadth: Audit backtestId 6a849f5cf68259010d385624. Report participation, distinct underlyings, resolution attempts, holdings breadth, and whether the dynamic universe and momentum ranking appear to have fired.
Audit Backtest Breadth: Audit backtestId 6a849f5cf68259010d385627. Report participation, distinct underlyings, resolution attempts, holdings breadth, and whether the multi-horizon momentum filters and market-cap selection appear to have fired.
Audit Backtest Breadth: Audit backtestId 6a849f5cf68259010d385629. Report participation, distinct underlyings, resolution attempts, holdings breadth, and whether the RSI/trend filters and market-cap selection appear to have fired.
Audit Backtest Breadth: Audit backtestId 6a849f5cf68259010d385626. Report participation, distinct underlyings, resolution attempts, holdings breadth, and whether the trend-rank mechanism and dynamic market-cap selection appear to have fired.
Audit Backtest Breadth: Audit backtestId 6a849f5cf68259010d385623. Report participation, distinct underlyings, resolution attempts, holdings breadth, and whether the point-in-time revenue-growth mechanism actually affected eligibility or ranking.
Audit Backtest Breadth: Audit backtestId 6a849f5cf68259010d385621. Report participation, distinct underlyings, resolution attempts, holdings breadth, and whether the point-in-time net-income-growth mechanism actually affected eligibility or ranking.
Audit Backtest Breadth: Audit backtestId 6a849f5cf68259010d385625. Report participation, distinct underlyings, resolution attempts, holdings breadth, and whether any genuine point-in-time quality/rating mechanism fired without fabricated historical data.
Audit Backtest Breadth: Audit backtestId 6a849f5cf68259010d385628. Report participation, distinct underlyings, resolution attempts, holdings breadth, and whether the fundamental-momentum composite filters and rankings actually affected the dynamic universe.
Audit Backtest Breadth: Audit backtestId 6a849f5cf68259010d38562a. Audit the SPY benchmark breadth and participation. Confirm that it was a full-capital buy-and-hold with no timing filter and identify any deployment or benchmark-construction issue.

Aurora

Backtest breadth audit for 6a849f5cf68259010d385622 (universe 4449, participation 0.3%, filled 12/4449).

Aurora

Backtest breadth audit for 6a849f5cf68259010d385624 (universe 4449, participation 2.3%, filled 102/4449).

Aurora

Backtest breadth audit for 6a849f5cf68259010d385627 (universe 4449, participation 1.9%, filled 84/4449).

Aurora

Backtest breadth audit for 6a849f5cf68259010d385629 (universe 4449, participation 0.8%, filled 35/4449).

Aurora

Backtest breadth audit for 6a849f5cf68259010d385626 (universe 4449, participation 1.6%, filled 73/4449).

Aurora

Backtest breadth audit for 6a849f5cf68259010d385623 (universe 4449, participation 0.3%, filled 12/4449).

Aurora

Backtest breadth audit for 6a849f5cf68259010d385621 (universe 4449, participation 0.3%, filled 12/4449).

Aurora

Backtest breadth audit for 6a849f5cf68259010d385625 (universe 4449, participation 1.9%, filled 84/4449).

Aurora

Backtest breadth audit for 6a849f5cf68259010d385628 (universe 4449, participation 2.1%, filled 94/4449).

Aurora

Backtest breadth audit for 6a849f5cf68259010d38562a (universe 1, participation 100.0%, filled 1/1).

User

Get Sweep Surface: Get the sweep surface for portfolioId 6a849f4b02281665dc696269 (Market-Cap Top-5 Control). Report all applicable momentum, filter, ranking, rebalance, stop-loss, take-profit, sizing, and participation-related axes.
Get Sweep Surface: Get the sweep surface for portfolioId 6a849f4b02281665dc696279 (ROC Momentum Top-5). Report all applicable momentum, filter, ranking, rebalance, stop-loss, take-profit, sizing, and participation-related axes.
Get Sweep Surface: Get the sweep surface for portfolioId 6a849f4c02281665dc696288 (Multi-Horizon Momentum). Report all applicable momentum, filter, ranking, rebalance, stop-loss, take-profit, sizing, and participation-related axes.
Get Sweep Surface: Get the sweep surface for portfolioId 6a849f4c02281665dc69628f (RSI-Trend Momentum). Report all applicable momentum, RSI, trend, ranking, rebalance, stop-loss, take-profit, sizing, and participation-related axes.
Get Sweep Surface: Get the sweep surface for portfolioId 6a849f4c02281665dc696293 (Trend-Rank Momentum). Report all applicable trend, momentum, volatility-adjustment, ranking, rebalance, stop-loss, take-profit, sizing, and participation-related axes.
Get Sweep Surface: Get the sweep surface for portfolioId 6a849f4c02281665dc6962a2 (Fundamental-Momentum Composite). Report all applicable fundamental, momentum, RSI, ranking, rebalance, stop-loss, take-profit, sizing, and participation-related axes.

Aurora

Sweep surface for: Portfolio "Market-Cap Top-5 Control" — 1 strategies.
Surfaces present: optionLegs=false, dynamicUniverse=true, closeOption=false, regularBuySell=false.
Strategies:

  • strategyIndex=0 DynamicRebalance: Dynamic rebalance US stocks weighted by Constant 1, filter (Asset's marketCap > Constant 0) → top 5 by Asset's marketCap, max 5 assets when # of Days Since the Last Filled Buy Order ≥ Constant 14 and # of Days Since the Last Filled Sell Order ≥ Constant 14

Sweepable fields: Portfolio.Subject, Action.RankSignal, Action.DeploymentPct, UniversePipeline.SelectTopLimit, UniversePipeline.UniversePipelineFilter

Default genes the server would derive: Subject (1 values); Select top limit (2 values); Total deployment percent (3 values); Universe filter (2 values); Rank signal (2 values)

Pipeline filter stages (replaceable via UniversePipelineFilter + stageIndex):

  • strategy 0 stage 0: Asset's marketCap > Constant 0

An axis only teaches you something if its values can produce different backtests. Read the signal-density block above before choosing gene values: thresholds outside the measured range, and SelectTop limits above the number of names that carry a signal at once, compile fine and then score identically on every candidate. The sweep validator rejects a threshold axis it can prove is degenerate; it cannot prove the sparse-signal case, so that one is yours to check.
Choose genes from the sweepable fields above. To raise participation, sweep the entry-frequency limiters (EntryCooldownDays, DteBracket, entry-filter thresholds). For ABSOLUTE return, SIZE IS A PRIMARY LEVER: sweep BuyingPowerPct / AllocationPct and TotalBudgetPct across their FULL range up to concentrated sizing — a defined-risk / premium book returns flat at small allocations no matter how good the regime, and only clears a rising benchmark when sized up (its collateral is the spread width, so high per-name % is genuine sizing, not runaway leverage). Do NOT leave sizing at the timid default.
SIZING AXES ARE NOT INTERCHANGEABLE — pick the one that matches the question. For an equity DynamicRebalance book: DeploymentPct is TOTAL deployment (how much of the portfolio is invested; remainder cash), while AllocationPct is the PER-NAME cap (how much any single name may take). To vary how invested the book is, you MUST sweep DeploymentPct — sweeping AllocationPct instead leaves deployment pinned where it was authored and every candidate returns the SAME medianDeployment. A per-name cap also only binds when it is below the natural weight (
deployment/limit): with limit 8, a 50% cap does nothing.

Aurora

Sweep surface for: Portfolio "ROC Momentum Top-5" — 1 strategies.
Surfaces present: optionLegs=false, dynamicUniverse=true, closeOption=false, regularBuySell=false.
Strategies:

  • strategyIndex=0 DynamicRebalance: Dynamic rebalance US stocks weighted by Constant 1, filter (Asset's marketCap > Constant 0) → top 10 by 63 Day Rate of Change → top 5 by Asset's marketCap, max 5 assets when # of Days Since the Last Filled Buy Order ≥ Constant 14 and # of Days Since the Last Filled Sell Order ≥ Constant 14

Sweepable fields: Portfolio.Subject, Action.RankSignal, Action.DeploymentPct, UniversePipeline.SelectTopLimit, UniversePipeline.UniversePipelineFilter

Default genes the server would derive: Subject (1 values); Select top limit (2 values); Total deployment percent (3 values); Universe filter (2 values); Rank signal (2 values)

Pipeline filter stages (replaceable via UniversePipelineFilter + stageIndex):

  • strategy 0 stage 0: Asset's marketCap > Constant 0

An axis only teaches you something if its values can produce different backtests. Read the signal-density block above before choosing gene values: thresholds outside the measured range, and SelectTop limits above the number of names that carry a signal at once, compile fine and then score identically on every candidate. The sweep validator rejects a threshold axis it can prove is degenerate; it cannot prove the sparse-signal case, so that one is yours to check.
Choose genes from the sweepable fields above. To raise participation, sweep the entry-frequency limiters (EntryCooldownDays, DteBracket, entry-filter thresholds). For ABSOLUTE return, SIZE IS A PRIMARY LEVER: sweep BuyingPowerPct / AllocationPct and TotalBudgetPct across their FULL range up to concentrated sizing — a defined-risk / premium book returns flat at small allocations no matter how good the regime, and only clears a rising benchmark when sized up (its collateral is the spread width, so high per-name % is genuine sizing, not runaway leverage). Do NOT leave sizing at the timid default.
SIZING AXES ARE NOT INTERCHANGEABLE — pick the one that matches the question. For an equity DynamicRebalance book: DeploymentPct is TOTAL deployment (how much of the portfolio is invested; remainder cash), while AllocationPct is the PER-NAME cap (how much any single name may take). To vary how invested the book is, you MUST sweep DeploymentPct — sweeping AllocationPct instead leaves deployment pinned where it was authored and every candidate returns the SAME medianDeployment. A per-name cap also only binds when it is below the natural weight (
deployment/limit): with limit 8, a 50% cap does nothing.

Aurora

Sweep surface for: Portfolio "Multi-Horizon Momentum" — 1 strategies.
Surfaces present: optionLegs=false, dynamicUniverse=true, closeOption=false, regularBuySell=false.
Strategies:

  • strategyIndex=0 DynamicRebalance: Dynamic rebalance US stocks weighted by Constant 1, filter (Asset's marketCap > Constant 0) → filter (21 Day Rate of Change > Constant 0 and 63 Day Rate of Change > Constant 0 and 252 Day Rate of Change > Constant 0) → top 10 by 21 Day Rate of Change + 63 Day Rate of Change + 252 Day Rate of Change → top 5 by Asset's marketCap, max 5 assets when # of Days Since the Last Filled Buy Order ≥ Constant 14 and # of Days Since the Last Filled Sell Order ≥ Constant 14

Sweepable fields: Portfolio.Subject, Action.RankSignal, Action.DeploymentPct, UniversePipeline.SelectTopLimit, UniversePipeline.UniversePipelineFilter

Default genes the server would derive: Subject (1 values); Select top limit (2 values); Total deployment percent (3 values); Universe filter (2 values); Rank signal (2 values)

Pipeline filter stages (replaceable via UniversePipelineFilter + stageIndex):

  • strategy 0 stage 0: Asset's marketCap > Constant 0
  • strategy 0 stage 1: 21 Day undefined Rate of Change > Constant 0 and 63 Day undefined Rate of Change > Constant 0 and 252 Day undefined Rate of Change > Constant 0

An axis only teaches you something if its values can produce different backtests. Read the signal-density block above before choosing gene values: thresholds outside the measured range, and SelectTop limits above the number of names that carry a signal at once, compile fine and then score identically on every candidate. The sweep validator rejects a threshold axis it can prove is degenerate; it cannot prove the sparse-signal case, so that one is yours to check.
Choose genes from the sweepable fields above. To raise participation, sweep the entry-frequency limiters (EntryCooldownDays, DteBracket, entry-filter thresholds). For ABSOLUTE return, SIZE IS A PRIMARY LEVER: sweep BuyingPowerPct / AllocationPct and TotalBudgetPct across their FULL range up to concentrated sizing — a defined-risk / premium book returns flat at small allocations no matter how good the regime, and only clears a rising benchmark when sized up (its collateral is the spread width, so high per-name % is genuine sizing, not runaway leverage). Do NOT leave sizing at the timid default.
SIZING AXES ARE NOT INTERCHANGEABLE — pick the one that matches the question. For an equity DynamicRebalance book: DeploymentPct is TOTAL deployment (how much of the portfolio is invested; remainder cash), while AllocationPct is the PER-NAME cap (how much any single name may take). To vary how invested the book is, you MUST sweep DeploymentPct — sweeping AllocationPct instead leaves deployment pinned where it was authored and every candidate returns the SAME medianDeployment. A per-name cap also only binds when it is below the natural weight (
deployment/limit): with limit 8, a 50% cap does nothing.

Aurora

Sweep surface for: Portfolio "RSI-Trend Momentum" — 1 strategies.
Surfaces present: optionLegs=false, dynamicUniverse=true, closeOption=false, regularBuySell=false.
Strategies:

  • strategyIndex=0 DynamicRebalance: Dynamic rebalance US stocks weighted by Constant 1, filter (Asset's marketCap > Constant 0) → filter (14 Day RSI ≥ Constant 50 and 14 Day RSI ≤ Constant 75 and last price > 50 Day SMA and last price > 200 Day SMA and 126 Day Rate of Change > Constant 0) → top 5 by Asset's marketCap, max 5 assets when # of Days Since the Last Filled Buy Order ≥ Constant 14 and # of Days Since the Last Filled Sell Order ≥ Constant 14

Sweepable fields: Portfolio.Subject, Action.RankSignal, Action.DeploymentPct, UniversePipeline.SelectTopLimit, UniversePipeline.UniversePipelineFilter

Default genes the server would derive: Subject (1 values); Select top limit (2 values); Total deployment percent (3 values); Universe filter (2 values); Rank signal (2 values)

Pipeline filter stages (replaceable via UniversePipelineFilter + stageIndex):

  • strategy 0 stage 0: Asset's marketCap > Constant 0
  • strategy 0 stage 1: 14 Day undefined RSI ≥ Constant 50 and 14 Day undefined RSI ≤ Constant 75 and undefined last price > 50 Day undefined SMA and undefined last price > 200 Day undefined SMA and 126 Day undefined Rate of Change > Constant 0

An axis only teaches you something if its values can produce different backtests. Read the signal-density block above before choosing gene values: thresholds outside the measured range, and SelectTop limits above the number of names that carry a signal at once, compile fine and then score identically on every candidate. The sweep validator rejects a threshold axis it can prove is degenerate; it cannot prove the sparse-signal case, so that one is yours to check.
Choose genes from the sweepable fields above. To raise participation, sweep the entry-frequency limiters (EntryCooldownDays, DteBracket, entry-filter thresholds). For ABSOLUTE return, SIZE IS A PRIMARY LEVER: sweep BuyingPowerPct / AllocationPct and TotalBudgetPct across their FULL range up to concentrated sizing — a defined-risk / premium book returns flat at small allocations no matter how good the regime, and only clears a rising benchmark when sized up (its collateral is the spread width, so high per-name % is genuine sizing, not runaway leverage). Do NOT leave sizing at the timid default.
SIZING AXES ARE NOT INTERCHANGEABLE — pick the one that matches the question. For an equity DynamicRebalance book: DeploymentPct is TOTAL deployment (how much of the portfolio is invested; remainder cash), while AllocationPct is the PER-NAME cap (how much any single name may take). To vary how invested the book is, you MUST sweep DeploymentPct — sweeping AllocationPct instead leaves deployment pinned where it was authored and every candidate returns the SAME medianDeployment. A per-name cap also only binds when it is below the natural weight (
deployment/limit): with limit 8, a 50% cap does nothing.

Aurora

Sweep surface for: Portfolio "Trend-Rank Momentum" — 1 strategies.
Surfaces present: optionLegs=false, dynamicUniverse=true, closeOption=false, regularBuySell=false.
Strategies:

  • strategyIndex=0 DynamicRebalance: Dynamic rebalance US stocks weighted by Constant 1, filter (Asset's marketCap > Constant 0) → filter ( last price > 200 Day SMA and 126 Day Standard Deviation > Constant 0) → top 10 by 126 Day Rate of Change / 126 Day Standard Deviation → top 5 by Asset's marketCap, max 5 assets when # of Days Since the Last Filled Buy Order ≥ Constant 14 and # of Days Since the Last Filled Sell Order ≥ Constant 14

Sweepable fields: Portfolio.Subject, Action.RankSignal, Action.DeploymentPct, UniversePipeline.SelectTopLimit, UniversePipeline.UniversePipelineFilter

Default genes the server would derive: Subject (1 values); Select top limit (2 values); Total deployment percent (3 values); Universe filter (2 values); Rank signal (2 values)

Pipeline filter stages (replaceable via UniversePipelineFilter + stageIndex):

  • strategy 0 stage 0: Asset's marketCap > Constant 0
  • strategy 0 stage 1: undefined last price > 200 Day undefined SMA and 126 Day undefined Standard Deviation > Constant 0

An axis only teaches you something if its values can produce different backtests. Read the signal-density block above before choosing gene values: thresholds outside the measured range, and SelectTop limits above the number of names that carry a signal at once, compile fine and then score identically on every candidate. The sweep validator rejects a threshold axis it can prove is degenerate; it cannot prove the sparse-signal case, so that one is yours to check.
Choose genes from the sweepable fields above. To raise participation, sweep the entry-frequency limiters (EntryCooldownDays, DteBracket, entry-filter thresholds). For ABSOLUTE return, SIZE IS A PRIMARY LEVER: sweep BuyingPowerPct / AllocationPct and TotalBudgetPct across their FULL range up to concentrated sizing — a defined-risk / premium book returns flat at small allocations no matter how good the regime, and only clears a rising benchmark when sized up (its collateral is the spread width, so high per-name % is genuine sizing, not runaway leverage). Do NOT leave sizing at the timid default.
SIZING AXES ARE NOT INTERCHANGEABLE — pick the one that matches the question. For an equity DynamicRebalance book: DeploymentPct is TOTAL deployment (how much of the portfolio is invested; remainder cash), while AllocationPct is the PER-NAME cap (how much any single name may take). To vary how invested the book is, you MUST sweep DeploymentPct — sweeping AllocationPct instead leaves deployment pinned where it was authored and every candidate returns the SAME medianDeployment. A per-name cap also only binds when it is below the natural weight (
deployment/limit): with limit 8, a 50% cap does nothing.

Aurora

Sweep surface for: Portfolio "Fundamental-Momentum Composite" — 1 strategies.
Surfaces present: optionLegs=false, dynamicUniverse=true, closeOption=false, regularBuySell=false.
Strategies:

  • strategyIndex=0 DynamicRebalance: Dynamic rebalance US stocks weighted by Constant 1, filter (Asset's marketCap > Constant 0) → filter (63 Day Rate of Change > Constant 0 and 252 Day Rate of Change > Constant 0 and 14 Day RSI > Constant 50) → top 10 by 63 Day Rate of Change + 252 Day Rate of Change + 14 Day RSI → top 5 by Asset's marketCap, max 5 assets when # of Days Since the Last Filled Buy Order ≥ Constant 14 and # of Days Since the Last Filled Sell Order ≥ Constant 14

Sweepable fields: Portfolio.Subject, Action.RankSignal, Action.DeploymentPct, UniversePipeline.SelectTopLimit, UniversePipeline.UniversePipelineFilter

Default genes the server would derive: Subject (1 values); Select top limit (2 values); Total deployment percent (3 values); Universe filter (2 values); Rank signal (2 values)

Pipeline filter stages (replaceable via UniversePipelineFilter + stageIndex):

  • strategy 0 stage 0: Asset's marketCap > Constant 0
  • strategy 0 stage 1: 63 Day undefined Rate of Change > Constant 0 and 252 Day undefined Rate of Change > Constant 0 and 14 Day undefined RSI > Constant 50

An axis only teaches you something if its values can produce different backtests. Read the signal-density block above before choosing gene values: thresholds outside the measured range, and SelectTop limits above the number of names that carry a signal at once, compile fine and then score identically on every candidate. The sweep validator rejects a threshold axis it can prove is degenerate; it cannot prove the sparse-signal case, so that one is yours to check.
Choose genes from the sweepable fields above. To raise participation, sweep the entry-frequency limiters (EntryCooldownDays, DteBracket, entry-filter thresholds). For ABSOLUTE return, SIZE IS A PRIMARY LEVER: sweep BuyingPowerPct / AllocationPct and TotalBudgetPct across their FULL range up to concentrated sizing — a defined-risk / premium book returns flat at small allocations no matter how good the regime, and only clears a rising benchmark when sized up (its collateral is the spread width, so high per-name % is genuine sizing, not runaway leverage). Do NOT leave sizing at the timid default.
SIZING AXES ARE NOT INTERCHANGEABLE — pick the one that matches the question. For an equity DynamicRebalance book: DeploymentPct is TOTAL deployment (how much of the portfolio is invested; remainder cash), while AllocationPct is the PER-NAME cap (how much any single name may take). To vary how invested the book is, you MUST sweep DeploymentPct — sweeping AllocationPct instead leaves deployment pinned where it was authored and every candidate returns the SAME medianDeployment. A per-name cap also only binds when it is below the natural weight (
deployment/limit): with limit 8, a 50% cap does nothing.

User

Systematic Sweep: Run a broad systematic sweep on portfolioId 6a849f4b02281665dc696269, Market-Cap Top-5 Control, over the same 2020-01-01 through 2026-08-17 daily-bar window with $100,000 initial value and SPY baseline. Preserve a broad point-in-time U.S. universe, exactly top 5 by descending market capitalization, equal-weight intent, and biweekly rebalance. Sweep only the compiled axes: universe filter thresholds/expressions where non-degenerate, rank signal alternatives including market-cap rank and supported momentum ranks, and total deployment percentage across meaningful exposure levels. Do not vary SelectTopLimit away from 5. Use selection_policy to prefer Sortino, require medianDeployment at least 90%, require meaningful traded breadth, and constrain maxDrawdown <= 15% when supported. Report requested versus compiled genes and warnings.
Systematic Sweep: Run a broad systematic sweep on portfolioId 6a849f4b02281665dc696279, ROC Momentum Top-5, over the same 2020-01-01 through 2026-08-17 daily-bar window with $100,000 initial value and SPY baseline. Preserve a broad point-in-time U.S. universe, exactly top 5 by descending market capitalization, equal-weight intent, and biweekly rebalance. Sweep compiled universe-filter and rank-signal axes across supported 1-month, 3-month, 6-month, and 12-month rate-of-change mechanisms, plus total deployment percentage as the exposed sizing/risk lever. Do not vary SelectTopLimit away from 5. Use selection_policy to prefer Sortino, require medianDeployment at least 90%, require meaningful traded breadth, and constrain maxDrawdown <= 15% when supported. Report requested versus compiled genes and warnings.
Systematic Sweep: Run a broad systematic sweep on portfolioId 6a849f4c02281665dc696288, Multi-Horizon Momentum, over the same 2020-01-01 through 2026-08-17 daily-bar window with $100,000 initial value and SPY baseline. Preserve a broad point-in-time U.S. universe, exactly top 5 by descending market capitalization, equal-weight intent, and biweekly rebalance. Sweep the compiled filter and rank-signal axes across supported positive/threshold combinations of 1-month, 3-month, 6-month, and 12-month rate of change and their supported composite rank expressions, plus total deployment percentage. Do not vary SelectTopLimit away from 5. Use selection_policy to prefer Sortino, require medianDeployment at least 90%, require meaningful traded breadth, and constrain maxDrawdown <= 15% when supported. Report requested versus compiled genes and warnings.
Systematic Sweep: Run a broad systematic sweep on portfolioId 6a849f4c02281665dc69628f, RSI-Trend Momentum, over the same 2020-01-01 through 2026-08-17 daily-bar window with $100,000 initial value and SPY baseline. Preserve a broad point-in-time U.S. universe, exactly top 5 by descending market capitalization, equal-weight intent, and biweekly rebalance. Sweep the compiled filter and rank-signal axes across RSI(14) bands, supported RSI horizons, 50-day and 200-day moving-average trend filters, and 3-month/6-month/12-month rate-of-change thresholds, plus total deployment percentage. Do not vary SelectTopLimit away from 5. Use selection_policy to prefer Sortino, require medianDeployment at least 90%, require meaningful traded breadth, and constrain maxDrawdown <= 15% when supported. Report requested versus compiled genes and warnings.
Systematic Sweep: Run a broad systematic sweep on portfolioId 6a849f4c02281665dc696293, Trend-Rank Momentum, over the same 2020-01-01 through 2026-08-17 daily-bar window with $100,000 initial value and SPY baseline. Preserve a broad point-in-time U.S. universe, exactly top 5 by descending market capitalization, equal-weight intent, and biweekly rebalance. Sweep the compiled trend filter, supported 3-month/6-month/12-month rate-of-change rank signals, supported volatility-adjusted rank expressions using price standard deviation, and total deployment percentage. Do not vary SelectTopLimit away from 5. Use selection_policy to prefer Sortino, require medianDeployment at least 90%, require meaningful traded breadth, and constrain maxDrawdown <= 15% when supported. Report requested versus compiled genes and warnings.
Systematic Sweep: Run a broad systematic sweep on portfolioId 6a849f4c02281665dc6962a2, Fundamental-Momentum Composite, over the same 2020-01-01 through 2026-08-17 daily-bar window with $100,000 initial value and SPY baseline. Preserve a broad point-in-time U.S. universe, exactly top 5 by descending market capitalization, equal-weight intent, and biweekly rebalance. Sweep only mechanisms actually present on the compiled seed: supported 3-month and 12-month rate-of-change filters, RSI threshold/filter, supported composite rank signals, universe filter, and total deployment percentage. Do not claim or fabricate revenue growth, net-income growth, StockReport rating, filing availability, stop-loss, or take-profit genes when they are absent from the surface. Do not vary SelectTopLimit away from 5. Use selection_policy to prefer Sortino, require medianDeployment at least 90%, require meaningful traded breadth, and constrain maxDrawdown <= 15% when supported. Report requested versus compiled genes and warnings.

Aurora

Successfully started systematic sweep for portfolio "Market-Cap Top-5 Control".

Sweep Details:

  • ID: 6a84a29202281665dc6aa6e8
  • Date Range: 2020-01-01 to 2026-08-18
  • Interval: Day
  • Mode: Auto → Exhaustive
  • Planned Evaluations: 126
  • Generations: 11
  • Population Size: 12
  • Genes: Universe Pipeline Filter, Rank Signal, Deployment Pct
  • Theoretical Variants: 126

The sweep is now running. Use Read Optimization with the ID above to inspect results when it completes.

Aurora

Successfully started systematic sweep for portfolio "ROC Momentum Top-5".

Sweep Details:

  • ID: 6a84a29202281665dc6aa6e6
  • Date Range: 2020-01-01 to 2026-08-18
  • Interval: Day
  • Mode: Auto → Exhaustive
  • Planned Evaluations: 240
  • Generations: 20
  • Population Size: 12
  • Genes: Universe Pipeline Filter, Rank Signal, Deployment Pct
  • Theoretical Variants: 240

The sweep is now running. Use Read Optimization with the ID above to inspect results when it completes.

Aurora

Failed to start systematic sweep: Sweep requested 4 gene axes but 1 failed to compile (3 kept). A partial search would look identical to a complete one. Fix or drop the failing intents and retry:

  • "UniversePipeline SelectTopLimit: hold exactly at 5 and do not vary": The requested SelectTopLimit is fixed at exactly 5, so it provides only one value and cannot form a sweep axis.

Aurora

Successfully started systematic sweep for portfolio "RSI-Trend Momentum".

Sweep Details:

  • ID: 6a84a29c02281665dc6aaac6
  • Date Range: 2020-01-01 to 2026-08-18
  • Interval: Day
  • Mode: Auto → Generational
  • Planned Evaluations: 96
  • Generations: 8
  • Population Size: 12
  • Genes: Universe Pipeline Filter, Rank Signal, Deployment Pct
  • Theoretical Variants: 816

The sweep is now running. Use Read Optimization with the ID above to inspect results when it completes.

⚠️ Some requested genes were skipped:

  • Universe Pipeline Filter: duplicate gene for UniversePipeline:UniversePipelineFilter:pipe:0:stage:1; kept the first
  • Universe Pipeline Filter: duplicate gene for UniversePipeline:UniversePipelineFilter:pipe:0:stage:1; kept the first
  • Universe Pipeline Filter: duplicate gene for UniversePipeline:UniversePipelineFilter:pipe:0:stage:1; kept the first
  • Universe Pipeline Filter: duplicate gene for UniversePipeline:UniversePipelineFilter:pipe:0:stage:1; kept the first

Aurora

Successfully started systematic sweep for portfolio "Trend-Rank Momentum".

Sweep Details:

  • ID: 6a84a29202281665dc6aa6d3
  • Date Range: 2020-01-01 to 2026-08-18
  • Interval: Day
  • Mode: Auto → Exhaustive
  • Planned Evaluations: 240
  • Generations: 20
  • Population Size: 12
  • Genes: Universe Pipeline Filter, Rank Signal, Deployment Pct
  • Theoretical Variants: 240

The sweep is now running. Use Read Optimization with the ID above to inspect results when it completes.

⚠️ Some requested genes were skipped:

  • Rank Signal: duplicate gene for Action:RankSignal:stratIdx:0; kept the first
  • Rank Signal: duplicate gene for Action:RankSignal:stratIdx:0; kept the first
  • Rank Signal: duplicate gene for Action:RankSignal:stratIdx:0; kept the first

Aurora

Failed to start systematic sweep: Sweep requested 8 gene axes but 1 failed to compile (4 kept). A partial search would look identical to a complete one. Fix or drop the failing intents and retry:

  • "preserve equal-weight intent, biweekly rebalance cadence, broad point-in-time U.S. universe, and exactly SelectTopLimit 5 by descending point-in-time market capitalization; do not sweep SelectTopLimit": No sweepable mutation is requested; the seed already preserves the broad point-in-time U.S. universe, equal-weight intent, biweekly cadence, and SelectTopLimit 5 by descending market capitalization.

User

Systematic Sweep: Retry the systematic sweep for portfolioId 6a849f4c02281665dc696288 (Multi-Horizon Momentum) over 2020-01-01 through 2026-08-17, daily bars, $100,000 initial value, SPY baseline. Preserve the broad point-in-time U.S. universe, exactly five names selected by descending market capitalization, equal-weight intent, and biweekly rebalance; do not include SelectTopLimit as a gene because it must remain fixed at 5. Sweep only the compiled UniversePipelineFilter and Action.RankSignal axes using supported 1-month, 3-month, 6-month, and 12-month rate-of-change positive/threshold combinations and supported composite rank expressions, plus Action.DeploymentPct at meaningful exposure levels. Use selection_policy with primary sortinoRatio, medianDeployment greaterThanOrEqual 90%, meaningful participation and distinctUnderlyingsTraded constraints, and maxDrawdown lessThanOrEqual 15% where supported. Report requested versus compiled genes and warnings.
Systematic Sweep: Retry the systematic sweep for portfolioId 6a849f4c02281665dc6962a2 (Fundamental-Momentum Composite) over 2020-01-01 through 2026-08-17, daily bars, $100,000 initial value, SPY baseline. Preserve the broad point-in-time U.S. universe, exactly five names selected by descending market capitalization, equal-weight intent, and biweekly rebalance; do not include SelectTopLimit as a gene because it must remain fixed at 5. Sweep only mechanisms actually present on the compiled seed: supported 3-month and 12-month rate-of-change filters, RSI threshold/filter, supported composite rank signals, UniversePipelineFilter, and Action.DeploymentPct at meaningful exposure levels. Do not claim or fabricate revenue growth, net-income growth, StockReport rating, filing availability, stop-loss, or take-profit genes because they are absent from the surface. Use selection_policy with primary sortinoRatio, medianDeployment greaterThanOrEqual 90%, meaningful participation and distinctUnderlyingsTraded constraints, and maxDrawdown lessThanOrEqual 15% where supported. Report requested versus compiled genes and warnings.
Read Optimization: Read these completed systematic sweeps in one bulk request: 6a84a29202281665dc6aa6e8 (Market-Cap Top-5 Control), 6a84a29202281665dc6aa6e6 (ROC Momentum Top-5), 6a84a29c02281665dc6aaac6 (RSI-Trend Momentum), and 6a84a29202281665dc6aa6d3 (Trend-Rank Momentum). For each, report status, requested versus compiled gene counts, warnings, actual swept values, selection-policy constraints and pass counts, and the full top leaderboard rows with return, max drawdown, Sortino, Sharpe, participation, median deployment, distinct underlyings, and SPY comparison.

Aurora

Failed to start systematic sweep: no_startable_optimizer_machines

Aurora

Successfully started systematic sweep for portfolio "Fundamental-Momentum Composite".

Sweep Details:

  • ID: 6a84a2d402281665dc6ac004
  • Date Range: 2020-01-01 to 2026-08-18
  • Interval: Day
  • Mode: Auto → Generational
  • Planned Evaluations: 96
  • Generations: 8
  • Population Size: 12
  • Genes: Universe Pipeline Filter, Universe Pipeline Filter, Rank Signal, Deployment Pct
  • Theoretical Variants: 1225

The sweep is now running. Use Read Optimization with the ID above to inspect results when it completes.

⚠️ Some requested genes were skipped:

  • Universe Pipeline Filter: duplicate gene for UniversePipeline:UniversePipelineFilter:pipe:0:stage:1; kept the first
  • Universe Pipeline Filter: duplicate gene for UniversePipeline:UniversePipelineFilter:pipe:0:stage:1; kept the first

Aurora

Optimization "Trend-Rank Momentum broad trend, horizon, volatility-rank, and deployment sweep" is running (generation 11/20, 132/240 evaluations)…

Aurora

Optimization "Trend-Rank Momentum broad trend, horizon, volatility-rank, and deployment sweep" completed.

Aurora

1. Executive Summary

The Trend-Rank sweep produced a potentially attractive validation result, but it did not identify a policy-compliant or deployment-ready strategy.

The main validation candidate achieved:

  • 53.07% return
  • 1.65 Sortino
  • 1.07 Sharpe
  • 17.25% maximum drawdown
  • 56 distinct underlyings
  • 66.81% median deployment

It therefore failed three selection-policy requirements: median deployment ≥90%, participation ≥0.35%, and max drawdown ≤15%. The max-drawdown/most-balanced candidate has no validation statistics in the supplied result, so its out-of-sample policy status cannot be established.

The sweep also found that the universe-filter axis was inert: five different filter values produced identical metrics. Conclusions about that axis are therefore untested. The rank-signal axis was the only confirmed discriminating mechanism. Deployment was not meaningfully varied on the leaderboard.

No original-portfolio statistics or complete leaderboard rows were included in the payload, so a precise original-versus-optimized comparison and full leaderboard report cannot be completed from this result alone.

2. Sweep and Selection-Policy Status

Item Result
Sweep status Completed
Training window 2020-01-01 to 2025-04-20
Validation window 2025-04-21 to 2026-08-18
Training design 3 rolling windows, 50% overlap
Validation design One holdout-tail window
Candidates ranked 25
Selection basis Validation
Selection status unconfirmed_selection
Selection caveat Winner is a validation-selection artifact and requires independent walk-forward confirmation

Policy constraints

  • medianDeployment >= 90
  • participationRate >= 0.35
  • distinctUnderlyingsTraded >= 9
  • maxDrawdown <= 15
  • Primary objective: Sortino
  • Tie-breakers: max drawdown, return, distinct underlyings

3. Performance Comparison

Candidate portfolioId Validation return Validation max drawdown Validation Sortino Validation Sharpe Participation Median deployment Distinct underlyings Policy status
Best Sharpe / Best Return 6a84bb40045ebeaf9ca490ca 53.07% 17.25% 1.65 1.07 0.0126% 66.81% 56 Fails
Best Max Drawdown / Most Balanced 6a84bb41045ebeaf9ca490d0 Not supplied Not supplied Not supplied Not supplied Not supplied Not supplied Not supplied Unconfirmed

For the first candidate, the supplied participation rate is only 0.0126%, despite 56 traded names. This is not zero participation, but it is far below the requested 0.35% threshold.

The second candidate’s training statistics show:

  • 98.09% return
  • 34.33% training drawdown
  • 1.20 training Sortino
  • 0.85 training Sharpe
  • 99.96% training median deployment
  • 55 distinct underlyings
  • 0.0124% training participation

However, its validation statistics are absent. Its training deployment does not establish that it passes the validation deployment constraint.

4. Analysis and Robustness

Best Sharpe / Best Return

portfolioId: 6a84bb40045ebeaf9ca490ca

On validation, this candidate generated a strong 53.07% return with a 1.65 Sortino and 1.07 Sharpe. Its 17.25% drawdown is materially better than the 31.12% training drawdown, and its Sharpe improved from 0.91 to 1.07.

Sharpe degradation was:

[
1 - \frac

User

Run Walk-Forward Study: Run a certified sweep-engine walk-forward study for portfolioId 6a84bb40045ebeaf9ca490ca, the Trend-Rank candidate selected for best validation Sharpe/return. Use 2020-01-01 through 2026-08-17, daily bars, $100,000 initial value, SPY baseline, anchored rolling folds with at least 6 folds and true held-out validation periods. Preserve the broad point-in-time U.S. dynamic universe, exactly five names selected by descending market capitalization, equal-weight intent, biweekly rebalance, and the candidate's tested trend/momentum/rank configuration. Require reporting of fold-level and aggregate out-of-sample return, max drawdown, Sortino, Sharpe, participation, median deployment, distinct underlyings, breadth, SPY comparison, and deployability certification. Include a stressed/bear-period fold or explicitly report if the fold design cannot provide one. Do not deploy or place orders.
Run Walk-Forward Study: Run a certified sweep-engine walk-forward study for portfolioId 6a84bb41045ebeaf9ca490d0, the Trend-Rank candidate selected for best max-drawdown balance. Use 2020-01-01 through 2026-08-17, daily bars, $100,000 initial value, SPY baseline, anchored rolling folds with at least 6 folds and true held-out validation periods. Preserve the broad point-in-time U.S. dynamic universe, exactly five names selected by descending market capitalization, equal-weight intent, biweekly rebalance, and the candidate's tested trend/momentum/rank configuration. Require reporting of fold-level and aggregate out-of-sample return, max drawdown, Sortino, Sharpe, participation, median deployment, distinct underlyings, breadth, SPY comparison, and deployability certification. Include a stressed/bear-period fold or explicitly report if the fold design cannot provide one. Do not deploy or place orders.

Aurora

Failed to start walk-forward study: Sweep requested 5 gene axes but 3 failed to compile (1 kept). A partial search would look identical to a complete one. Fix or drop the failing intents and retry:

  • "preserve the candidate's tested 200-day moving-average trend filter": The candidate's 200-day moving-average trend filter is already the seed stage and is preserved by the automatic no-change baseline cell; no filter variant should be authored.
  • "preserve exactly 5 selected names ranked by descending point-in-time market capitalization with equal-weight intent and biweekly rebalance": The requested five-name market-cap ranking, equal-weight intent, and biweekly rebalance are already present in the seed; no-change baseline preserves them, and rebalance cadence is not a sweepable field.
  • "preserve the broad point-in-time U.S. dynamic universe and do not introduce fixed ticker lists": The seed already uses a broad dynamic U.S. stock universe; preserving it requires no gene, and geneSubject is for swapping traded names rather than retaining a broad universe.

Aurora

Failed to start walk-forward study: insufficient_optimizer_capacity_after_wake

User

Run Walk-Forward Study: Run a certified sweep-engine walk-forward study on portfolioId 6a84bb40045ebeaf9ca490ca from 2020-01-01 through 2026-08-17 using daily bars, $100,000 initial value, and SPY baseline. Use at least 6 anchored rolling folds with genuine held-out validation periods and include a stressed/bear-period fold if the dates permit; otherwise report that limitation. Use the portfolio seed exactly as authored for its broad point-in-time dynamic U.S. universe, five-name descending market-cap selection, equal-weight construction, biweekly rebalance, and tested Trend-Rank configuration. Do not create gene intents for these already-preserved seed properties. Use sweep-engine certification with validation performance, drawdown, Sortino, Sharpe, participation, median deployment, distinct underlyings, breadth, and SPY comparison. Report fold-level and aggregate out-of-sample results, certification and deployability verdicts, exact study ID, and any warnings. Do not deploy or place orders.
Run Walk-Forward Study: Run a certified sweep-engine walk-forward study on portfolioId 6a84bb41045ebeaf9ca490d0 from 2020-01-01 through 2026-08-17 using daily bars, $100,000 initial value, and SPY baseline. Use at least 6 anchored rolling folds with genuine held-out validation periods and include a stressed/bear-period fold if the dates permit; otherwise report that limitation. Use the portfolio seed exactly as authored for its broad point-in-time dynamic U.S. universe, five-name descending market-cap selection, equal-weight construction, biweekly rebalance, and tested Trend-Rank configuration. Do not create gene intents for these already-preserved seed properties. Use sweep-engine certification with validation performance, drawdown, Sortino, Sharpe, participation, median deployment, distinct underlyings, breadth, and SPY comparison. Report fold-level and aggregate out-of-sample results, certification and deployability verdicts, exact study ID, and any warnings. Do not deploy or place orders.

Aurora

Failed to start walk-forward study: Sweep walk-forward study requires sweep_config or gene_intents

Aurora

Failed to start walk-forward study: Sweep walk-forward study requires sweep_config or gene_intents

User

Run Walk-Forward Study: Run a certified sweep-engine walk-forward study for portfolioId 6a84bb40045ebeaf9ca490ca from 2020-01-01 through 2026-08-17 using daily bars, $100,000 initial value, and SPY baseline. Use engine_kind sweep, certification true, at least 6 anchored rolling folds with genuine held-out validation periods, and include a bear/stressed fold if the dates permit. Preserve the seed exactly as authored through its no-change baseline: broad point-in-time dynamic U.S. universe, exactly 5 names selected by descending market capitalization, equal-weight construction, biweekly rebalance, and the tested Trend-Rank configuration. Do not create gene intents for those preserved seed properties. Supply sweep configuration only for the candidate's genuinely sweepable Trend-Rank rank-signal and total-deployment axes, with the baseline cell retained. Select and report using validation return, max drawdown, Sortino, Sharpe, participation, median deployment, distinct underlyings, breadth, and SPY comparison. Require certification and deployability verdicts plus fold-level and aggregate out-of-sample results and warnings. Do not deploy or place orders.
Run Walk-Forward Study: Run a certified sweep-engine walk-forward study for portfolioId 6a84bb41045ebeaf9ca490d0 from 2020-01-01 through 2026-08-17 using daily bars, $100,000 initial value, and SPY baseline. Use engine_kind sweep, certification true, at least 6 anchored rolling folds with genuine held-out validation periods, and include a bear/stressed fold if the dates permit. Preserve the seed exactly as authored through its no-change baseline: broad point-in-time dynamic U.S. universe, exactly 5 names selected by descending market capitalization, equal-weight construction, biweekly rebalance, and the tested Trend-Rank configuration. Do not create gene intents for those preserved seed properties. Supply sweep configuration only for the candidate's genuinely sweepable Trend-Rank rank-signal and total-deployment axes, with the baseline cell retained. Select and report using validation return, max drawdown, Sortino, Sharpe, participation, median deployment, distinct underlyings, breadth, and SPY comparison. Require certification and deployability verdicts plus fold-level and aggregate out-of-sample results and warnings. Do not deploy or place orders.

Aurora

Started walk-forward study "Certified Trend-Rank Seed Walk-Forward" (6 folds, Sweep, mode: validation). Status: PENDING. Planned units: 150. Use "Read Walk-Forward Study" to analyze results once it completes.

Aurora

Started walk-forward study "Certified Trend-Rank Seed Walk-Forward" (6 folds, Sweep, mode: validation). Status: PENDING. Planned units: 60. Use "Read Walk-Forward Study" to analyze results once it completes.

User

List Walk-Forward Studies: List walk-forward studies for portfolioId 6a84bb40045ebeaf9ca490ca, including status, study ID, engine kind, certification status, fold count, and date range.
List Walk-Forward Studies: List walk-forward studies for portfolioId 6a84bb41045ebeaf9ca490d0, including status, study ID, engine kind, certification status, fold count, and date range.

Aurora

Walk-forward studies

Showing 1 of 1 (page 1/1)

  • Certified Trend-Rank Seed Walk-Forward (6a84bbfd045ebeaf9ca4ab0c)
    PENDING · Sweep · validation · folds 0/6 · 2026-08-18

Next: call Read Walk-Forward Study with walkForwardStudyId set to a study id above (fold winners, genomes, and deployability analysis).

Aurora

Walk-forward studies

Showing 2 of 2 (page 1/1)

  • Certified Trend-Rank Seed Walk-Forward (6a84bc00045ebeaf9ca4aba8)
    PENDING · Sweep · validation · folds 0/6 · 2026-08-18
  • Certified Trend-Rank Best-Drawdown-Balance Walk-Forward (6a84bb91045ebeaf9ca49b98)
    ERROR · Sweep · validation · folds 0/6 · 2026-08-18

Next: call Read Walk-Forward Study with walkForwardStudyId set to a study id above (fold winners, genomes, and deployability analysis).

User

Reading results from 0 agents

User

Read Walk-Forward Study: Read walk-forward studies 6a84bbfd045ebeaf9ca4ab0c and 6a84bc00045ebeaf9ca4aba8 in one bulk request. For each, report current status, certification, fold progress, fold-level and aggregate out-of-sample return, max drawdown, Sortino, Sharpe, participation, median deployment, distinct underlyings, breadth, SPY comparison, stressed/bear-fold coverage, warnings, and deployability verdict. Do not deploy or place orders.

Aurora

Verdict: REJECTED

The Trend-Rank candidate is not deployable. OOS returns were positive in five of six folds, but performance was highly variable, one fold lost 26.83%, every fold exceeded the 15% maximum-drawdown target, and the selected winner churned across folds. No adaptive policy was present.

Study design and completion

  • Status: COMPLETE
  • Engine: Sweep
  • Mode: Validation
  • Folds: 6/6 complete
  • Plan: Anchored, 252-day OOS windows, 14-day embargo
  • Effective independent folds: 6
  • Certification: The JSON does not include an explicit certification boolean or certification verdict. Although the study is named “Certified,” certification cannot be independently confirmed from the supplied results.
  • Bear/stressed coverage: No fold dates or explicit bear/stress label were provided. Fold 1 was materially negative and may represent a stressed regime, but it cannot be formally certified as a bear-period fold from this output.

Aggregate OOS performance

These are arithmetic summaries across the six OOS folds, not a stitched cumulative equity curve.

Metric Mean Median Range
OOS return 49.04% 53.15% −26.83% to 124.63%
OOS Sharpe 1.10 1.58 −0.65 to 1.75
OOS Sortino 1.72 2.40 −0.85 to 2.79
OOS max drawdown 27.19% 27.43% 18.23% to 36.85%

The drawdown constraint failed in all six folds:

  • Best OOS drawdown: 18.23%
  • Worst OOS drawdown: 36.85%
  • Required threshold: below 15%

Thus, even the best fold missed the risk objective.

Fold-level OOS results

Fold OOS return OOS Sharpe OOS Sortino OOS max drawdown Participation Median deployment Distinct names
0 51.21% 1.72 2.65 20.42% 0.405% 99.99% 18
1 −26.83% −0.65 −0.85 32.76% 0.382% 99.98% 17
2 55.09% 1.73 2.69 18.23% 0.472% 99.98% 21
3 75.25% 1.45 2.15 31.72% 0.405% 99.95% 18
4 124.63% 1.75 2.79 36.85% 0.494% 99.91% 22
5 14.89% 0.60 0.87 23.14% 0.427% 99.95% 19

Consistency assessment

The strategy was not robustly stable:

  • Five of six folds were profitable, but the negative fold lost 26.83%.
  • OOS returns ranged over more than 151 percentage points.
  • The 124.63% result in fold 4 materially inflated the mean.
  • Excluding the best fold, the remaining five-fold mean return falls to approximately 33.92%.
  • Sharpe and Sortino were negative in fold 1 and substantially weaker in fold 5.
  • Drawdowns were persistently large rather than isolated: every fold exceeded 18%.

The result is therefore positive in aggregate but high variance and regime-sensitive, not a consistently controlled-risk process.

Validation versus OOS: overfitting diagnosis

Validation results were often weaker than the subsequent OOS results, so this is not a simple case where validation universally looked excellent and OOS collapsed. However, there are important signs of selection instability and overfitting.

Fold Validation return OOS return Validation Sharpe OOS Sharpe Validation max DD OOS max DD
0 14.81% 51.21% 0.54 1.72 20.39% 20.42%
1 10.87% −26.83% 0.39 −0.65 19.55% 32.76%
2 3.30% 55.09% 0.22 1.73 28.68% 18.23%
3 −8.24% 75.25% 0.09 1.45 45.27% 31.72%
4 231.15% 124.63% 1.31 1.75 24.49% 36.85%
5 349.49% 14.89% 1.32 0.60 31.90% 23.14%

The clearest overfitting/validation-luck cases are:

  • Fold 1: modestly positive validation became negative OOS, with Sharpe falling from 0.39 to −0.65 and drawdown worsening from 19.55% to 32.76%.
  • Fold 5: exceptionally strong validation—349.49% return and 1.32 Sharpe—collapsed to only 14.89% OOS and 0.60 Sharpe.
  • Fold 4: validation was also extremely strong, and although OOS remained positive, drawdown increased materially to 36.85%.

The full-fold validation mean return was approximately 100.23%, versus 49.04% OOS, a substantial decline. The validation distribution was dominated by folds 4 and 5, which is consistent with validation-period selection luck.

Winner stability

Winner stability was explicitly false:

  • winnerStableAcrossFolds: false
  • dominantCandidateKey: ac0476...b0ff

Selected candidate keys by fold:

  • Fold 0: cfb390...17a24
  • Fold 1: ac0476...b0ff
  • Fold 2: cfb390...17a24
  • Fold 3: aa8e58...e6cfc
  • Fold 4: aa8e58...e6cfc
  • Fold 5: ac0476...b0ff

Three different candidates won across the six folds, each winning twice. The dominant key was not a majority winner; it merely tied for the highest count. This is substantial parameter-selection churn and weak evidence for a uniquely superior Trend-Rank configuration.

Cross-fold robust selection

The minimax validation candidate was:

  • Candidate key: 5a298a...2ea3f0
  • Selection criterion: highest minimum validation Sortino
  • Score: 0.1292
  • Per-fold validation Sortino:
    0.647, 0.319, 0.294, 0.129, 0.714, 1.262
  • Per-fold validation returns:
    11.59%, 4.27%, 2.97%, −5.80%, 42.11%, 129.07%

This robust candidate diverged from every fold’s selected argmax winner. That indicates the per-fold winners were likely validation-lucky cells. For deployment discussion, the cross-fold robust candidate would ordinarily be preferred over the churned per-fold winners—but its own validation evidence is weak:

  • Minimum Sortino is only 0.129
  • One validation fold is negative
  • It does not demonstrate consistent positive performance
  • Its OOS performance is not supplied separately in this result

Therefore, cross-fold robustness provides a useful selection warning but does not rescue the strategy. It is a validation hint, not OOS proof.

Participation, deployment, and breadth

The strategy was not a zero-trade book:

  • OOS participation ranged from 0.382% to 0.494%
  • Each fold traded 17–22 distinct underlyings
  • Median deployment was approximately 99.91%–99.99% in every fold

This confirms meaningful trading activity and near-full investment. However:

  • The requested participation constraint of ≥0.35% appears to pass in every OOS fold.
  • Deployment ≥90% also passes in every fold.
  • A separate holdings-breadth or average simultaneous-holdings metric was not provided; distinct underlyings traded is the available breadth proxy.
  • Near-100% deployment means the strategy is primarily an always-invested stock-selection system, not a meaningful cash-management or drawdown-avoidance strategy.

SPY comparison

No fold-level or aggregate SPY return, Sharpe, drawdown, or relative-performance fields were included in the supplied JSON. Therefore:

  • A quantitative OOS comparison against SPY cannot be verified.
  • The strategy’s positive aggregate OOS return does not establish benchmark outperformance.
  • Fold 1’s −26.83% loss is especially concerning, but its relative result versus SPY is unknown.

The missing benchmark comparison is a reporting deficiency that should be corrected before any further investment conclusion.

Adaptive policy

adaptiveResult is null.

Consequently:

  • There is no stitched adaptive equity curve to evaluate.
  • Rolls adopted versus incumbent were not reported.
  • Total turnover was not reported.
  • Adaptive performance cannot be compared with fixing one design and holding it.

Final deployability decision

REJECTED.

The strategy has attractive average OOS returns and strong median risk-adjusted metrics, but it fails the stated requirements on the decisive dimensions:

  1. Maximum drawdown exceeded 15% in all six OOS folds.
  2. OOS performance was highly variable and included a −26.83% fold.
  3. Winners churned across folds.
  4. Validation performance, especially in the final folds, materially overstated subsequent OOS performance.
  5. SPY-relative OOS performance was not supplied.
  6. No adaptive-policy evidence exists.

It should not be deployed or promoted to paper testing in its current form. At most, the Trend-Rank family merits a redesigned research iteration with explicit bear-fold dates, reconciled SPY comparisons, lower-deployment or volatility-targeting controls, and a new walk-forward test focused on satisfying the drawdown constraint.

User

Read Walk-Forward Study: Read walk-forward study 6a84bbfd045ebeaf9ca4ab0c. Report its current terminal status, certification and deployability verdicts, fold progress, fold-level and aggregate out-of-sample return, max drawdown, Sortino, Sharpe, participation, median deployment, distinct underlyings, breadth, SPY comparison, stressed/bear-fold coverage, and warnings. Do not deploy or place orders.

Open interactive viewStart a new chat