Audit Report · Engine v9

15 setups.
Receipts attached.

Every trade the engine would have taken — 3,240 of them across 96 IDX tickers over 3 years — replayed bar-by-bar. Then re-tested on 24 months of out-of-sample data the engine never saw during tuning. No cherry-picked windows. No survivorship-flattering selection. The same 15 setups that fire signals in your inbox today.

0
96 stocks · 3 yrs
Trades Audited
0.0%
Wins, not promises
Aggregate Winrate
0/ 0
Held up on unseen data
Walkforward-Proven
+0%
BUVA · 3 yr return
Best Stock

Engine v9 · Generated 2026-05-11 WIB · Educational only · Not investment advice

Section 01

How we tested

Methodology you can audit — not a black box.

96 unique stocks. Every trade counted once.Watchlist spans LQ45 + bandar names; overlapping tickers deduplicated. The math on this page is the math we’d quote in court.
Engine state & test framework

Setups doing the work

  • 15 battle-tested detectors. Started with 20. Cut 5 that failed OOS. Added 5 that survived independent validation.
  • 3-phase chandelier trail. SL → breakeven after TP1, then trails 2×ATR below running high.
  • Per-setup MAX_HOLD. Each detector has a hold-window tuned to its character (Stage2-Breakout 90d, Pullback-Uptrend 15d, etc).
  • Production-identical replay. Weekly MTF resample + per-bar IHSG regime simulation. Backtest sees nothing the live engine doesn’t.
  • Universal SL/TP guards. SL must sit below entry, TP2 must exceed TP1, fallback 2.5R on invalid swing levels.

How we know it’s not curve-fitting

  • Plain backtest. Every stock, every bar, 3 years.
  • Walkforward. 4 disjoint 6-month windows after 12-month warmup. Trades filtered by entry date — no warmup leakage.
  • Data source. yfinance daily snapshots, 2023-05 → 2026-04. Reproducible.
Section 02

What each setup actually does

15 setups, ranked by trade count. Workhorses top, specialists tail.

Per-setup expectancy15 setups · expectancy %
0%10%20%30%Pullback-Uptrend: +5.8%+5.8Pullback-UptrendEMA200-Bounce: +8.3%+8.3EMA200-BouncePocket-Pivot: +2.7%+2.7Pocket-PivotIchimoku-Break: +7.2%+7.2Ichimoku-BreakWyckoff-Spring: +5.5%+5.5Wyckoff-SpringAccumulation-Zone: +7.2%+7.2Accumulation-ZoneInside-Bar-Break: +5.4%+5.4Inside-Bar-BreakVCP: +3.6%+3.6VCPStage2-Breakout: +3.9%+3.9Stage2-BreakoutDonchian-Break: +6.2%+6.2Donchian-BreakGolden-Cross: +7.5%+7.5Golden-Cross52W-High-Break: +7.5%+7.552W-High-BreakHL-Reversal: +11.4%+11.4HL-ReversalHigh-Tight-Flag: +21.1%+21.1High-Tight-FlagWeakness-Recovery: +3.6%+3.6Weakness-Recovery
Per-setup win rate15 setups · win rate %
0%20%40%60%80%Pullback-Uptrend: 53.0%53.0Pullback-UptrendEMA200-Bounce: 53.5%53.5EMA200-BouncePocket-Pivot: 51.2%51.2Pocket-PivotIchimoku-Break: 60.7%60.7Ichimoku-BreakWyckoff-Spring: 45.2%45.2Wyckoff-SpringAccumulation-Zone: 62.5%62.5Accumulation-ZoneInside-Bar-Break: 55.3%55.3Inside-Bar-BreakVCP: 51.1%51.1VCPStage2-Breakout: 59.7%59.7Stage2-BreakoutDonchian-Break: 61.2%61.2Donchian-BreakGolden-Cross: 44.4%44.4Golden-Cross52W-High-Break: 51.1%51.152W-High-BreakHL-Reversal: 45.8%45.8HL-ReversalHigh-Tight-Flag: 43.8%43.8High-Tight-FlagWeakness-Recovery: 41.6%41.6Weakness-Recovery
SetupNWR%AvgWAvgLExp%PF
Pullback-Uptrend88753.0+15.39-5.03+5.803.45
EMA200-Bounce60753.5+19.67-4.74+8.334.78
Pocket-Pivot47751.2+11.45-6.43+2.721.87
Ichimoku-Break23460.7+14.89-4.63+7.214.96
Wyckoff-Spring22845.2+16.04-3.14+5.534.21
Accumulation-Zone17662.5+14.00-4.09+7.225.71
Inside-Bar-Break16855.3+14.08-5.42+5.373.22
VCP14351.1+11.23-4.42+3.582.66
Stage2-Breakout12959.7+9.10-3.88+3.863.47
Donchian-Break4961.2+14.21-6.42+6.213.49
Golden-Cross4544.4+22.62-4.57+7.523.96
52W-High-Break4551.1+20.08-5.73+7.473.67
HL-Reversal2445.8+26.34-1.23+11.4118.18
High-Tight-Flag1643.8+59.07-8.46+21.095.43
Weakness-Recovery1241.6+10.66-1.39+3.635.48
50% winrate is fine — actually ideal.
Expectancy = AvgWin × WR − AvgLoss × (1−WR)
Avg winner runs 3–5× avg loser. Lose 2 of 3 and still compound.
Section 03

