174 lines
No EOL
7.9 KiB
JSON
174 lines
No EOL
7.9 KiB
JSON
{
|
|
"definition_f7_grab": {
|
|
"reference": "internal pivot (fractal len=5) \u2014 ProcessStructure(INTERNAL_LEN=5, internal=true)",
|
|
"condition_bearish": "isHigh && high[b] > lvl && close[b] < lvl (buy-side swept -> dir=-1)",
|
|
"condition_bullish": "!isHigh && low[b] < lvl && close[b] > lvl (sell-side swept -> dir=+1)",
|
|
"lookback_window": "8 bar setelah pivot (b in (p, p+8])",
|
|
"atr_usage": "TIDAK dipakai",
|
|
"minimum_excess": "0 (semua wick > lvl sudah dihitung, tanpa ambang)",
|
|
"close_requirement": "YA (close kembali di bawah/atas level)",
|
|
"reference_liquidity": "single internal swing high/low (bukan EQ pair)",
|
|
"timeframe": "M15 (hanya chart TF; fitur f7 dihitung pada bar M15 tertutup)",
|
|
"event_emission": "STATE: g_swpDir/g_swpBar disimpan dan persist sampai grab lebih baru (state age tidak dibatasi)",
|
|
"multiple_per_bar": "v4.4/v4.5 menggambar 1 arrow per (pivot, bar pertama match); beberapa pivot dpt menghasilkan beberapa arrow pd bar sama"
|
|
},
|
|
"definition_f10_f11_eq": {
|
|
"reference": "pasangan SWING pivot berurutan (fractal len=50), same-type (HH atau LL)",
|
|
"pair_requirement": "|bar(p2)-bar(p1)| >= 3 ; |price(p2)-price(p1)| <= 0.1*ATR(row)",
|
|
"swept_condition": "EQH: ada bar b in (p2, r] dgn high[b] > pr2 ; EQL: ada bar b in (p2, r] dgn low[b] < pr2",
|
|
"lookback_window": "p1 >= r-649 DAN p2 <= r-50 (pivot valid absolut)",
|
|
"atr_usage": "YA \u2014 tolerance = 0.1 * ATR(bar row r) (bukan ATR pivot)",
|
|
"minimum_excess": "0 (tembus wick berapa pun dihitung)",
|
|
"close_requirement": "TIDAK ADA (close-back DITARIK karena uji AUC \u2014 DESAIN_MTF_v45.md)",
|
|
"reference_liquidity": "equal highs (EQH) / equal lows (EQL)",
|
|
"timeframe": "M15",
|
|
"event_emission": "STATE monotonic: eqh_swept/eql_swept = 1 utk semua r >= first_cross sampai pair keluar window [r-649, r-50] (~649 bar)"
|
|
},
|
|
"event_state_f7": {
|
|
"active_bars": 196928,
|
|
"onset_events": 2835,
|
|
"repetition_ratio": 69.5,
|
|
"any_active_runs_n": 1,
|
|
"any_active_run_len": 196928,
|
|
"never_returns_to_zero": true,
|
|
"dir_run_median": 94,
|
|
"dir_run_max": 996,
|
|
"dir_run_n": 1437,
|
|
"note": "f7 TIDAK pernah reset ke 0 setelah grab pertama (state permanen); satu grab mendominasi state selama median dir_run bar",
|
|
"verdict": "STATE PERMANEN (bukan event) \u2014 hipotesis D terkonfirmasi di level populasi"
|
|
},
|
|
"event_state_f10_eqh": {
|
|
"true_bars": 877,
|
|
"onsets": 25,
|
|
"offsets": 25,
|
|
"repetition_ratio": 35.1,
|
|
"state_run_median": 14,
|
|
"state_run_max": 384,
|
|
"state_run_n": 25,
|
|
"note": "onset 1x -> state bertahan ~r sampai pair keluar window (max ~649 bar)",
|
|
"verdict": "STATE MONOTONIC (event hanya pada onset)"
|
|
},
|
|
"event_state_f11_eql": {
|
|
"true_bars": 1617,
|
|
"onsets": 38,
|
|
"offsets": 38,
|
|
"repetition_ratio": 42.6,
|
|
"state_run_median": 14,
|
|
"state_run_max": 504,
|
|
"state_run_n": 38,
|
|
"note": "onset 1x -> state bertahan ~r sampai pair keluar window (max ~649 bar)",
|
|
"verdict": "STATE MONOTONIC (event hanya pada onset)"
|
|
},
|
|
"f7_state_age_bars": {
|
|
"median": 46,
|
|
"p90": 153,
|
|
"max": 529,
|
|
"frac_age_lt_8": 0.1118,
|
|
"frac_age_ge_16": 0.7887,
|
|
"frac_age_ge_40": 0.5505
|
|
},
|
|
"repeated_event_f9confirm": {
|
|
"E_BUY": {
|
|
"event_bars": 27096,
|
|
"runs": 437,
|
|
"run_median": 40,
|
|
"run_max": 388,
|
|
"repetition_ratio": 62.0
|
|
},
|
|
"E_SELL": {
|
|
"event_bars": 25259,
|
|
"runs": 400,
|
|
"run_median": 42,
|
|
"run_max": 321,
|
|
"repetition_ratio": 63.1
|
|
}
|
|
},
|
|
"f7_windowed_vs_fullfeed": {
|
|
"probed_bars": 1500,
|
|
"divergent_bars": 0,
|
|
"divergence_rate": 0.0,
|
|
"note": "EA memakai window 700 bar; training (parity-verified) memakai full feed. Divergensi teoretis bila grab terakhir berasal dr pivot < r-699."
|
|
},
|
|
"semantic_checklist": {
|
|
"reference": {
|
|
"f7": "internal swing (len=5) single level",
|
|
"f10/f11": "EQ pair swing (len=50)"
|
|
},
|
|
"rejection": {
|
|
"f7": "ADA (close-back)",
|
|
"f10/f11": "TIDAK ADA (ditarik via uji AUC \u2014 definisi dipilih berdasarkan backtest, bukan semantik SMC)"
|
|
},
|
|
"atr": {
|
|
"f7": "TIDAK",
|
|
"f10/f11": "YA (tol 0.10*ATR row)"
|
|
},
|
|
"threshold": {
|
|
"f7": "TIDAK (excess>=0)",
|
|
"f10/f11": "hanya utk |dp| EQ, bukan excess sweep"
|
|
},
|
|
"timeframe": {
|
|
"f7": "M15",
|
|
"f10/f11": "M15"
|
|
},
|
|
"emission": {
|
|
"f7": "state persist tanpa batas umur",
|
|
"f10/f11": "state monotonic ~649 bar"
|
|
},
|
|
"per_bar_multiple": "f7 dapat mengaktifkan beberapa arrow (beberapa pivot) pd bar yg sama; state hanya menyimpan yg paling baru"
|
|
},
|
|
"regression_test_specs": [
|
|
{
|
|
"id": "R1_EVENT_VS_STATE_F10",
|
|
"given": "EQH pair valid (p1,p2,fc) dgn fc <= r. Kondisi terpenuhi mulai r=fc.",
|
|
"when": "r berjalan fc, fc+1, ..., fc+649",
|
|
"expected": "SATU event di onset (r=fc); state boleh bertahan utk fitur kontinu",
|
|
"current": "f10==1 utk SEMUA r in [fc, fc+~649] \u2014 stream event menghitung ~649 event utk satu sweep (lihat P3.2.2 E_EQH retention 2.05%)",
|
|
"severity": "SEMANTIC STATE/EVENT BUG (hipotesis D)"
|
|
},
|
|
{
|
|
"id": "R2_NO_REJECTION_EQ",
|
|
"given": "EQH pair valid; bar fc dgn high[fc] > pr2 namun close[fc] < pr2 (wick sweeps, close kembali)",
|
|
"when": "machine mengevaluasi f10 di bar fc",
|
|
"expected": "Sweep memerlukan rejection/close-back utk konsisten dgn definisi SMC (sweep = grab + rejection)",
|
|
"current": "f10=1 tanpa syarat close \u2014 wick break saja sudah 'swept' (definisi dipilih via AUC, DESAIN_MTF_v45.md)",
|
|
"severity": "DEFINITION AMBIGUITY (hipotesis B) \u2014 wajib adjudikasi dgn human"
|
|
},
|
|
{
|
|
"id": "R3_F7_STATE_AGE",
|
|
"given": "Grab f7 terjadi di bar b (sweep_dir=-1)",
|
|
"when": "r = b+40 (melewati InpSeqWindow=40 dan umur setup P3.2.2 8-16 bar)",
|
|
"expected": "Event sweep dianggap basi; fitur tidak lagi menyatakan 'sweep aktif' tanpa konteks waktu",
|
|
"current": "f7 tetap -1 tanpa batas umur sampai ada grab baru \u2014 state basi tetap dihitung sbg sinyal (f18 +15, f9-confirm tetap 1)",
|
|
"severity": "EVENT/STATE SEMANTIC ISSUE (hipotesis D) \u2014 umur setup tidak dimodelkan"
|
|
},
|
|
{
|
|
"id": "R4_F7_WINDOWED_VS_FULLFEED",
|
|
"given": "Grab terakhir terjadi di bar b dari pivot p < r-699",
|
|
"when": "EA (window 700) vs training (full feed) mengevaluasi f7 di bar r",
|
|
"expected": "f7 runtime == f7 training (parity)",
|
|
"current": "divergence diukur (lihat f7_windowed_vs_fullfeed) \u2014 kecil secara empiris, tapi secara semantik ada window mismatch",
|
|
"severity": "LOW (parity empiris hampir sempurna); dokumentasikan sbg risiko"
|
|
},
|
|
{
|
|
"id": "R5_NO_EXCESS_THRESHOLD",
|
|
"given": "Bar dgn wick menembus level 0.001 ATR di atas reference",
|
|
"when": "f10/f11 dievaluasi",
|
|
"expected": "Sweep bermakna memerlukan excess signifikan (>= ambang) utk mencegah noise",
|
|
"current": "excess minimum = 0 \u2014 tembus wick sekecil apa pun = swept",
|
|
"severity": "DEFINITION SIMPLIFICATION (hipotesis B)"
|
|
},
|
|
{
|
|
"id": "R6_REFERENCE_TIMEFRAME_M15_ONLY",
|
|
"given": "Human melihat sweep pada M30/H4 (level likuiditas HTF)",
|
|
"when": "machine mengevaluasi sweep pd bar M15",
|
|
"expected": "Deteksi sweep pada timeframe yg sama dgn referensi likuiditas",
|
|
"current": "f7/f10/f11 hanya dihitung pada M15; HTF hanya dipakai sbg bias arah (f0-f2) \u2014 referensi likuiditas HTF TIDAK ada di fitur sweep",
|
|
"severity": "TIMEFRAME SEMANTIC GAP (hipotesis C) \u2014 wajib diuji dgn golden cases"
|
|
}
|
|
],
|
|
"verdict_draft": {
|
|
"event_vs_state": "KONFIRMASI BUG STATE/EVENT (D): f7 persist tanpa batas umur (99.95% bar aktif); f10/f11 state monotonic ~649 bar; stream f9-confirm berulang dgn run median > 1",
|
|
"rejection_semantics": "f10/f11 TANPA rejection (definisi dipilih via AUC) \u2014 konflik dgn definisi SMC manusia; wajib golden-test",
|
|
"timeframe": "Hanya M15 \u2014 referensi likuiditas HTF tidak direpresentasikan"
|
|
}
|
|
} |