Garuda Alpha — Operational Dashboard

IDX momentum · canonical config momtrend_quarterly_loose · generated 2026-08-04 19:27 · factor as-of 2026-08-03
+17.9%
CAGR (net)
0.94
Sharpe
-15.4%
Max DD
1.90
Profit Factor
6/8
Gates passing
5/5
Data validation
12
Active long picks
76
Investable today

Headline equity curve — net of cost, survivorship-safe, fixed params 2018–2026

Garuda canonical 3.99× JCI buy & hold 0.97× 2018-01-01 2026-06-02

§3.7 Robustness gate scorecard

gatethresholdobservedstatusnote
OOS Sharpe>= 1.40.94FAILstructural — gross ceiling 1.14
OOS Profit Factor>= 1.51.90PASS
OOS/IS Sharpe (7 WFs)>= 0.71.09PASSnewly unlocked via walk-forward refit
Max drawdown<= 18%-15.4%PASS
Worst rolling 12M>= -8%-7.5%PASSstructural — quarterly hold-band
Win rate>= 42%42%PASS
Trades per year>= 8040FAILstructural — Q cadence vs maxDD trade-off
Beat JCI buy & hold> +11.7%+298.6%PASS

Backtest config matrix

configreturncagrsharpemaxDDPFt/yrgates
momtrend_quarterly_loose+298.6%+17.9%0.94-15.4%1.90395/7
momtrend_q_loose_hardoverlay+295.6%+17.8%0.90-18.6%1.90393/7
momtrend_quarterly_loose_voltarget+267.4%+16.7%0.82-19.9%1.90393/7
momtrend_monthly_loose+376.8%+20.4%0.86-24.3%1.75642/7
momtrend_quarterly_spec_exits+76.5%+7.0%0.22-12.7%1.17482/7
spec_monthly_baseline+35.2%+3.6%-0.11-28.9%0.851172/7
momtrend_q_loose_hc_halt+295.6%+17.8%0.90-18.6%1.90393/7
momtrend_q_loose_hc_tier+295.6%+17.8%0.90-18.6%1.90393/7
momtrend_q_loose_hc_hps+295.6%+17.8%0.90-18.6%1.90393/7
JCI buy&hold-2.3%-0.3%-0.26-41.1%
Gross-edge ceiling (zero cost): CAGR +20.3%, Sharpe 1.10, maxDD -15.3%.

Walk-forward refit — 7 expanding-IS windows (spec §3.2)

WFOOS windowIS winnerOOS refitOOS fixeddeltaverdict
WF12019-01 .. 2019-12momentum_heavy-0.77-0.31-0.46fixed wins
WF22020-01 .. 2020-12canonical_606530+1.70+1.70+0.00tie
WF32021-01 .. 2021-12canonical_606530+1.30+1.30+0.00tie
WF42022-01 .. 2022-12canonical_606530+1.25+1.25+0.00tie
WF52023-01 .. 2023-12canonical_606530-0.58-0.58+0.00tie
WF62024-01 .. 2024-12canonical_606530+0.13+0.13+0.00tie
WF72025-01 .. 2026-06canonical_606530+2.20+2.20+0.00tie
Mean+0.748+0.814-0.066OOS/IS ratio = 1.09

HPQuant integration — 3-module CV verdicts

hpquant_cv.json not generated yet — run integrations/hpquant/cross_validate.py

HPQuant Haircut Engine — capital-preservation trade-off (Rp 50 Bn capital base)

haircut_risk_decomposition.csv not generated yet — run scripts/haircut_risk_analysis.py

MSCI behavioral backlog

59 events, 39 unique tickers, 21 ADD / 38 DELETE (2018-05-31 .. 2026-05-29). Behavioral.msci_flow LIVE — front-run T-5→T edge: 71% hit, +2.23%/event (n=17).
Upcoming events
effectivetickeractionindex
no upcoming events in MSCI calendar
Recent events
effectivetickeraction
2026-05-29TPIADELETE
2026-05-29DSSADELETE
2026-05-29CUANDELETE
2026-05-29BRENDELETE
2026-05-29AMRTDELETE
2026-05-29AMMNDELETE
2026-02-27INDFDELETE
2025-11-24KLBFDELETE

Macro regime & behavioral coverage