Every ticker, every trade

All 96 stocks ranked by 3y return. Top: BUVA +5,048%. Power-law spread is the trend-following fingerprint — most upside in a few trends, no bleed on the rest.

Top 10 performers3-year total return % — combined watchlist
01BUVA
+5,048%
02DEWA
+3,021%
03BULL
+2,033%
04MINA
+1,768%
05BNBR
+1,699%
06HRTA
+1,564%
07VKTR
+1,411%
08ENRG
+1,321%
09TAPG
+1,198%
10PTRO
+1,195%
CodeNWR%Exp%PFTotRet% (3y)MaxDD%HoldTop Setup
BUVA3961.5+14.676.84+5048-24.49.9Pullback-Uptrend
DEWA3262.5+13.347.96+3021-26.412.8Pullback-Uptrend
BULL3852.6+10.773.97+2033-27.59.1Pullback-Uptrend
MINA2462.5+18.064.88+1768-39.610.7Pullback-Uptrend
BNBR1266.7+36.9126.10+1699-8.78.2Pullback-Uptrend
HRTA2965.5+12.287.08+1564-16.412.5Pullback-Uptrend
VKTR2755.6+13.556.33+1411-34.010.4Wyckoff-Spring
ENRG3265.6+10.696.21+1321-17.88.7Pullback-Uptrend
TAPG2576.0+11.5712.79+1198-9.217.0Pullback-Uptrend
PTRO3450.0+10.034.31+1195-37.811.1Pullback-Uptrend
110of 96
Section 04

The hardest test we run

Tuned on month 0–12, tested on 4 independent unseen 6-month windows. CONSISTENT = edge survives all 4. The line between real edge and lucky window.

0
Consistent
0
Volatile
0
Negative
0
Setups Tested
SetupNFoldsWR%Exp%PFWR±Exp±Verdict
Pullback-Uptrend783453.8+5.693.49±6.3±1.36CONSISTENT
EMA200-Bounce532457.5+7.274.63±11.9±3.26CONSISTENT
Pocket-Pivot404450.3+1.691.54±13.0±1.69VOLATILE
Wyckoff-Spring216452.3+5.815.21±17.8±2.59CONSISTENT
Ichimoku-Break209456.0+6.554.40±20.2±4.93CONSISTENT
Accumulation-Zone169462.2+5.854.78±14.1±3.07CONSISTENT
Inside-Bar-Break154454.5+4.112.67±17.5±5.79VOLATILE
VCP125448.0+4.453.10±13.2±4.13VOLATILE
Stage2-Breakout102459.8+4.423.59±20.2±5.30VOLATILE
Golden-Cross61462.3+7.056.59±4.6±4.01CONSISTENT
Donchian-Break44468.2+7.144.47±23.6±11.97VOLATILE
52W-High-Break39451.3+5.803.12±43.5±8.79VOLATILE
HL-Reversal18461.1+7.50±14.5±9.91CONSISTENT
High-Tight-Flag15460.0+26.1611.47±40.8±111.24VOLATILE
Weakness-Recovery12441.6+3.576.16±57.7±11.03VOLATILE
VOLATILE ≠ broken. Positive expectancy across all 4 windows, just lumpier. Sized smaller in production. Honest labeling so you know before the trade, not after.
Section 05

