C51 distributional Q-network with GPU Thompson selection borrowed
minimally from production (alpha_c51.cu: forward, project, grad,
expected_q, thompson_select kernels; ~260 lines). Uses Huber
negative-tail compression in projection per production
block_bellman_project_f. Action selection 100% GPU via mapped-pinned
i32 output + __threadfence_system + host volatile read (matches
gpu_training_guard MappedBuffer pattern).
Backtest result (2D sweep, 500 episodes per cell, 30 cells):
cost=0 C51 +10.41 vs linear-Q -15.72 (+26pt, BEATS Phase 1d.4
no-RL baseline +4.4 by 6pt)
cost=0.125 C51 -13.81 vs -29.17 (+15pt closes half-tick gap)
Win rate at cost=0 best τ: linear-Q 0.008 → C51 0.552.
Calibration hypothesis vindicated; documented in
memory/pearl_c51_thompson_closed_phase_e3_gap.md.
Also in this commit (Phase E.3 follow-up cleanup):
- --pruned-actions falsified (2.4× worse Sharpe). Documented in
memory/pearl_action_pruning_falsified.md.
- --real-spread falsified for ES futures (76% of bars at 1-tick floor).
- SnapshotRow bid_l/ask_l extended from [f32; 3] to [f32; 10].
L4-L10 synthesized in this commit; real MBP-10 peek lands in E.4.A T5.
- docs/isv-slots.md updated per kernel-audit-doc hook requirement.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
451 lines
14 KiB
JSON
451 lines
14 KiB
JSON
{
|
|
"bins": [
|
|
{
|
|
"avg_n_trades": 505.7820129394531,
|
|
"cost": 0.0,
|
|
"mean_reward": -7.376502513885498,
|
|
"n_episodes": 500,
|
|
"p05": -15.246373176574707,
|
|
"p50": -9.201272964477539,
|
|
"p95": 6.196549415588379,
|
|
"sharpe_annualised": -31.529918670654297,
|
|
"sharpe_per_episode": -1.101744532585144,
|
|
"std_reward": 6.695292949676514,
|
|
"threshold": 0.0,
|
|
"win_rate": 0.1420000046491623
|
|
},
|
|
{
|
|
"avg_n_trades": 506.8420104980469,
|
|
"cost": 0.0625,
|
|
"mean_reward": -15.909566879272461,
|
|
"n_episodes": 500,
|
|
"p05": -23.928251266479492,
|
|
"p50": -17.78717803955078,
|
|
"p95": -3.438425302505493,
|
|
"sharpe_annualised": -68.6070327758789,
|
|
"sharpe_per_episode": -2.3973236083984375,
|
|
"std_reward": 6.636386871337891,
|
|
"threshold": 0.0,
|
|
"win_rate": 0.029999999329447746
|
|
},
|
|
{
|
|
"avg_n_trades": 505.7179870605469,
|
|
"cost": 0.125,
|
|
"mean_reward": -23.42654800415039,
|
|
"n_episodes": 500,
|
|
"p05": -32.949134826660156,
|
|
"p50": -24.983301162719727,
|
|
"p95": -9.647102355957031,
|
|
"sharpe_annualised": -91.52935028076172,
|
|
"sharpe_per_episode": -3.1982944011688232,
|
|
"std_reward": 7.324700355529785,
|
|
"threshold": 0.0,
|
|
"win_rate": 0.0020000000949949026
|
|
},
|
|
{
|
|
"avg_n_trades": 507.2300109863281,
|
|
"cost": 0.25,
|
|
"mean_reward": -40.23649215698242,
|
|
"n_episodes": 500,
|
|
"p05": -50.727237701416016,
|
|
"p50": -41.87934875488281,
|
|
"p95": -25.59070587158203,
|
|
"sharpe_annualised": -140.9852752685547,
|
|
"sharpe_per_episode": -4.926424026489258,
|
|
"std_reward": 8.167484283447266,
|
|
"threshold": 0.0,
|
|
"win_rate": 0.0
|
|
},
|
|
{
|
|
"avg_n_trades": 506.33599853515625,
|
|
"cost": 0.5,
|
|
"mean_reward": -72.27515411376953,
|
|
"n_episodes": 500,
|
|
"p05": -89.18425750732422,
|
|
"p50": -72.6242904663086,
|
|
"p95": -53.71200180053711,
|
|
"sharpe_annualised": -197.0381622314453,
|
|
"sharpe_per_episode": -6.88507080078125,
|
|
"std_reward": 10.4973726272583,
|
|
"threshold": 0.0,
|
|
"win_rate": 0.0
|
|
},
|
|
{
|
|
"avg_n_trades": 411.7900085449219,
|
|
"cost": 0.0,
|
|
"mean_reward": -5.731086730957031,
|
|
"n_episodes": 500,
|
|
"p05": -13.217626571655273,
|
|
"p50": -6.432249069213867,
|
|
"p95": 4.667325973510742,
|
|
"sharpe_annualised": -28.958410263061523,
|
|
"sharpe_per_episode": -1.0118887424468994,
|
|
"std_reward": 5.663751602172852,
|
|
"threshold": 0.05000000074505806,
|
|
"win_rate": 0.1459999978542328
|
|
},
|
|
{
|
|
"avg_n_trades": 414.65399169921875,
|
|
"cost": 0.0625,
|
|
"mean_reward": -12.296024322509766,
|
|
"n_episodes": 500,
|
|
"p05": -22.073755264282227,
|
|
"p50": -12.375904083251953,
|
|
"p95": -2.1291003227233887,
|
|
"sharpe_annualised": -56.619964599609375,
|
|
"sharpe_per_episode": -1.978461742401123,
|
|
"std_reward": 6.214941501617432,
|
|
"threshold": 0.05000000074505806,
|
|
"win_rate": 0.03999999910593033
|
|
},
|
|
{
|
|
"avg_n_trades": 413.5060119628906,
|
|
"cost": 0.125,
|
|
"mean_reward": -19.207530975341797,
|
|
"n_episodes": 500,
|
|
"p05": -31.44267463684082,
|
|
"p50": -19.380374908447266,
|
|
"p95": -7.792024612426758,
|
|
"sharpe_annualised": -76.79408264160156,
|
|
"sharpe_per_episode": -2.6834022998809814,
|
|
"std_reward": 7.157902240753174,
|
|
"threshold": 0.05000000074505806,
|
|
"win_rate": 0.00800000037997961
|
|
},
|
|
{
|
|
"avg_n_trades": 411.93798828125,
|
|
"cost": 0.25,
|
|
"mean_reward": -32.429752349853516,
|
|
"n_episodes": 500,
|
|
"p05": -48.73774337768555,
|
|
"p50": -32.32264709472656,
|
|
"p95": -16.66182518005371,
|
|
"sharpe_annualised": -97.9114761352539,
|
|
"sharpe_per_episode": -3.4213037490844727,
|
|
"std_reward": 9.47877025604248,
|
|
"threshold": 0.05000000074505806,
|
|
"win_rate": 0.0
|
|
},
|
|
{
|
|
"avg_n_trades": 415.7279968261719,
|
|
"cost": 0.5,
|
|
"mean_reward": -60.21247482299805,
|
|
"n_episodes": 500,
|
|
"p05": -83.98477935791016,
|
|
"p50": -63.01105499267578,
|
|
"p95": -33.47249984741211,
|
|
"sharpe_annualised": -111.4959716796875,
|
|
"sharpe_per_episode": -3.895984649658203,
|
|
"std_reward": 15.455008506774902,
|
|
"threshold": 0.05000000074505806,
|
|
"win_rate": 0.0
|
|
},
|
|
{
|
|
"avg_n_trades": 307.6679992675781,
|
|
"cost": 0.0,
|
|
"mean_reward": -2.764266014099121,
|
|
"n_episodes": 500,
|
|
"p05": -11.989750862121582,
|
|
"p50": -2.776402473449707,
|
|
"p95": 7.969524383544922,
|
|
"sharpe_annualised": -13.065699577331543,
|
|
"sharpe_per_episode": -0.4565524756908417,
|
|
"std_reward": 6.054651260375977,
|
|
"threshold": 0.10000000149011612,
|
|
"win_rate": 0.257999986410141
|
|
},
|
|
{
|
|
"avg_n_trades": 313.0580139160156,
|
|
"cost": 0.0625,
|
|
"mean_reward": -8.023506164550781,
|
|
"n_episodes": 500,
|
|
"p05": -20.223373413085938,
|
|
"p50": -7.3301496505737305,
|
|
"p95": 2.120025396347046,
|
|
"sharpe_annualised": -33.08244323730469,
|
|
"sharpe_per_episode": -1.1559940576553345,
|
|
"std_reward": 6.940784931182861,
|
|
"threshold": 0.10000000149011612,
|
|
"win_rate": 0.09000000357627869
|
|
},
|
|
{
|
|
"avg_n_trades": 312.7879943847656,
|
|
"cost": 0.125,
|
|
"mean_reward": -13.200392723083496,
|
|
"n_episodes": 500,
|
|
"p05": -27.572002410888672,
|
|
"p50": -11.809425354003906,
|
|
"p95": -1.6250247955322266,
|
|
"sharpe_annualised": -45.03028106689453,
|
|
"sharpe_per_episode": -1.5734853744506836,
|
|
"std_reward": 8.389269828796387,
|
|
"threshold": 0.10000000149011612,
|
|
"win_rate": 0.03799999877810478
|
|
},
|
|
{
|
|
"avg_n_trades": 309.92401123046875,
|
|
"cost": 0.25,
|
|
"mean_reward": -23.74254035949707,
|
|
"n_episodes": 500,
|
|
"p05": -43.5518913269043,
|
|
"p50": -22.597496032714844,
|
|
"p95": -7.84235143661499,
|
|
"sharpe_annualised": -57.187339782714844,
|
|
"sharpe_per_episode": -1.998287320137024,
|
|
"std_reward": 11.881443977355957,
|
|
"threshold": 0.10000000149011612,
|
|
"win_rate": 0.004000000189989805
|
|
},
|
|
{
|
|
"avg_n_trades": 317.7900085449219,
|
|
"cost": 0.5,
|
|
"mean_reward": -44.596744537353516,
|
|
"n_episodes": 500,
|
|
"p05": -77.12137603759766,
|
|
"p50": -44.13597869873047,
|
|
"p95": -14.920825004577637,
|
|
"sharpe_annualised": -60.16629409790039,
|
|
"sharpe_per_episode": -2.1023805141448975,
|
|
"std_reward": 21.212499618530273,
|
|
"threshold": 0.10000000149011612,
|
|
"win_rate": 0.0
|
|
},
|
|
{
|
|
"avg_n_trades": 214.0800018310547,
|
|
"cost": 0.0,
|
|
"mean_reward": -0.7483880519866943,
|
|
"n_episodes": 500,
|
|
"p05": -8.611875534057617,
|
|
"p50": -0.9981997013092041,
|
|
"p95": 7.168798923492432,
|
|
"sharpe_annualised": -4.30732536315918,
|
|
"sharpe_per_episode": -0.15051013231277466,
|
|
"std_reward": 4.972343444824219,
|
|
"threshold": 0.15000000596046448,
|
|
"win_rate": 0.3479999899864197
|
|
},
|
|
{
|
|
"avg_n_trades": 220.29600524902344,
|
|
"cost": 0.0625,
|
|
"mean_reward": -4.5742506980896,
|
|
"n_episodes": 500,
|
|
"p05": -15.124225616455078,
|
|
"p50": -3.609375,
|
|
"p95": 5.420872688293457,
|
|
"sharpe_annualised": -22.15690803527832,
|
|
"sharpe_per_episode": -0.7742250561714172,
|
|
"std_reward": 5.908166408538818,
|
|
"threshold": 0.15000000596046448,
|
|
"win_rate": 0.16200000047683716
|
|
},
|
|
{
|
|
"avg_n_trades": 206.593994140625,
|
|
"cost": 0.125,
|
|
"mean_reward": -7.650266170501709,
|
|
"n_episodes": 500,
|
|
"p05": -20.91200065612793,
|
|
"p50": -5.522923946380615,
|
|
"p95": 0.7698264122009277,
|
|
"sharpe_annualised": -31.48302459716797,
|
|
"sharpe_per_episode": -1.100105881690979,
|
|
"std_reward": 6.954117774963379,
|
|
"threshold": 0.15000000596046448,
|
|
"win_rate": 0.08399999886751175
|
|
},
|
|
{
|
|
"avg_n_trades": 207.1020050048828,
|
|
"cost": 0.25,
|
|
"mean_reward": -14.568126678466797,
|
|
"n_episodes": 500,
|
|
"p05": -31.57849884033203,
|
|
"p50": -11.627604484558105,
|
|
"p95": -3.4181251525878906,
|
|
"sharpe_annualised": -42.31534957885742,
|
|
"sharpe_per_episode": -1.4786180257797241,
|
|
"std_reward": 9.852529525756836,
|
|
"threshold": 0.15000000596046448,
|
|
"win_rate": 0.014000000432133675
|
|
},
|
|
{
|
|
"avg_n_trades": 212.37600708007812,
|
|
"cost": 0.5,
|
|
"mean_reward": -29.32847023010254,
|
|
"n_episodes": 500,
|
|
"p05": -61.26882553100586,
|
|
"p50": -24.778127670288086,
|
|
"p95": -7.954624652862549,
|
|
"sharpe_annualised": -46.66537857055664,
|
|
"sharpe_per_episode": -1.6306202411651611,
|
|
"std_reward": 17.986082077026367,
|
|
"threshold": 0.15000000596046448,
|
|
"win_rate": 0.0
|
|
},
|
|
{
|
|
"avg_n_trades": 133.64199829101562,
|
|
"cost": 0.0,
|
|
"mean_reward": 0.8386048078536987,
|
|
"n_episodes": 500,
|
|
"p05": -4.833250522613525,
|
|
"p50": -0.04905200004577637,
|
|
"p95": 9.4207763671875,
|
|
"sharpe_annualised": 5.863218307495117,
|
|
"sharpe_per_episode": 0.20487743616104126,
|
|
"std_reward": 4.093202114105225,
|
|
"threshold": 0.20000000298023224,
|
|
"win_rate": 0.492000013589859
|
|
},
|
|
{
|
|
"avg_n_trades": 130.7899932861328,
|
|
"cost": 0.0625,
|
|
"mean_reward": -1.5558525323867798,
|
|
"n_episodes": 500,
|
|
"p05": -8.187274932861328,
|
|
"p50": -1.694624423980713,
|
|
"p95": 5.250924110412598,
|
|
"sharpe_annualised": -10.904839515686035,
|
|
"sharpe_per_episode": -0.381045937538147,
|
|
"std_reward": 4.083110332489014,
|
|
"threshold": 0.20000000298023224,
|
|
"win_rate": 0.2840000092983246
|
|
},
|
|
{
|
|
"avg_n_trades": 132.32000732421875,
|
|
"cost": 0.125,
|
|
"mean_reward": -3.9048287868499756,
|
|
"n_episodes": 500,
|
|
"p05": -11.645946502685547,
|
|
"p50": -3.379124402999878,
|
|
"p95": 2.8128762245178223,
|
|
"sharpe_annualised": -24.98102569580078,
|
|
"sharpe_per_episode": -0.8729076981544495,
|
|
"std_reward": 4.473358154296875,
|
|
"threshold": 0.20000000298023224,
|
|
"win_rate": 0.15600000321865082
|
|
},
|
|
{
|
|
"avg_n_trades": 131.50799560546875,
|
|
"cost": 0.25,
|
|
"mean_reward": -7.8982110023498535,
|
|
"n_episodes": 500,
|
|
"p05": -18.36737632751465,
|
|
"p50": -6.697125434875488,
|
|
"p95": 0.27234911918640137,
|
|
"sharpe_annualised": -38.383419036865234,
|
|
"sharpe_per_episode": -1.341225266456604,
|
|
"std_reward": 5.888802528381348,
|
|
"threshold": 0.20000000298023224,
|
|
"win_rate": 0.05999999865889549
|
|
},
|
|
{
|
|
"avg_n_trades": 128.50399780273438,
|
|
"cost": 0.5,
|
|
"mean_reward": -17.548030853271484,
|
|
"n_episodes": 500,
|
|
"p05": -35.324703216552734,
|
|
"p50": -15.349874496459961,
|
|
"p95": -5.963876247406006,
|
|
"sharpe_annualised": -55.831520080566406,
|
|
"sharpe_per_episode": -1.9509111642837524,
|
|
"std_reward": 8.994787216186523,
|
|
"threshold": 0.20000000298023224,
|
|
"win_rate": 0.0020000000949949026
|
|
},
|
|
{
|
|
"avg_n_trades": 98.94200134277344,
|
|
"cost": 0.0,
|
|
"mean_reward": 1.554954171180725,
|
|
"n_episodes": 500,
|
|
"p05": -3.022125720977783,
|
|
"p50": 0.3521251678466797,
|
|
"p95": 10.139877319335938,
|
|
"sharpe_annualised": 10.411664009094238,
|
|
"sharpe_per_episode": 0.36381298303604126,
|
|
"std_reward": 4.274048328399658,
|
|
"threshold": 0.25,
|
|
"win_rate": 0.5519999861717224
|
|
},
|
|
{
|
|
"avg_n_trades": 98.55400085449219,
|
|
"cost": 0.0625,
|
|
"mean_reward": -0.1477748453617096,
|
|
"n_episodes": 500,
|
|
"p05": -6.051650524139404,
|
|
"p50": -0.8751249313354492,
|
|
"p95": 7.868124485015869,
|
|
"sharpe_annualised": -0.9564568996429443,
|
|
"sharpe_per_episode": -0.03342130780220032,
|
|
"std_reward": 4.421575546264648,
|
|
"threshold": 0.25,
|
|
"win_rate": 0.36800000071525574
|
|
},
|
|
{
|
|
"avg_n_trades": 95.23999786376953,
|
|
"cost": 0.125,
|
|
"mean_reward": -1.9221543073654175,
|
|
"n_episodes": 500,
|
|
"p05": -7.974623680114746,
|
|
"p50": -2.276874542236328,
|
|
"p95": 5.843000888824463,
|
|
"sharpe_annualised": -13.812037467956543,
|
|
"sharpe_per_episode": -0.482631653547287,
|
|
"std_reward": 3.9826526641845703,
|
|
"threshold": 0.25,
|
|
"win_rate": 0.20600000023841858
|
|
},
|
|
{
|
|
"avg_n_trades": 97.05400085449219,
|
|
"cost": 0.25,
|
|
"mean_reward": -5.653500556945801,
|
|
"n_episodes": 500,
|
|
"p05": -13.8267240524292,
|
|
"p50": -5.270999431610107,
|
|
"p95": 1.1986992359161377,
|
|
"sharpe_annualised": -35.398399353027344,
|
|
"sharpe_per_episode": -1.2369202375411987,
|
|
"std_reward": 4.570626258850098,
|
|
"threshold": 0.25,
|
|
"win_rate": 0.08399999886751175
|
|
},
|
|
{
|
|
"avg_n_trades": 96.16999816894531,
|
|
"cost": 0.5,
|
|
"mean_reward": -12.689785957336426,
|
|
"n_episodes": 500,
|
|
"p05": -23.98550033569336,
|
|
"p50": -11.424251556396484,
|
|
"p95": -4.219249248504639,
|
|
"sharpe_annualised": -58.158931732177734,
|
|
"sharpe_per_episode": -2.0322375297546387,
|
|
"std_reward": 6.244243621826172,
|
|
"threshold": 0.25,
|
|
"win_rate": 0.006000000052154064
|
|
}
|
|
],
|
|
"c51": true,
|
|
"c51_n_atoms": 51,
|
|
"c51_vmax": 10.0,
|
|
"c51_vmin": -10.0,
|
|
"cost_grid": [
|
|
0.0,
|
|
0.0625,
|
|
0.125,
|
|
0.25,
|
|
0.5
|
|
],
|
|
"horizon": 600,
|
|
"n_allowed_actions": 9,
|
|
"n_eval_episodes": 500,
|
|
"n_train_episodes": 1000,
|
|
"phase": "E.3 Task 23 (2D sweep)",
|
|
"pruned_actions": false,
|
|
"threshold_grid": [
|
|
0.0,
|
|
0.05000000074505806,
|
|
0.10000000149011612,
|
|
0.15000000596046448,
|
|
0.20000000298023224,
|
|
0.25
|
|
],
|
|
"train_cost": 0.0625,
|
|
"train_frac": 0.800000011920929
|
|
} |