RISK_OFF BRFgross 0.49x
macro score -2 (range -6..+7, 7-indicator overlay → Bayesian regime filter)
Domestic / rate cluster
IDR strength-1
BI direction0
US 10Y-1
Brent >$850
Global risk-off cluster
VIX level0
DXY momentum0
Gold momentum0
Behavioral edge sub-strategies
msci_flowLIVE
foreign_localBLOCKED - historical foreign-flow series missing — build foreign_flow.parquet
margin_cascadeBLOCKED - margin-debt universe + intraday data missing

Active long picks (top-12 by composite)

▲ LONG candidates (descending composite)
MARK91.1
TAPG84.0
ADRO80.7
TINS76.5
AADI75.8
MAPI70.9
ITMG68.6
AKRA66.0
ELSA65.3
GGRM63.6
EMAS63.5
RAJA55.9

Factor scores (click header to sort) — currently-investable universe only

Showing 76 of 168 scored tickers — those eligible per universe_liquidity as-of latest date (ADTV20 ≥ Rp 10 Bn). 92 hidden zombie/illiquid names (e.g. POSA: zero volume since 2019, lowvol=100 spuriously) — these can never enter the canonical book; see "Hidden zombies" panel below for the list.
tickermom quallowvol trendcomposite signal

Hidden zombies / non-investable scored tickers

