Published July 2026 · Methodology Paper

Execution-Aware Grading: Why CoinRoc Measures What You Can Actually Trade

Standard backtesting-based grading systems evaluate a trading strategy's simulated performance under idealized assumptions: fills at the grid price, unlimited order-book depth, and no distinction between periods when the strategy is active versus when it is correctly holding cash. This paper documents two systematic biases this introduces and the methodology used to correct them in CoinRoc's asset grading system.

Author
Han Kessel · Trading/Algorithm Specialist, Yodacom Research
Scope
Sections 1–6 · 97-symbol catalog, Year 2 blind forward test
Key finding
27/37 wrongly-hidden assets restored; 32/97 flagged thin liquidity
Advisor summary
Read the advisor article →

Abstract

Standard backtesting-based grading systems evaluate a trading strategy's simulated performance under idealized assumptions: fills at the grid price, unlimited order-book depth, and no distinction between periods when the strategy is active versus when it is correctly holding cash. We document two systematic biases this introduces and the methodology used to correct them in CoinRoc's asset grading system. First, the blended-return bias: grading assets on their total portfolio return across a full evaluation window — including periods where the Adaptive Grid RXI (fuzzy inference system) correctly de-activated the grid — penalizes assets for market-level drawdowns the grid strategy was not responsible for. Second, the liquidity-optimism bias: presenting a grade derived from a clean backtest on an asset with a thin order book implies an execution quality the order book may not be able to support at the simulated scale. We describe the corrections shipped on 2026-06-12 and 2026-06-13, quantify their impact on the 97-symbol catalog, and bound the assumptions and data gaps that limit the strength of the current methodology. The unifying principle: a grade should represent what a strategy's simulated historical behavior in active windows suggests about its grid mechanism, not what a simulation with unlimited liquidity and no regime awareness would produce.

1. Introduction

CoinRoc's asset grading system assigns letter grades (A through F) to cryptocurrency assets based on a weighted composite of several strategy-evaluation signals: simulated grid strategy performance, risk-adjusted return (Sharpe and Sortino ratios), an ETS (execution-to-simulation) factor, a sentiment signal, and a liquidity component. The grade is the primary signal displayed on the Discovery page — it determines which assets are surfaced to users and which are filtered out or flagged.

Two defects in the grading system were identified in June 2026, both traceable to a common root cause: the grade was measuring a scenario the user cannot actually experience, either because the strategy was correctly inactive during the measurement window, or because the market does not have the depth to fill orders at the simulated price.

This paper describes the diagnosis, methodology, and corrective design for both defects. These are not model improvements in the narrow sense — they are corrections to what the model is measuring. The distinction matters because neither change required retraining a model or adjusting weightings; they required identifying that the wrong input was being evaluated.

2. Pillar 1 — Active-Period Return: Evaluating the Grid, Not the Market

2.1 Background: Blended Return and Its Distortion

CoinRoc's grid strategy operates under the direction of the Adaptive Grid RXI, a regime-classification system that classifies market regimes and sets a grid engagement score (gridEngagement ∈ [0, 1]). When gridEngagement falls below 0.65, the RXI pauses new grid buy orders — existing inventory continues to be managed by the strategy, but no new capital is deployed into the grid until conditions improve. This is intentional behavior: the grid strategy is fundamentally short-volatility and works best in ranging, mean-reverting markets. In strongly trending markets, a correctly-designed grid system should stand aside.

Prior to the 2026-06-12 fix, the Discovery page filter used grid_return_percent as its gating metric. This is the blended full-period return — the total portfolio return across all of Year 2 (the blind forward test period), regardless of whether the RXI was actively running the grid or holding cash. The schema's own docblock contained a direct warning about this:

“Use this — NOT gridReturnPercent — when comparing grid performance across ratings, because gridReturnPercent is blended across cash periods.”

Despite the warning, grid_return_percent was the column being evaluated.

In a trending-down market, the blended return absorbs the directional portfolio drawdown even during paused periods — because the total portfolio value tracks the underlying asset price, not just grid profit and loss. The RXI may correctly classify the market as unsuitable for grid trading, pause new buys, and protect the user from the worst of the trend — yet the blended return penalizes the asset for the directional move that the strategy correctly avoided.