What the numbers don’t tell you

Anyone who hides limitations is selling you something. Here’s ours.

Gross of feesReal round-trip ~0.30%. Shave 5–10% off expectancy.
~15 min data lagyfinance delay. Live entry can differ 1–2% on fast movers.
Recent IPOs excludedCDIA, FORE, etc. — not enough warmup yet.
Survivorship biasDelisted 2023–2026 names absent from test set.
Per-trade, not portfolioNo correlation, sizing, or concurrent-position modeling.
One IDX cycle3 years validates short-term, not multi-cycle (10y+).
v9 snapshotMatches engine in production. Re-runs on every update.
Full notes on each caveat
  • Gross, not net of fees. Real broker fees run ~0.15% each way (~0.30% round-trip). The /portfolio tracker accounts for them in live tracking; the backtest math here doesn’t. Expectancy on smaller-edge setups drops once fees are in.
  • yfinance has ~15 min lag. Live entries can differ from backtest entries by 1–2% on fast movers.
  • Recent IPOs excluded from walkforward. Tickers like CDIA and FORE don’t have enough warmup history yet. They’ll join the OOS pool once they do.
  • Survivorship bias. The watchlist is what exists today. Stocks delisted between 2023–2026 aren’t in the test set.
  • Per-stock, not portfolio-level. No correlation modeling, no max concurrent positions, no capital allocation logic. Your account return depends on your sizing decisions.
  • One IDX cycle. 3 years is enough to validate short-term edge. Not enough to claim multi-cycle (10y+) robustness.
  • Engine v9 snapshot. Numbers match the engine version currently in production. Every engine update triggers a full re-run via python scripts/generate_backtest_md.py.
Educational purpose only. Not investment advice.Past performance does not guarantee future results. Size positions you can afford to lose. Never trade a signal you don’t understand.
Section 06

Questions you should be asking

Skepticism is a feature. 7 questions, honest answers.

How do you know this isn’t curve-fitting?

We tune the engine on the first 12 months of data, then test it on 4 independent 6-month windows it has never seen. A setup only earns the CONSISTENT label if its edge holds steady across all 4 — fold-to-fold variance smaller than mean expectancy.

Curve-fitted edges fail this test. They look great on the data they were tuned on, then collapse the moment the regime shifts. 7 of our 15 setups passed. The other 8 are still positive in aggregate but lumpy across windows — we keep them running with smaller position sizing and call them VOLATILE in §4. No hiding.

Why only 7 of 15 setups CONSISTENT?

No. VOLATILE means “positive expectancy overall, but lumpy fold-to-fold” — the edge is real, it just doesn’t arrive on a predictable schedule. Look at the walkforward table: every VOLATILE setup still has positive aggregate expectancy and PF > 1.

We sized these setups smaller in production and treat their signals as opportunistic rather than core. The strict labeling exists so you know what you’re buying beforethe trade, not after. Most retail signal services would call these “our top performers.” We call them what they are.

What about bear markets or major regime changes?

The engine reads IHSG regime on every bar and adjusts setup weights and quality thresholds accordingly. In the tested window (2023–2026) IHSG had two distinct drawdown phases (Q3 2023, Q1 2024) — signal frequency dropped automatically during both.

Honest take: trend-following systems underperform in chop.You should expect lower returns during prolonged sideways or bear markets. The system shouldn’t blow up, but it won’t print money in a 70%-of-the-year sideways grind. We have 3 years of data — not enough to claim multi-cycle robustness. We’d be lying if we did.

Will my real account match these numbers?

No, and you shouldn’t expect them to.The backtest is gross of fees (real round-trip is ~0.30%), assumes you take every signal (you won’t — you’ll skip some, miss some, hesitate on others), and doesn’t model partial fills or slippage.

Realistic adjustment: shave ~5–10% off per-setup expectancyfor fees + slippage. The workhorse setups (Pullback-Uptrend, EMA200-Bounce, Ichimoku-Break, etc.) still print after that haircut. The marginal setups don’t. That’s your filter.

What’s the worst case I should plan for?

Per-trade worst case: a single position going against entry hard enough to hit MaxDD before SL triggers. We’ve seen −57% on LEADas the deepest single-position drawdown. That’s the depth, not the loss — SL caught it eventually.