92 tickers in factor_snapshot.csv but NOT currently investable. Click to expand.
tickerlast pxlast vollast eligiblecompositereason hidden
MEGARp 1,98516,500never recently86.4illiquid (ADTV below cutoff for >90 days)
LSIPRp 1,45012,300,9002026-06-3081.8recent fallout (ADTV dropped below threshold)
BSSRRp 4,310901,2002023-01-1180.7illiquid (ADTV below cutoff for >90 days)
AGIIRp 3,020188,2002026-02-2779.6illiquid (ADTV below cutoff for >90 days)
WIIMRp 1,710785,3002026-03-0473.9illiquid (ADTV below cutoff for >90 days)
AUTORp 2,7702,079,7002025-11-1173.6illiquid (ADTV below cutoff for >90 days)
SRTGRp 1,7502,522,3002026-05-1371.5recent fallout (ADTV dropped below threshold)
TOTLRp 1,1452,611,7002023-06-0967.1illiquid (ADTV below cutoff for >90 days)
TSPCRp 2,850803,8002024-09-2064.7illiquid (ADTV below cutoff for >90 days)
DMASRp 14780,107,7002026-07-1359.1recent fallout (ADTV dropped below threshold)
GJTLRp 1,31019,998,3002024-11-2858.3illiquid (ADTV below cutoff for >90 days)
ULTJRp 1,4904,014,6002024-06-1358.2illiquid (ADTV below cutoff for >90 days)
CMNPRp 1,365112,000never recently57.7illiquid (ADTV below cutoff for >90 days)
DRMARp 955776,0002023-09-0555.9illiquid (ADTV below cutoff for >90 days)
HMSPRp 73516,085,0002026-06-2255.8recent fallout (ADTV dropped below threshold)
CMRYRp 4,5901,556,5002026-05-2255.7recent fallout (ADTV dropped below threshold)
BNGARp 1,6451,206,2002026-02-1854.1illiquid (ADTV below cutoff for >90 days)
DCIIRp 188,175900never recently53.3illiquid (ADTV below cutoff for >90 days)
MIDIRp 2804,088,7002024-03-2253.0illiquid (ADTV below cutoff for >90 days)
DSNGRp 1,39011,337,8002026-06-1752.3recent fallout (ADTV dropped below threshold)
NISPRp 1,2802,020,3002025-05-0651.7illiquid (ADTV below cutoff for >90 days)
BTPSRp 9951,463,2002025-10-0851.0illiquid (ADTV below cutoff for >90 days)
BGTGRp 1155,033,5002022-03-2551.0illiquid (ADTV below cutoff for >90 days)
TMASRp 1211,975,1002026-01-3048.3illiquid (ADTV below cutoff for >90 days)
MIKARp 1,8305,089,8002026-07-1646.9recent fallout (ADTV dropped below threshold)
FORERp 72025,560,7002026-06-0546.5recent fallout (ADTV dropped below threshold)
GEMSRp 6,50033,2002024-09-2646.5illiquid (ADTV below cutoff for >90 days)
SOCIRp 42613,012,8002026-05-0645.8recent fallout (ADTV dropped below threshold)
ARNARp 4946,860,200never recently42.7illiquid (ADTV below cutoff for >90 days)
PNLFRp 22430,192,1002026-06-0542.3recent fallout (ADTV dropped below threshold)
WEGERp 50229,6002021-03-0142.2illiquid (ADTV below cutoff for >90 days)
MTDLRp 5103,252,4002022-01-2841.2illiquid (ADTV below cutoff for >90 days)
SIMPRp 59022,243,0002026-06-0341.1recent fallout (ADTV dropped below threshold)
SIDORp 35270,402,9002026-06-1540.3recent fallout (ADTV dropped below threshold)
ADHIRp 1585,753,4002025-09-1939.0illiquid (ADTV below cutoff for >90 days)
BIRDRp 1,590743,0002022-07-0138.8illiquid (ADTV below cutoff for >90 days)
SILORp 2,3502,476,4002024-10-1737.8illiquid (ADTV below cutoff for >90 days)
LPPFRp 1,555767,0002025-05-2837.6illiquid (ADTV below cutoff for >90 days)
AALIRp 7,0502,232,9002026-07-0137.3recent fallout (ADTV dropped below threshold)
TBIGRp 1,445302,4002026-01-2936.8illiquid (ADTV below cutoff for >90 days)
DKFTRp 6609,900,2002026-02-2736.5illiquid (ADTV below cutoff for >90 days)
TBLARp 6203,302,0002021-02-1036.1illiquid (ADTV below cutoff for >90 days)
ACESRp 35021,914,3002026-05-1335.6recent fallout (ADTV dropped below threshold)
PWONRp 25875,038,3002026-07-1335.2recent fallout (ADTV dropped below threshold)
BJTMRp 5158,554,2002025-06-1234.5illiquid (ADTV below cutoff for >90 days)
WTONRp 764,964,3002021-02-2334.0illiquid (ADTV below cutoff for >90 days)
KPASRp 6202019-02-0733.9illiquid (ADTV below cutoff for >90 days)
PEHARp 268185,500never recently33.5illiquid (ADTV below cutoff for >90 days)
SMRARp 31616,289,5002026-02-1833.4illiquid (ADTV below cutoff for >90 days)
INTPRp 4,8002,296,4002026-06-2932.0recent fallout (ADTV dropped below threshold)
KAEFRp 450246,6002024-01-2431.6illiquid (ADTV below cutoff for >90 days)
DILDRp 11511,959,9002024-10-0331.4illiquid (ADTV below cutoff for >90 days)
HERORp 354613,000never recently30.9illiquid (ADTV below cutoff for >90 days)
BBYBRp 25230,640,4002026-03-1129.9illiquid (ADTV below cutoff for >90 days)
PNBNRp 9052,473,0002026-02-1929.7illiquid (ADTV below cutoff for >90 days)
MAINRp 6652,216,200never recently29.4illiquid (ADTV below cutoff for >90 days)
CTRARp 5809,134,7002026-04-0128.7illiquid (ADTV below cutoff for >90 days)
MYORRp 1,6609,756,6002026-05-2928.6recent fallout (ADTV dropped below threshold)
NIPSRp 2820never recently27.1illiquid (ADTV below cutoff for >90 days)
FILMRp 1,0958,807,2002026-05-1327.1recent fallout (ADTV dropped below threshold)
APLNRp 12022,518,5002026-05-2727.0recent fallout (ADTV dropped below threshold)
KEENRp 8758,329,7002026-02-1926.9illiquid (ADTV below cutoff for >90 days)
MORARp 6,275111,0002026-04-1326.7illiquid (ADTV below cutoff for >90 days)
CBDKRp 3,7801,547,9002026-05-1226.6recent fallout (ADTV dropped below threshold)
FPNIRp 42450,863,9002026-01-2026.5illiquid (ADTV below cutoff for >90 days)
GMFIRp 5451,616,5002021-01-2225.5illiquid (ADTV below cutoff for >90 days)
SMBRRp 162936,4002025-09-0125.4illiquid (ADTV below cutoff for >90 days)
HRUMRp 88528,112,4002026-05-1225.4recent fallout (ADTV dropped below threshold)
MYRXRp 5002019-11-2624.9ZOMBIE (zero-volume quote at IDX minimum tick)
MNCNRp 20235,629,1002026-04-3024.6illiquid (ADTV below cutoff for >90 days)
DOIDRp 2122,044,8002024-08-1924.4illiquid (ADTV below cutoff for >90 days)
JSMRRp 2,7704,380,7002026-07-2223.2recent fallout (ADTV dropped below threshold)
SMDRRp 30018,966,0002026-04-0723.1illiquid (ADTV below cutoff for >90 days)
BSDERp 56513,569,5002026-02-0921.9illiquid (ADTV below cutoff for >90 days)
NIKLRp 1943,128,9002026-06-0419.7recent fallout (ADTV dropped below threshold)
SSMSRp 99510,447,0002025-11-0618.0illiquid (ADTV below cutoff for >90 days)
SCMARp 20240,478,5002026-05-1417.3recent fallout (ADTV dropped below threshold)
UANGRp 2,380123,8002026-02-1916.7illiquid (ADTV below cutoff for >90 days)
LPKRRp 60153,291,0002026-03-3116.4illiquid (ADTV below cutoff for >90 days)
FORZRp 5002019-11-1416.2ZOMBIE (zero-volume quote at IDX minimum tick)
HOKIRp 539,976,7002025-10-1615.6illiquid (ADTV below cutoff for >90 days)
KIJARp 123102,124,8002026-05-2014.9recent fallout (ADTV dropped below threshold)
BWPTRp 88710,490,1002026-05-1912.8recent fallout (ADTV dropped below threshold)
BBKPRp 53109,894,5002026-02-2012.0illiquid (ADTV below cutoff for >90 days)
HEALRp 7957,611,7002026-04-0911.7illiquid (ADTV below cutoff for >90 days)
IMPCRp 1,5408,656,3002026-07-2811.2recent fallout (ADTV dropped below threshold)
MLPLRp 9624,774,8002026-02-2410.4illiquid (ADTV below cutoff for >90 days)
EXCLRp 2,5308,010,9002026-07-099.4recent fallout (ADTV dropped below threshold)
ARKORp 4,5502,061,9002026-07-088.9recent fallout (ADTV dropped below threshold)
NRCARp 4922,517,2002026-02-257.2illiquid (ADTV below cutoff for >90 days)
KPIGRp 86170,063,6002026-05-145.0recent fallout (ADTV dropped below threshold)
COINRp 6409,553,1002026-05-083.7recent fallout (ADTV dropped below threshold)

