methodology 한국어
Methodology — how these numbers are produced
This page documents execution and aggregation assumptions. Signal-generation logic (indicator combinations, parameters) is private and not covered here — what we publish is how results are recorded and aggregated.
1. Simulated fill model (measured from engine code)
- Entry price = signal reference price × 1.001 (slippage assumption). Exit price = candle close at exit × 0.999. Both are synthetic fills and no tick-size rounding is applied — which is why Korean symbols can show prices that don't align with KRX tick sizes (e.g. ₩45,095).
- Fees & taxes = 0: the current model does not include commissions or transaction taxes. Real-money results would be lower — read these numbers conservatively.
- Position sizing: trades are recorded with a per-trade sizing multiplier (0.25–2.0) and no capital pool. Equity curves therefore use a synthetic fixed-book model (400 slots) — see the model section on the all-time track record.
- Exit evaluation: judged on finalized candle closes. Timestamps are candle-bar times, not wall-clock — rows land a few minutes late (crypto measured: median 9.4 min, p95 16.2 min).
- Since 2026-07-15: entries carry live-price validation (deviation guard + signal-freshness gate). Defects from the period before these guards, and their corrections, are disclosed at corrections.
2. Data boundaries — what each post counts
- Closed trades only. Open positions are never included in any statistic.
- Daily journals cover the 24 hours before publication. The weekly track record uses a T+1 boundary (through the day before publication), 7-day window.
- As-of snapshot principle: each post's numbers are a snapshot of the ledger at publication time. The ledger is INSERT-only (no update path), but because timestamps are candle-bar times rows arrive late — and crypto trades 24/7, so same-day exits keep accruing until midnight after the 21:00 KST publication. Re-querying later can therefore show small upward drift (measured: ~34% of journals, +1–5%, additions only). That is recording latency, not correction.
- The all-time record counts only the public-record period (since 2026-06-16, the start of contemporaneous publication) — only the period with same-day public attestation qualifies as a verified track record. See the boundary section on the all-time page.
3. Reading win rates — a low win rate is not a bad system per se
Expectancy is win_rate × avg_win − (1 − win_rate) × avg_loss. A 36% win rate with
a 2.6 win/loss ratio still yields positive expectancy; a high win rate with a poor ratio can
still lose money cumulatively. That is why this blog always publishes win rate, win/loss ratio
and profit factor (PF) together — PF<1 means a cumulative-loss period, and we show
that as-is. Current figures:
all-time track record.
4. Paper vs live separation
All current figures are paper trading. If live accounts are added later, paper and live records will be presented as separate statistics and separate charts, never merged into one curve — mixing simulated and real returns contaminates a track record (GIPS-family principle). This rule is also enforced at the data-schema level (account-type filter is a required argument in the serving layer).
5. Verification paths
- MCP re-query: connect OneQAZ MCP
to an AI and query the same ledger directly (
get_trade_history,get_performance_metrics, …). - Full CSV: every daily journal links a download of all closed trades in its window.
- Ledger hash chain: the prediction ledger is sealed by a daily SHA-256 chain with the latest anchor published in weekly track records — post-hoc edits break the chain.
- Corrections policy: errors are disclosed with reasons at corrections; original URLs never change.
Disclaimer: OneQAZ figures are paper-trading research, not investment advice. Past simulated performance does not predict future real-money returns.