Portfolio-level: depends entirely on your sizing. Size every signal so a single −50% per-position drawdown wouldn’t break you.The engine doesn’t model your portfolio for you — that’s your judgment call, and the most important one.

Can I try the signals before subscribing?

Yes. The free plan delivers 3 signals/day from the same engine and the same 15 setups you just audited. No credit card. No trial period. No expiry.

Paper-trade them for as long as you want before deciding whether to upgrade. The expectancy on these signals is in §2 of this page — you already know what to expect before you start.

What if my position hits ARA / ARB?

The engine sees end-of-day bars. If a stock hits ARB (auto-reject bawah) mid-session, you physically can’t exit at SL until next session — that’s an IDX rule, not an engine choice. The backtest mirrors this: it executes at EOD only.

In other words, the backtest already accounts for the ARA/ARB constraint by default. The number you see in §3 includes trades where SL was breached intraday but execution happened at the next-day open. It’s not a hidden risk — it’s baked into the math.

Section 07

Two signals we shipped

Same engine, two delivery modes — the auto-broadcast that lands in subscribers’ DMs, and the manual /signal query a user types in chat.

Case 1Auto-broadcast · 08 May 09:00 WIB · MAPI→ Same-session TP1 hit +12.36%
Alert · 09:00 WIBTelegram
Swing Alert — MAPI
08 May 2026 09:00 WIB
Pullback-Uptrend|Quality: 65/100
Harga: Rp 1.295
  • Entry: Rp 1.295
  • SL: Rp 1.217(-6.02%)
  • TP1: Rp 1.451(+12.0%)
  • R:R 1:2.0
  • Holding: 8–25 hari
Bukan rekomendasi investasi. DYOR. Gunakan /swing untuk analisis lengkap.
Result · close 08 MayStockbit
Stockbit chart of MAPI on 08 May 2026 — intraday low 1,295 climbing to 1,455 (+12.36%)
09:00 WIBEngine fires Pullback-Uptrend signal at Rp 1.295.
IntradayMAPI climbs to session high Rp 1.455 — TP1 (Rp 1.451) breached.
EOD 08 MayClose Rp 1.455 · session return +12.36% vs alert entry. R:R 1:2 target achieved on Day 1.
Case 2Manual /signal · 08 May 13:23 WIB · MINA→ TP1 breached on Day 3 · high Rp 390
/signal · 13:23 WIBTelegram
MINASTRONG BUY
Rp 342📉 -14.93%
79.0/100·Sangat Kuat·9/12 konfluensi

Trend✅ EMA200✅ EMA50✅ Supertrend
MomentumRSI 51.6·MACD ·Vol 1.6x
Multi-TFD ·W ·4H ·mixed

Level Trading
  • Entry Rp 342
  • TP1 Rp 384(+12.28%)
  • TP2 Rp 448(+30.99%)
  • SL Rp 321(-6.14%)
  • R:R 1:2.0

Golden Cross Fresh87/100(Tinggi)·12–37 hari
Volatilitas tinggi (ATR/price 9.5%) — perlebar SL, perkecil size
Counter-trend: IHSG dalam Bear Market
Bukan rekomendasi investasi. DYOR.
Result · 11 MayStockbit
Stockbit chart of MINA on 11 May 2026 — intraday low 342 climbing to high 390, closing 380 (+11.11%)
08 May 13:23User types /signal MINA. Engine returns STRONG BUY at Rp 342, confluence 79/100, setup Golden Cross Fresh Q87 — flagged with high-volatility + counter-trend warnings.
11 MayMINA reaches intraday high Rp 390 — TP1 (Rp 384) breached by 6 points. Heading toward TP2 (Rp 448).
Day 3 closeClose Rp 380 · day return +11.11%, ~+11% on signal entry. TP1 achieved in 3 trading days vs forecast 12–37.

Two signals, two delivery modes — same engine, same Entry/SL/TP discipline. Notice the MINA query also surfaced two honest risk warnings before the trade: high volatility (ATR 9.5%) and counter-trend (IHSG Bear). The engine labels risk transparently, before you click buy.

Same engine. Same setups. Live.

The 15 setups above are firing right now.

Every time one triggers on an IDX ticker, you get the alert — with entry, stop, and take-profit already calculated. Same logic, same engine, same numbers you just audited. Three signals per day on the free plan. No credit card, no trial period, no catch.