Datasets & coverage

datasetrowsstatusnote
benchmark2,553OKJCI ^JKSE
corp_actions1,350OKYahoo splits + dividends
delisted_history8PARTIAL8 seed names; caps zombie quotes
fundamentals155PARTIALin-house snapshot
fundamentals_history1,161OKSectors v2 PIT annual 2018-2025
macro2,763OKyfinance + FRED + BI + macro-history seed (VIX/DXY/gold)
msci_rebalance_history59OK59 events from MSCI primary-source PDFs
prices380,500OKYahoo 10y - survivorship caveat
universe_liquidity172,477OKPIT investable, ADTV20 >= Rp 10 Bn

Validation (spec §5 sanity checks)

checkresultdetail
pit_lookaheadPASSas-of 2022-06-15: future member ZZZZ correctly excluded (members=151)
lookahead_catchPASSAALI: corr(clean,fwd)=0.053 (flag=False) vs corr(leak,fwd)=1.000 (flag=True) @thresh0.5 -> auditor CAUGHT leak, passed clean
survivorshipPASSdelisted in prices: 8/8 present, missing=[]; zombie rows beyond true last-trade=10341 (capped via delisted_history)
price_integrityPASSdup(date,ticker)=0, close<=0 count=0, per-ticker dates monotonic=True
random_shuffle_dataPASSfwd autocorr=0.813 -> shuffled=-0.008 (harness OK; full PF<=1.0 shuffle test is a Phase 2+ gate)
Reproducibility: all numbers regenerate from run_backtest.py + scripts/walk_forward_refit.py + integrations/hpquant/cross_validate.py + scripts/haircut_risk_analysis.py + scripts/fetch_msci_history.py. Factor math is look-ahead-safe (truncation test diff 0.0). Walk-forward OOS/IS Sharpe = 1.22 confirms canonical 60/5/5/30 weights are not curve-fit. 119/119 unit tests green at last build.
Companion docs: docs/Garuda_Alpha_Thesis_v2.html (research thesis + implementation roadmap), docs/HPQUANT_INTEGRATION.md, docs/PANDUAN.md (Indonesian operational guide).