qaudit
Independent audit of trading systems — deterministic engine 1.0.0

qaudit audit report

martingale · Audit complet
Verdict
NO-GO
blocking1major1minor0info6
A barrier value falls inside its indecision band: human review required (gate E3).
Period covered
2021-01-05 → 2022-04-03
Usable / supplied trades
600 / 600
Initial balance
10 000.00 USD
Number of trials used (N)
10

Header

Audited systemmartingale
Engine version1.0.0
Method version1.0
Seed0
SHA-256 fingerprint of the dataae4badd1047e27534d61db5914dd8b7232470df67bdc4663c85783394ca19ef5
Monte Carlo iterations10 000
Number of trials used (N)10
Period covered2021-01-05T06:21:46 → 2022-04-03T23:51:20
Usable / supplied trades600 / 600
CurrencyUSD
Initial balance10 000.00
ServiceAudit complet (audit_complet)

Verdict

Verdict: NO-GO.

Findings: 1 blocking, 1 major, 0 minor, 6 informational.

A barrier value falls inside its indecision band: human review required (gate E3).

In plain words: what this report says

Red light: 1 blocking flaw(s) were found, 1 test(s) could not be run for lack of data, 3 test(s) sit in their uncertainty zone and 1 major flaw(s) were found. The results provided do not allow the claim that this system has a real edge: what was earned can be explained by chance, by a few exceptional trades or by uncontrolled risk. This is not a forecast of future losses; it is the absence of proof.

The verdict covers only what was given to the auditor: the closed trades in the file, over the period covered. It rests on no human judgement and no overall score: every test has a threshold fixed in advance by the method, and the verdict follows mechanically from those thresholds. The same file, audited again tomorrow with the same version, yields exactly the same report.

The five questions put to the results, and the numeric answer for this file:

indecision band
Is chance ruled out?

When several versions of a strategy are tried before one is kept, the best one always looks good, even if none has an edge. This test computes the probability that the performance is real once that effect is corrected, for 10 declared variant(s): 54.0 %. Pass threshold: 50.0 %. Result in the uncertainty zone around the threshold: the method then calls for a human review rather than an automatic decision.

indecision band
And with bad luck?

The profit factor is the total won divided by the total lost (1.00 = break-even). The same trades were replayed 10 000 times in a different order, in blocks, to see what the same strategy would yield with less luck: in the 5 % least favourable scenarios the profit factor falls to 1.027. Threshold: 1.00 — below it, the strategy loses money in those scenarios. Result in the uncertainty zone around the threshold: the method then calls for a human review rather than an automatic decision.

passed
Do the losses come clustered?

The drawdown is the largest fall between a peak and the trough that follows it. The observed one (1 155.00) is larger than in 88.0 % of random reorderings of the same trades. A very low value (under 5 %) would signal a curve too smooth to be honest; a very high value means the losses came clustered, which is harder to live through than the final result suggests. Test passed.

indecision band
Would a system with no edge do as well?

10 000 systems with no edge at all, but winning and losing amounts of the same size as this one, were simulated; 4.8 % of them did as well or better. Threshold: 5.0 % — above it, this system cannot be told apart from a system with no edge. Result in the uncertainty zone around the threshold: the method then calls for a human review rather than an automatic decision.

not evaluated
Does it hold outside the periods it was tuned on?

A strategy tuned on one period tends to shine there and disappoint afterwards. This test compares its performance on periods not used for tuning. It could not be run: it requires one set of results per parameter set tested, which was not provided. Not measurable with the data provided.

blocking
Stake increased after losses

Martingale: after a loss, volume is multiplied by ≥ 1.5 in 96% of cases (after a win: 1%), over 135 post-loss trades. In plain words: after a loss, position size is increased to “win it back”. This yields long runs of small gains and then a very heavy loss on the day the losing streak lasts too long. The final balance does not show it until that day comes.

major
Trades without a protective stop

No stop: 100% of trades have no stop-loss. In plain words: part of the positions had no automatic exit level in case of loss. The possible loss on those positions was therefore not bounded in advance.

A red light is not fixed in the report: it is fixed in the strategy or in the data, then verified on a new history. The points above say exactly which test failed and by how much, so that the discussion rests on facts.

This report states facts; it recommends no settings and predicts nothing.

Key indicators

Net profit
2 050.00
Profit factor
1.260
Hit rate
77.5 %
Average win / average loss
0.366
Expectancy per trade
3.42
Sharpe per trade
0.069
Annualised Sharpe (measured frequency)
1.52
Trades per year (measured)
483.0
Maximum drawdown
1 155.00
Maximum drawdown (% of equity peak)
9.0 %
Compound annual growth rate
16.2 %
Longest losing streak
4

Decision barriers

The verdict follows mechanically from the barriers below; no composite score.