The grid_return_active_pct column, added in migration 108, computes the grid strategy's return across only those sub-windows where gridEngagement >= 0.65. This is the metric that answers the correct question: when the grid was running, how did it perform?

The active-period figures reported in §2.3 below were computed by a separate, retrospective classification pass over historical candles. They are not derived from the live gridEngagement circuit-breaker described above; the specific backtest runs referenced in this section used a fixed engagement setting across all symbols for this test window.

2.2 Methodology

Filter change. The Discovery filter was changed from:

grid_return_percent >= -25% (blended)

to:

grid_return_active_pct >= -25% (active-period, RXI-gated)
  fallback: grid_return_percent (blended) when active_pct is null
threshold: -25% unchanged

The threshold of -25% was retained as the grid-mechanism failure boundary. A strategy losing -25% or more even during its own elected active windows is failing on its own terms, independent of regime. The threshold is more conservative applied to active-period return than to blended return in normal markets: an asset that only loses -5% blended but -30% active is correctly flagged as a grid failure even though its blended number looks passable.

Transparency for genuine failures. Assets that fail the active-period filter (active return below -25%) are not silently dropped. They are included in the existing hiddenAtTier catalog response with a new reason code: grid_underperforms_in_regime. The Discovery UI renders this with a plain-English label: “Grid underperforms at your fee tier even in favorable market conditions.” Users can see that these assets exist, understand why they are not recommended, and make their own judgment.

2.3 Findings

Impact on the 97-symbol catalog (retail-binance-us tier, Year 2 forward test):

Prior to the fix, approximately 48 assets were visible on Discovery. Approximately 37 were hidden by the -25% blended return filter.

SQL analysis of the 37 hidden assets against the active-period metric:

CategoryCount
Total hidden by blended filter37
Would pass active-period filter (active >= -25%)27 (73%)
Genuinely failing on both metrics (active < -25%)10 (27%)
Active-period return is positive (grid was profitable in active windows)6

Selected assets from the named-major review:

Note: the Regime-Active % column is the retrospective classification described in §2.1, not the live gridEngagement gate. The Blended Return and Active Return figures for all nine symbols below come from backtest runs that used a fixed grid-engagement setting, not the live RXI decision.

SymbolBlended ReturnActive ReturnRegime-Active % (Yr2, retrospective classifier — see §2.1 note)Verdict
SOLUSDT-45.5%-9.8%77.0%Wrongly hidden
LINKUSDT-39.6%+2.1%71.2%Wrongly hidden
ALGOUSDT-38.5%-12.2%71.2%Wrongly hidden
HBARUSDT-35.5%+0.8%67.4%Wrongly hidden
DOGEUSDT-30.1%-5.1%71.2%Wrongly hidden
BCHUSDT-27.9%+3.9%86.3%Wrongly hidden
ADAUSDT-43.4%-25.8%55.6%Genuinely failing
BTCUSDT-31.8%-40.2%100.0%Genuinely failing
SHIBUSDT-25.7%-28.8%82.7%Genuinely failing

