QuantProp. Analyze a trade file ↗
stockback / Verdict record

Verdict — EXP-003 / bnf_daily_c4_baseline

Why the execution contract, not the C4 hypothesis, was rejected: unreachable targets, cost dominance and signal attrition.

Original record: 2026-08-20 · Migrated: 2026-10-27 · Translated from Korean: 2026-10-27
A historical record, not rerun in this migration.

The figures, hypotheses and verdicts of the time are preserved. A past positive result or candidate mention does not mean validated profitability today or a live-trading recommendation. Validation periods that were already used are not treated as new independent validation.

This is an English translation of a preserved Korean original. It describes conditions at the time of writing, not current provider specifications, costs or regulations.

Verdict — EXP-003 / bnf_daily_c4_baseline

**Verdict: rejected (a rejection of the current experiment design, not of the strategy hypothesis)**

Date: 2026-08-20 · Evidence experiment: EXP-003 · Code: 37ec9e0 + uncommitted changes


1. What is rejected

What is rejected is not the hypothesis "does C4 (a MACD histogram rebound below the 0 line) have an edge". What is rejected is the execution contract currently written in strategies/bnf_daily/strategy.toml.

This distinction matters because, as section 3 below shows, the current design cannot test the hypothesis. The -94.70% from an experiment without power is not evidence that "C4 is bad" but evidence that "this setup cannot measure it".

2. Observations (2005-01-03 ~ 2026-08-11, single symbol A005930, 590 trades)

ItemValue
Strategy final capital multiple0.053x (-94.70%)
Buy-and-hold final capital multiple26.39x (+2539.09%)
Expected gross return per trade (before costs)-0.06%
Round-trip cost+0.40%
Expected net return per trade-0.46%
Target reached18 / 590 (3.1%)
Entry conversion rate vs signals generated590 / 1,196 (49.3%)

3. Reasons for rejection

3.1 The target is set to be unreachable (TARGET_UNREACHABLE)

The average stop distance is 3.56% and reward_to_risk = 3.0, so the target averages +10.68% above the entry price. But max_holding_days = 3, so this move is required within 3 trading days. The actual hit rate is 3.1%.

So what this backtest measured is not a "3R take-profit strategy" but "a 3-day hold then time-exit strategy". The strategy declared in strategy.toml differs from the strategy actually executed. Results in this state cannot be grounds for validating the strategy contract.

3.2 Costs overwhelm the signal (COST_DOMINATED)

The expected gross return per trade of -0.06% is statistically indistinguishable from 0. The round-trip cost, by contrast, is 0.40%, 6.5x that. The final -94.70% is closer to a result of cost attrition of 590 × 0.40% than of the signal's direction.

Under these conditions, "C4 has / does not have an edge" cannot be judged either way. It must be measured again after lengthening the holding period or raising the signal threshold so that the expected move per trade is several times the cost.

3.3 Half the signals disappear because of the position constraint (SIGNAL_ATTRITION)

Of 1,196 generated signals, 590 (49.3%) were discarded because "a position is already held". In other words, more than half of the measured performance is determined not by signal quality but by a capital allocation rule, the single-position constraint. With the two effects mixed, it is impossible to tell whether signal improvement or allocation improvement is needed.

3.4 Parameter search does not rescue it

All 25 combinations of holding period {2,3,5,10,20} × target {1,1.5,2,3,5}R are negative. Even the best combination (10 days × 5R) is -48.4%, overwhelmingly behind buy-and-hold. This means the problem is not a particular parameter but at the design level, and it is also grounds that any attempt to revive this experiment by parameter optimization would inevitably be overfitting.

4. What this verdict does not say

  • It does not mean the C4 condition is worthless. Section 3.2 above blocks the test itself.
  • It is not a verdict on the full BNF strategy. C1~C3, sector disparity, regime control and a multi-symbol universe are all missing.
  • It is a single-symbol (A005930) result, so the external validity of every figure is low. 21 years of one symbol are not 590 independent samples but one correlated path.

5. Next actions (in priority order)

  1. Signal size relative to costs first. Lengthen the holding period (e.g. 10~20 trading days) or tighten the signal threshold so that the expected move per trade is at least 3x the cost, then re-measure. Any return comparison before that is entirely a measurement of costs.
  2. Move the consistency check of reward_to_risk and max_holding_days to the strategy contract registration stage. Validate in advance that average stop distance × R is reachable within the holding period in the observed distribution for that symbol.
  3. Measure signal quality and position allocation separately. Register a version allowing concurrent positions as a separate experiment to decompose the contribution of the 49.3% attrition.
  4. Secure a multi-symbol universe. A single-symbol conclusion, in either direction, is not grounds for adoption. The symbol master and date-based universe of D-008 are prerequisites.
  5. Walk-forward splits. A single full-period statistic hides regime dependence. The yearly breakdown already reveals regime differences: 2020 +12.21%, 2022 -38.18%.

Outputs

  • Report: reports/experiments/EXP-003-bnf_daily_c4_baseline.md / .html
  • Trade ledger: reports/ledgers/EXP-003-bnf_daily_c4_baseline-trades.csv
  • Signal ledger: reports/ledgers/EXP-003-bnf_daily_c4_baseline-signals.csv

Source and migration evidence

Source: reports/verdicts/EXP-003-bnf_daily_c4_baseline.md

Original SHA-256: cbbfd54281d57a839e77a1cfe3cef088d233d1f4eb9cb611f986a4b1392517af

Raw data and account information are not part of the public package. The original results do not replace statistical or scientific revalidation. The English text is a translation; numbers, tables and charts are carried over unchanged.