BarrierValueNO-GO thresholdIndecision bandStatus
Deflated Sharpe ratio (DSR)0.540< 0.500[0.450 ; 0.550]indecision band
Profit factor, 5th percentile of the block bootstrap1.027< 1.000[0.950 ; 1.050]indecision band
Percentile of the observed drawdown among order permutations87.970< 5.000[3.000 ; 8.000]passed
p-value against the no-edge null0.048≥ 0.050[0.030 ; 0.080]indecision band
Out-of-sample walk-forward efficiencyn/a< 0.400[0.350 ; 0.500]not evaluated

Critical findings

blocking
martingale

Martingale: after a loss, volume is multiplied by ≥ 1.5 in 96% of cases (after a win: 1%), over 135 post-loss trades.

major
no_stop

No stop: 100% of trades have no stop-loss.

All findings

blocking
martingale

Martingale: after a loss, volume is multiplied by ≥ 1.5 in 96% of cases (after a win: 1%), over 135 post-loss trades.

major
no_stop

No stop: 100% of trades have no stop-loss.

info
dsr_lo_variance

Variance of Sharpe ratios across variants unknown: Lo approximation (V = 0.0017) for N = 10 trials. Conservative correction: the true DSR is probably lower.

info
execution_realism_skipped

Detector “execution_realism” not run: no price series provided.

info
lookahead_skipped

Detector “lookahead” not run: no price series provided.

info
missing_optional

Fields absent from the source: commission, swap. Analyses that depend on them are disabled and reported as such.

info
null_empirical

The “no-edge” null keeps the empirical distributions of gains and losses and only neutralises their frequency (p₀ = 0.7321). It answers: “is the observed hit rate explainable by luck, given this gain/loss profile?” — it is not an efficient-market null.

info
stop_geometry_skipped

Detector “stop_geometry” not run: no price series provided.

Probabilistic and deflated Sharpe

PSR: probability that the true Sharpe is positive, corrected for skewness and fat tails. DSR: the same probability evaluated against the best Sharpe expected by chance after N trials.

Probabilistic Sharpe ratio (PSR)0.9315
Deflated Sharpe ratio (DSR)0.5401
Expected maximum Sharpe under the null (SR₀)0.0644
Number of trials used (N)10
Variance of Sharpe ratios across variants (V)0.001671
Source of VLo approximation (conservative: the true DSR is probably lower)

Sensitivity to the number of trials

This system stops being significant (DSR < 0.50) beyond 12 tested variants.

0.250.751.000.931N = 10.540N = 100.303N = 500.229N = 1000.144N = 3000.084N = 1 000DSR 0.50
N trialsDSR
10.9315
100.5401
500.3026
1000.2294
3000.1441
1 0000.0840

Resampling

Three simulations, three questions: the bootstrap measures how unlucky the same edge can get; the permutation tests whether performance owes to trade order; the null counts edge-less systems that would do as well.

The “no-edge” null keeps the empirical distributions of gains and losses and only neutralises their frequency (p₀ = 0.7321). It answers: “is the observed hit rate explainable by luck, given this gain/loss profile?” — it is not an efficient-market null.

Bootstrap methodstationary blocks (Politis-Romano), automatic length
Mean block length15.21
Profit factor p05 / p50 / p951.027 / 1.277 / 1.593
Net profit p05 / p50 / p95280.00 / 2 145.00 / 3 535.00
Drawdown p50 / p95 / p99805.00 / 1 625.00 / 2 140.00
Observed drawdown1 155.00
Percentile of the observed drawdown among permutations88.0
Permutation drawdown p50 / p95875.00 / 1 300.00
Equilibrium hit rate p₀73.2 %
p-value (net profit ≥ observed)0.0479
Net profit of null systems p50 / p9510.00 / 2 025.00

Regimes and periods

Classifier used: volatility terciles (rolling standard deviation of P&L, no prices); unclassified trades: 2.

RegimeTradesNet profitPFHit rateShare of net
low volatility218975.001.50880.3 %47.6 %
medium volatility188575.001.23675.5 %28.0 %
high volatility192470.001.13476.0 %22.9 %
QuarterTradesNet profitPF
2021-Q1118895.001.973
2021-Q2120690.001.575
2021-Q3116720.001.667
2021-Q4128-585.000.805
2022-Q1114320.001.200
2022-Q2410.001.125

Drawdown markers

Statistical drawdown markers from the block bootstrap, to compare with the live drawdown. They are not strategy settings.

Observed maximum drawdown1 155.00
Bootstrap drawdown, 95th percentile1 625.00
Bootstrap drawdown, 99th percentile2 140.00

Conditions for production

Scope and limits

Footer

qaudit 1.0.0 — method 1.0 — schema 1.0 — seed 0 — fingerprint ae4badd1047e27534d61db5914dd8b7232470df67bdc4663c85783394ca19ef5 — service audit_complet.

Reproducible: same inputs + same version + same seed = same report, byte for byte.