The BTC case is instructive as a sanity check. BTC's blended and active-period returns are identical (-40.2% both) because the retrospective classifier found no candles in Year 2 it would exclude from the active window — not because BTC's simulation run itself avoided a pause state (this test's engagement setting was fixed, not live-gated; see §2.1). This numeric equivalence is still a valid sanity check on the active-period metric's construction: since no candles were excluded, no distortion could have been introduced by the exclusion step, regardless of what generated the underlying P&L. The -40.2% active return is a genuine grid mechanism failure, and BTC is correctly filtered from Discovery regardless of which metric is used.

Post-fix state: Visible assets on Discovery moved from approximately 48 to approximately 75 (of 97), with genuinely failing assets shown in the hiddenAtTier section with explicit reason labels.

2.4 Interpretation Constraints

The active-period return metric answers a narrower question than the blended return does — and that narrowness is the point. It does not answer “how would a portfolio perform if held for all of Year 2 with this strategy?” It answers “how did the grid mechanism perform when the RXI chose to run it?”

These are different questions. A user considering CoinRoc's grid strategy is implicitly accepting the RXI's judgment about when to run. If the RXI is correct in its regime classification, the active-period return is the better predictor of what the user will experience during active windows. If the RXI is wrong (it classifies trending markets as ranging, engages the grid, and loses), the blended return and active return converge — as they do for BTC.

The split between the two metrics is therefore also a signal about RXI regime accuracy, which is a separate validation question not addressed in this paper.

3. Pillar 2 — Liquidity-Aware Grading: A Beautiful Backtest Is Not a Fill

3.1 Background: The Execution Gap in Grid Strategies

Grid trading places many simultaneous resting limit orders across a defined price range. Unlike a single large market order, the execution risk in a grid strategy is distributed: each individual fill is small in absolute terms, but the order book must be able to absorb fills at multiple price levels without meaningful slippage. A grid on a thin order book will see partial fills, off-price fills, and in extreme cases, grid levels that never fill at all because there is no counterparty.

Standard backtests assume fills at the grid price with no market impact. This is a reasonable assumption for large-cap assets with deep order books and high global trading volume. It is a materially wrong assumption for small-cap and micro-cap assets where the 24-hour global trading volume is in the low millions of dollars.

Prior to the 2026-06-13 fix, CoinRoc's liquidity component (carrying a 5% weight in the grade composite) was null for 91 of 93 graded assets because no global volume data was being correctly sourced. The practical effect: the grade was computed on simulated performance, risk-adjusted returns, and ETS alone, with no tradability signal. An illiquid asset with a clean backtest received the same grade mechanics as Bitcoin.

3.2 Methodology

3.2.1 Liquidity Score Composite

The liquidityScore (0–100) is a weighted composite of four signals:

SignalWeightRationale
30-day median 24h global volume (USD)50%Sustained tradability across market conditions; most stable signal available globally
Bid/ask spread (%)25%Direct per-fill execution cost at each grid level
Order book depth at ±2% (USD)20%Grid-relevant: can the book absorb fills across the active range
Estimated slippage for $10k order5%Confirming signal; confidence low for alt coins; low weight

Note on current data state: the “30-day median” volume is presently approximated by a single 24-hour snapshot from CoinGecko's global aggregation endpoint. The label in the scoring function is documented as a single-day proxy. As daily collection history accumulates, the formula input will be switched to a true 30-day rolling median without changing the scale or weights.

Volume normalization anchors (configurable, not hardcoded):

Band24h Volume ThresholdliquidityLevelthinLiquidity flag
Deep>= $50Mdeepfalse
Adequate$25M – $50Mgoodfalse
Moderate$5M – $25Mmoderatefalse
Thin$1M – $5Mlowtrue
Critical< $1Mvery_lowtrue + hard gate eligible

The $50M anchor (score = 100) replaces a prior $10M cap that was too generous for grid trading at any meaningful scale. $10M/day is thin; it distributes across 24 hours to roughly $417k/hour in global volume, and grid fills compete with all other market participants for that flow.

3.2.2 Grade Impact: Three Layers

Layer 1 — Soft input (5% weight, existing). The liquidity composite participates in the weighted grade calculation. A score of 0 contributes approximately -3 to -4 composite points — meaningful directional pressure but not decisive, as the performance and risk-adjusted components carry the majority of the weight.

Layer 2 — Grade cap for thin liquidity (new). If liquidityScore < 35 (approximately $5M/day equivalent in the composite) and the asset's composite score would otherwise yield a grade of A or B, the composite score is capped at 64 (B-). This prevents a strong backtest on an illiquid asset from producing a grade that implies execution quality the order book may not be able to support at the simulated scale.

The cap is a soft ceiling, not a filter. The asset remains in Discovery. The grade renders with a visible “Cap B-” disclosure label and a tooltip:

“Grade capped at B- due to thin liquidity. Strong backtest metrics were observed, but order book depth may not support consistent execution at the simulated scale. Grade reflects actual execution risk, not raw backtest performance.”

The B- ceiling is chosen deliberately over a harder cap (C+ or lower) because thin-liquidity assets are not uniformly bad: they may be legitimately tradable at small position sizes with adjusted grid configurations. B- is not a warning to avoid; it is a signal to trade smaller and expect imperfect fills.

Layer 3 — thinLiquidity flag (new). Independent of the grade cap. The flag fires when liquidityScore < 35, regardless of whether the cap was triggered (i.e., an already-low-grade asset that is also thin gets the flag but not the cap). It is non-blocking. Discovery cards display an amber “Thin liquidity — fills may slip; treat backtest return as an optimistic scenario reference, not a performance guarantee” badge. A tooltip provides the full grid-specific explanation.

Hard filter: deliberately absent. A hard filter removing thin-liquidity assets from Discovery entirely was considered and rejected as the default design. A thin-liquidity asset at small position size can be legitimately tradable. Removing it silently is paternalistic and inconsistent with the “transparency over suppression” principle. A hard gate is supported as a configurable option (LIQUIDITY_HARD_GATE_ENABLED, default off) for assets with confirmed very_low liquidity and high data confidence. It is not enabled at launch.

3.2.3 Data Sourcing

Global 24h volume is sourced from CoinGecko's /coins/{id} endpoint, using canonical CoinGecko slugs (e.g., “bitcoin”, “chainlink”) from CoinRoc's cryptocurrency_registry table. This is the correct approach: the slug-based endpoint returns aggregated global volume across all exchanges, not single-venue volume.

A prior implementation used the ticker lowercased as the endpoint ID (e.g., “btc”), which returned single-exchange (Binance.US) volume — approximately $2.38M for Bitcoin on the day of discovery, versus the correct global figure of approximately $18–19 billion. That defect was corrected in commit 23355158.

3.3 Findings

Post-fix verified state (2026-06-13, full 97-symbol catalog run):

AssetGlobal 24h VolumeliquidityScorethin flag
BTC$18.1B100false
ETH$7.0B100false
SOL$1.7B~99false
LINK$152M97false
AVAX$121M~95false
GRT$14klowtrue
EOS< $110klowtrue

Thin liquidity count: 32 of 97 assets flagged thinLiquidity = true. Review of the 32 confirms all are defensible:

  • 5 unmapped tickers (DOG, NFT, GRASS, SKY, VELO) — no CoinGecko slug in registry; fell back to exchange-reported volume, which is correctly small (exchange volume, not global)
  • SKY: $16 in confirmed global volume — genuinely not tradable
  • GRT, EOS, MKR: confirmed sub-$110k global volume
  • Remaining 24: small-cap and micro-cap assets (ZBCN, XCN, IOTA, FLOW, CFX, BTT, HNT, THETA, SNX, NEO, TWT, IMX, ENS, MANA, SAND, VET, RAY, LDO, STRK, WIF, NMR, TFUEL, TRAC, FCT) — all confirmed below $30M global volume, all correctly thin for grid trading at meaningful scale

No major asset is wrongly capped. BTC, ETH, SOL, LINK, AVAX, XRP, ADA, ARB, NEAR all score deep liquidity and carry no thin flag.

Pre-fix state for comparison: 91 of 93 graded assets had null liquidityScore before the fix. The 2 exceptions (BTC and ETH) had scores from a prior isolated collection run. The practical effect was that grades for all other 91 assets carried zero liquidity signal.

3.4 The Capital-Size Interaction (Acknowledged, Not Yet Implemented)

The grade-level liquidity score measures an asset's intrinsic tradability. It does not account for the user's specific grid configuration — particularly the interaction between initialCapital, gridLevels, and average order size.

A grid with $5,000 capital and 10 levels places average orders of $500. The same asset may be fully tradable for that configuration and practically untradable for a $50,000 / 20-level configuration that places average orders of $2,500. The same asset, different execution outcome.

The correct resolution is a deployment-time capital-aware warning, not a grade-level adjustment. The grade is an asset property (intrinsic liquidity quality). The capital warning is a session property (your specific configuration applied to this asset's liquidity). Implementation of the deployment-time warning is a deferred feature. For the current design, the thinLiquidity flag copy acknowledges the dimension: fills may slip; actual impact depends on your grid size.

4. Unifying Thesis: Execution-Aware Grading as a Design Principle

Both corrections reduce to the same principle: measure what the user can actually experience.

Blended-return grading measures a scenario the user does not experience if the RXI works correctly — a continuous exposure through periods when the strategy is deliberately inactive. Active-period grading measures what the user experiences when the grid is running.

Backtest-only grading implies an execution quality the market may not provide. Liquidity-aware grading caps the implied quality to what the order book can actually deliver, and discloses where that ceiling has been applied.

These are not competing frameworks. They address different dimensions of the same gap between what simulations show and what markets provide:

DimensionOld measureProblemCorrected measure
TimingBlended full-period returnPenalizes regime-appropriate pausesActive-period (RXI-gated) return
ExecutionFill at simulated priceAssumes infinite depth and no market impactLiquidity-capped grade + disclosure when depth is insufficient

Together, they define what Yodacom Research labels execution-aware grading: a grading methodology that is aware of when the strategy was running and whether the market can actually fill it.

The counterintuitive implication deserves stating plainly: a strong backtest can result in a lower grade under this system. An asset that backtests at A-level return on a thin order book does not receive an A — because the A implies execution quality that does not exist. The backtest becomes an optimistic scenario estimate under idealized fill conditions — not a characterization of what live trading will produce.

This is a cost, and it is worth paying. A grade that implies reliable execution on an order book that cannot deliver it is a misrepresentation. The honest grade is the capped one.

5. Limitations and Data Caveats

5.1 Single-Day Volume Proxy

The liquidityScore volume component currently uses a single 24-hour snapshot from CoinGecko as a proxy for sustained 30-day trading volume. A single day can be distorted by news events, exchange promotions, or wash trading. This limitation is documented in the scoring function and in the confidenceScore field. When daily collection history is sufficient (approximately 30 days), the input will be switched to a rolling 30-day median. Until then, the single-day proxy is used with explicit labeling.

5.2 Five Unmapped Tickers (Exchange-Volume Fallback)

Five symbols in the 97-asset catalog — DOG, NFT, GRASS, SKY, VELO — have no canonical CoinGecko slug in the cryptocurrency_registry table. For these assets, liquidityCollector.ts falls back to Binance.US exchange-reported volume. This is a conservative fallback: exchange volume is a fraction of global volume, so these assets will be correctly flagged as thin. However, the thin flag for these five assets reflects a data availability gap, not a confirmed thin market. Two are meaningfully different cases: if DOG (Dogecoin) or similar well-known assets were incorrectly unmapped, the thin flag would be a false positive. The 5 unmapped tickers should be resolved by populating the registry — this is a data maintenance task, not a methodology change.

5.3 Simulated vs. Tradable Gap (Flat-Slippage Assumption in Backtest)

CoinRoc's backtesting engine currently models slippage as a flat fee per trade, not as a volatility-conditional, order-size-dependent cost. Real-world slippage on thin order books is non-linear: it increases with order size, worsens during high-volatility periods (precisely when grid activity is highest), and can spike dramatically in illiquid markets. The thinLiquidity grade cap and badge communicate the direction of this risk (“treat return as an optimistic estimate under idealized fill conditions”) but the backtest number itself does not yet incorporate a realistic slippage model for alts. The cap is therefore a disclosure mechanism, not a quantitative correction of the backtest return.

This gap is known. Volatility-conditional slippage modeling is on the methodology roadmap. Until it is implemented, the backtest return on any thin-liquidity asset should be treated as an optimistic estimate under idealized fill conditions, not a performance guarantee — which is exactly what the flag copy states.

5.4 Active-Period Return Does Not Validate RXI Regime Accuracy

The switch to active-period return assumes that the RXI is correctly classifying market regimes — that paused periods genuinely represent market conditions where the grid strategy should not run. If the RXI has systematic classification errors (e.g., it pauses too long in mildly trending markets that a grid could profitably navigate), the active-period return would overstate the grid mechanism's quality by excluding windows where the RXI was wrong to step aside.

Validating RXI regime accuracy is a separate research question. The active-period metric is preferable to the blended metric under the assumption that the RXI is reasonably calibrated. The BTC case provides a partial validation of the metric's construction, though not of live RXI behavior: BTC's active and blended returns are identical (-40.2% both) because the retrospective classifier found no candles to exclude for BTC in Year 2 — not because a live grid-engagement gate ran the strategy on BTC throughout the period (this test's engagement setting was fixed, not live-gated; see §2.1).

5.5 Year 2 Forward Test as a Single Walk-Forward Fold

The grading system uses a Year 2 blind forward test as its primary performance evaluation window. This is a single walk-forward fold. A single out-of-sample period captures one market regime (or one sequence of regimes) and does not provide a confidence interval on the strategy's performance. A more rigorous validation would use multiple walk-forward folds or block-bootstrap confidence intervals on the active-period return. The current grading reflects a point estimate, not a range.

6. Conclusion

CoinRoc's grading system now applies two corrections that together constitute execution-aware grading: evaluation on the active-period window when the grid strategy is running, and a liquidity cap when the order book cannot deliver the execution quality implied by the backtest.

The empirical results are substantively meaningful. Applying the active-period filter restored approximately 27 of 37 wrongly-hidden assets to Discovery — including major assets like LINK, SOL, DOGE, BCH, and HBAR — while correctly preserving the hidden status of assets like BTC and SHIB that fail on the grid mechanism's own terms. Applying liquidity-aware grading flagged 32 of 97 assets as thin, capped none of the major assets, and disclosed the execution gap explicitly to users.

Both corrections share a design property that is worth naming explicitly: they surface more information rather than less. Assets are not hidden because they are hard to explain. The genuinely failing assets are shown, with their reason for exclusion. The thin-liquidity assets are shown, with their execution ceiling disclosed. The system becomes more honest, not less, about the limits of its own analysis.

That honesty is central to the grading system's purpose. A grade that overstates execution quality — whether by measuring the wrong performance window or by implying fills the market may not support — undermines the system's usefulness. Execution-aware grading is, at its core, the discipline of only grading what you can actually verify.


Appendix A: Registry and Implementation References

  • HAN-DISC-FILTER-01 — Discovery filter metric correction. Active-period return replaces blended return. Deployed 2026-06-12, commit d7f7ebd9, Railway deploy 35f1f0c1.
  • RES-LIQ-SCORE-01 — Liquidity-aware grading methodology. Composite score, B- cap, thinLiquidity flag. Deployed 2026-06-13, commits 23355158 + 76d72a65 (slug fix), 13099121 (Demo API key auth).
  • Source memos: han-discovery-filter-metric-2026-06-12.md, han-liquidity-score-methodology-2026-06-13.md

Disclaimer

This document is for informational and educational purposes only. It does not constitute investment advice, a recommendation, or an offer or solicitation to buy or sell any security, digital asset, or financial instrument. The information herein reflects the views of the authors as of the date of publication and is subject to change without notice.

All performance figures, return percentages, and grade outputs referenced in this document are derived from simulated, hypothetical backtesting conducted by Yodacom Research. These results were achieved by means of the retroactive application of a model to historical data with the benefit of hindsight. Hypothetical and simulated performance results have inherent limitations and do not represent actual trading. No representation is being made that any user will or is likely to achieve results similar to those shown. Simulated results do not account for real-world factors including but not limited to slippage, partial fills, order-book depth constraints, exchange downtime, custodial risk, or fee variations across configurations. All figures reflect the retail-binance-us fee tier, Year 2 blind forward test window, under a specific grid strategy configuration. Results will differ materially at other fee tiers, capital sizes, or grid configurations.

Past simulated performance is not indicative of, and is not a guarantee of, future results.

Digital assets, including cryptocurrencies, are highly volatile and speculative. They may experience rapid and substantial price declines, including a total loss of value. Regulatory treatment of digital assets is evolving and uncertain. Digital asset markets are subject to operational, custodial, and cybersecurity risks.

CoinRoc is a strategy analysis and simulation tool. It is not a registered investment advisor. CoinRoc's asset grades are outputs of a quantitative grading methodology applied to simulated historical data; they are not investment recommendations, suitability assessments, or endorsements of any specific asset. Readers should consult their own financial, legal, and tax advisors before making any investment decision.

Information derived from third-party sources (including CoinGecko, Binance.US, and other exchange data providers) is believed to be reliable but has not been independently verified. No representation is made as to its accuracy or completeness.

This paper covers Sections 1–6 of the source research report. A follow-up publication (Sections 7–10, the favorable-conditions and rating-reliability affirmative case) is planned.


RES-EXEC-GRADING-01 — Han Kessel, Trading/Algorithm Specialist, Yodacom Research. Article adaptation: Lando, Senior Content Writer & Strategist.