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.379087924957275,
|
|
"n_episodes": 500,
|
|
"p05": -15.246373176574707,
|
|
"p50": -9.201272964477539,
|
|
"p95": 6.196549415588379,
|
|
"sharpe_annualised": -31.543193817138672,
|
|
"sharpe_per_episode": -1.1022083759307861,
|
|
"std_reward": 6.694820880889893,
|
|
"threshold": 0.0,
|
|
"win_rate": 0.1420000046491623
|
|
},
|
|
{
|
|
"avg_n_trades": 506.8420104980469,
|
|
"cost": 0.0625,
|
|
"mean_reward": -15.913408279418945,
|
|
"n_episodes": 500,
|
|
"p05": -23.970996856689453,
|
|
"p50": -17.78717803955078,
|
|
"p95": -3.438425302505493,
|
|
"sharpe_annualised": -68.62244415283203,
|
|
"sharpe_per_episode": -2.397862195968628,
|
|
"std_reward": 6.63649845123291,
|
|
"threshold": 0.0,
|
|
"win_rate": 0.029999999329447746
|
|
},
|
|
{
|
|
"avg_n_trades": 505.7179870605469,
|
|
"cost": 0.125,
|
|
"mean_reward": -23.430904388427734,
|
|
"n_episodes": 500,
|
|
"p05": -32.949134826660156,
|
|
"p50": -24.983301162719727,
|
|
"p95": -9.647102355957031,
|
|
"sharpe_annualised": -91.5419921875,
|
|
"sharpe_per_episode": -3.1987359523773193,
|
|
"std_reward": 7.3250508308410645,
|
|
"threshold": 0.0,
|
|
"win_rate": 0.0020000000949949026
|
|
},
|
|
{
|
|
"avg_n_trades": 507.2300109863281,
|
|
"cost": 0.25,
|
|
"mean_reward": -40.23920440673828,
|
|
"n_episodes": 500,
|
|
"p05": -50.727237701416016,
|
|
"p50": -41.87934875488281,
|
|
"p95": -25.59070587158203,
|
|
"sharpe_annualised": -140.99142456054688,
|
|
"sharpe_per_episode": -4.926639080047607,
|
|
"std_reward": 8.167678833007812,
|
|
"threshold": 0.0,
|
|
"win_rate": 0.0
|
|
},
|
|
{
|
|
"avg_n_trades": 506.33599853515625,
|
|
"cost": 0.5,
|
|
"mean_reward": -72.27790832519531,
|
|
"n_episodes": 500,
|
|
"p05": -89.18425750732422,
|
|
"p50": -72.6242904663086,
|
|
"p95": -53.71200180053711,
|
|
"sharpe_annualised": -197.06411743164062,
|
|
"sharpe_per_episode": -6.885977745056152,
|
|
"std_reward": 10.496389389038086,
|
|
"threshold": 0.0,
|
|
"win_rate": 0.0
|
|
},
|
|
{
|
|
"avg_n_trades": 411.7900085449219,
|
|
"cost": 0.0,
|
|
"mean_reward": -5.73362922668457,
|
|
"n_episodes": 500,
|
|
"p05": -13.241250991821289,
|
|
"p50": -6.448873996734619,
|
|
"p95": 4.655198097229004,
|
|
"sharpe_annualised": -28.97418212890625,
|
|
"sharpe_per_episode": -1.0124398469924927,
|
|
"std_reward": 5.663179874420166,
|
|
"threshold": 0.05000000074505806,
|
|
"win_rate": 0.1459999978542328
|
|
},
|
|
{
|
|
"avg_n_trades": 414.65399169921875,
|
|
"cost": 0.0625,
|
|
"mean_reward": -12.299840927124023,
|
|
"n_episodes": 500,
|
|
"p05": -22.073755264282227,
|
|
"p50": -12.375904083251953,
|
|
"p95": -2.1291003227233887,
|
|
"sharpe_annualised": -56.6534309387207,
|
|
"sharpe_per_episode": -1.9796310663223267,
|
|
"std_reward": 6.213198661804199,
|
|
"threshold": 0.05000000074505806,
|
|
"win_rate": 0.03999999910593033
|
|
},
|
|
{
|
|
"avg_n_trades": 413.5060119628906,
|
|
"cost": 0.125,
|
|
"mean_reward": -19.20939064025879,
|
|
"n_episodes": 500,
|
|
"p05": -31.44267463684082,
|
|
"p50": -19.380374908447266,
|
|
"p95": -7.792024612426758,
|
|
"sharpe_annualised": -76.8126220703125,
|
|
"sharpe_per_episode": -2.6840503215789795,
|
|
"std_reward": 7.156866550445557,
|
|
"threshold": 0.05000000074505806,
|
|
"win_rate": 0.00800000037997961
|
|
},
|
|
{
|
|
"avg_n_trades": 411.93798828125,
|
|
"cost": 0.25,
|
|
"mean_reward": -32.43183517456055,
|
|
"n_episodes": 500,
|
|
"p05": -48.73774337768555,
|
|
"p50": -32.32264709472656,
|
|
"p95": -16.66182518005371,
|
|
"sharpe_annualised": -97.9302749633789,
|
|
"sharpe_per_episode": -3.4219608306884766,
|
|
"std_reward": 9.477559089660645,
|
|
"threshold": 0.05000000074505806,
|
|
"win_rate": 0.0
|
|
},
|
|
{
|
|
"avg_n_trades": 415.7279968261719,
|
|
"cost": 0.5,
|
|
"mean_reward": -60.216548919677734,
|
|
"n_episodes": 500,
|
|
"p05": -83.98477935791016,
|
|
"p50": -63.01105499267578,
|
|
"p95": -33.47249984741211,
|
|
"sharpe_annualised": -111.51805877685547,
|
|
"sharpe_per_episode": -3.896756410598755,
|
|
"std_reward": 15.452993392944336,
|
|
"threshold": 0.05000000074505806,
|
|
"win_rate": 0.0
|
|
},
|
|
{
|
|
"avg_n_trades": 307.6679992675781,
|
|
"cost": 0.0,
|
|
"mean_reward": -2.7668509483337402,
|
|
"n_episodes": 500,
|
|
"p05": -11.989750862121582,
|
|
"p50": -2.776402473449707,
|
|
"p95": 7.871026992797852,
|
|
"sharpe_annualised": -13.079078674316406,
|
|
"sharpe_per_episode": -0.45701998472213745,
|
|
"std_reward": 6.054113864898682,
|
|
"threshold": 0.10000000149011612,
|
|
"win_rate": 0.257999986410141
|
|
},
|
|
{
|
|
"avg_n_trades": 313.0580139160156,
|
|
"cost": 0.0625,
|
|
"mean_reward": -8.025443077087402,
|
|
"n_episodes": 500,
|
|
"p05": -20.223373413085938,
|
|
"p50": -7.3301496505737305,
|
|
"p95": 2.120025396347046,
|
|
"sharpe_annualised": -33.09466552734375,
|
|
"sharpe_per_episode": -1.156421184539795,
|
|
"std_reward": 6.939896583557129,
|
|
"threshold": 0.10000000149011612,
|
|
"win_rate": 0.09000000357627869
|
|
},
|
|
{
|
|
"avg_n_trades": 312.7879943847656,
|
|
"cost": 0.125,
|
|
"mean_reward": -13.201777458190918,
|
|
"n_episodes": 500,
|
|
"p05": -27.572002410888672,
|
|
"p50": -11.809425354003906,
|
|
"p95": -1.6250247955322266,
|
|
"sharpe_annualised": -45.03886795043945,
|
|
"sharpe_per_episode": -1.573785424232483,
|
|
"std_reward": 8.3885498046875,
|
|
"threshold": 0.10000000149011612,
|
|
"win_rate": 0.03799999877810478
|
|
},
|
|
{
|
|
"avg_n_trades": 309.92401123046875,
|
|
"cost": 0.25,
|
|
"mean_reward": -23.745981216430664,
|
|
"n_episodes": 500,
|
|
"p05": -43.5518913269043,
|
|
"p50": -22.692001342773438,
|
|
"p95": -7.84235143661499,
|
|
"sharpe_annualised": -57.198463439941406,
|
|
"sharpe_per_episode": -1.998676061630249,
|
|
"std_reward": 11.880855560302734,
|
|
"threshold": 0.10000000149011612,
|
|
"win_rate": 0.004000000189989805
|
|
},
|
|
{
|
|
"avg_n_trades": 317.7900085449219,
|
|
"cost": 0.5,
|
|
"mean_reward": -44.5992431640625,
|
|
"n_episodes": 500,
|
|
"p05": -77.12137603759766,
|
|
"p50": -44.13597869873047,
|
|
"p95": -14.920825004577637,
|
|
"sharpe_annualised": -60.17354202270508,
|
|
"sharpe_per_episode": -2.1026337146759033,
|
|
"std_reward": 21.211132049560547,
|
|
"threshold": 0.10000000149011612,
|
|
"win_rate": 0.0
|
|
},
|
|
{
|
|
"avg_n_trades": 214.0800018310547,
|
|
"cost": 0.0,
|
|
"mean_reward": -0.7500550150871277,
|
|
"n_episodes": 500,
|
|
"p05": -8.611875534057617,
|
|
"p50": -1.001124382019043,
|
|
"p95": 7.168798923492432,
|
|
"sharpe_annualised": -4.3168110847473145,
|
|
"sharpe_per_episode": -0.1508415937423706,
|
|
"std_reward": 4.972468376159668,
|
|
"threshold": 0.15000000596046448,
|
|
"win_rate": 0.3479999899864197
|
|
},
|
|
{
|
|
"avg_n_trades": 220.29600524902344,
|
|
"cost": 0.0625,
|
|
"mean_reward": -4.576065540313721,
|
|
"n_episodes": 500,
|
|
"p05": -15.124225616455078,
|
|
"p50": -3.609375,
|
|
"p95": 5.420872688293457,
|
|
"sharpe_annualised": -22.16614532470703,
|
|
"sharpe_per_episode": -0.774547815322876,
|
|
"std_reward": 5.908047676086426,
|
|
"threshold": 0.15000000596046448,
|
|
"win_rate": 0.16200000047683716
|
|
},
|
|
{
|
|
"avg_n_trades": 206.593994140625,
|
|
"cost": 0.125,
|
|
"mean_reward": -7.652109146118164,
|
|
"n_episodes": 500,
|
|
"p05": -20.91200065612793,
|
|
"p50": -5.522923946380615,
|
|
"p95": 0.7698264122009277,
|
|
"sharpe_annualised": -31.492902755737305,
|
|
"sharpe_per_episode": -1.100451111793518,
|
|
"std_reward": 6.953611373901367,
|
|
"threshold": 0.15000000596046448,
|
|
"win_rate": 0.08399999886751175
|
|
},
|
|
{
|
|
"avg_n_trades": 207.1020050048828,
|
|
"cost": 0.25,
|
|
"mean_reward": -14.569986343383789,
|
|
"n_episodes": 500,
|
|
"p05": -31.593997955322266,
|
|
"p50": -11.627604484558105,
|
|
"p95": -3.4181251525878906,
|
|
"sharpe_annualised": -42.324275970458984,
|
|
"sharpe_per_episode": -1.478929877281189,
|
|
"std_reward": 9.85170841217041,
|
|
"threshold": 0.15000000596046448,
|
|
"win_rate": 0.014000000432133675
|
|
},
|
|
{
|
|
"avg_n_trades": 212.37600708007812,
|
|
"cost": 0.5,
|
|
"mean_reward": -29.330257415771484,
|
|
"n_episodes": 500,
|
|
"p05": -61.26882553100586,
|
|
"p50": -24.778127670288086,
|
|
"p95": -7.954624652862549,
|
|
"sharpe_annualised": -46.668235778808594,
|
|
"sharpe_per_episode": -1.6307201385498047,
|
|
"std_reward": 17.98607635498047,
|
|
"threshold": 0.15000000596046448,
|
|
"win_rate": 0.0
|
|
},
|
|
{
|
|
"avg_n_trades": 133.64199829101562,
|
|
"cost": 0.0,
|
|
"mean_reward": 0.8351230621337891,
|
|
"n_episodes": 500,
|
|
"p05": -4.833250522613525,
|
|
"p50": -0.04905200004577637,
|
|
"p95": 9.4207763671875,
|
|
"sharpe_annualised": 5.84094762802124,
|
|
"sharpe_per_episode": 0.20409922301769257,
|
|
"std_reward": 4.091750144958496,
|
|
"threshold": 0.20000000298023224,
|
|
"win_rate": 0.49000000953674316
|
|
},
|
|
{
|
|
"avg_n_trades": 130.7899932861328,
|
|
"cost": 0.0625,
|
|
"mean_reward": -1.5587923526763916,
|
|
"n_episodes": 500,
|
|
"p05": -8.187274932861328,
|
|
"p50": -1.694624423980713,
|
|
"p95": 5.250924110412598,
|
|
"sharpe_annualised": -10.926456451416016,
|
|
"sharpe_per_episode": -0.3818012773990631,
|
|
"std_reward": 4.082732200622559,
|
|
"threshold": 0.20000000298023224,
|
|
"win_rate": 0.2840000092983246
|
|
},
|
|
{
|
|
"avg_n_trades": 132.32000732421875,
|
|
"cost": 0.125,
|
|
"mean_reward": -3.9061996936798096,
|
|
"n_episodes": 500,
|
|
"p05": -11.645946502685547,
|
|
"p50": -3.379124402999878,
|
|
"p95": 2.765799045562744,
|
|
"sharpe_annualised": -24.989980697631836,
|
|
"sharpe_per_episode": -0.8732205629348755,
|
|
"std_reward": 4.473325252532959,
|
|
"threshold": 0.20000000298023224,
|
|
"win_rate": 0.15600000321865082
|
|
},
|
|
{
|
|
"avg_n_trades": 131.50799560546875,
|
|
"cost": 0.25,
|
|
"mean_reward": -7.899728298187256,
|
|
"n_episodes": 500,
|
|
"p05": -18.36737632751465,
|
|
"p50": -6.697125434875488,
|
|
"p95": 0.27234911918640137,
|
|
"sharpe_annualised": -38.39303970336914,
|
|
"sharpe_per_episode": -1.3415614366531372,
|
|
"std_reward": 5.888458251953125,
|
|
"threshold": 0.20000000298023224,
|
|
"win_rate": 0.05999999865889549
|
|
},
|
|
{
|
|
"avg_n_trades": 128.50399780273438,
|
|
"cost": 0.5,
|
|
"mean_reward": -17.549320220947266,
|
|
"n_episodes": 500,
|
|
"p05": -35.324703216552734,
|
|
"p50": -15.349874496459961,
|
|
"p95": -5.963876247406006,
|
|
"sharpe_annualised": -55.83051681518555,
|
|
"sharpe_per_episode": -1.9508761167526245,
|
|
"std_reward": 8.995609283447266,
|
|
"threshold": 0.20000000298023224,
|
|
"win_rate": 0.0020000000949949026
|
|
},
|
|
{
|
|
"avg_n_trades": 98.94200134277344,
|
|
"cost": 0.0,
|
|
"mean_reward": 1.5531558990478516,
|
|
"n_episodes": 500,
|
|
"p05": -3.022125720977783,
|
|
"p50": 0.3488759994506836,
|
|
"p95": 10.139877319335938,
|
|
"sharpe_annualised": 10.39977741241455,
|
|
"sharpe_per_episode": 0.36339762806892395,
|
|
"std_reward": 4.273984909057617,
|
|
"threshold": 0.25,
|
|
"win_rate": 0.5519999861717224
|
|
},
|
|
{
|
|
"avg_n_trades": 98.55400085449219,
|
|
"cost": 0.0625,
|
|
"mean_reward": -0.1503140926361084,
|
|
"n_episodes": 500,
|
|
"p05": -6.051650524139404,
|
|
"p50": -0.8751249313354492,
|
|
"p95": 7.868124485015869,
|
|
"sharpe_annualised": -0.972659170627594,
|
|
"sharpe_per_episode": -0.033987462520599365,
|
|
"std_reward": 4.422633647918701,
|
|
"threshold": 0.25,
|
|
"win_rate": 0.36800000071525574
|
|
},
|
|
{
|
|
"avg_n_trades": 95.23999786376953,
|
|
"cost": 0.125,
|
|
"mean_reward": -1.923614263534546,
|
|
"n_episodes": 500,
|
|
"p05": -7.974623680114746,
|
|
"p50": -2.276874542236328,
|
|
"p95": 5.843000888824463,
|
|
"sharpe_annualised": -13.825085639953613,
|
|
"sharpe_per_episode": -0.48308759927749634,
|
|
"std_reward": 3.9819159507751465,
|
|
"threshold": 0.25,
|
|
"win_rate": 0.20600000023841858
|
|
},
|
|
{
|
|
"avg_n_trades": 97.05400085449219,
|
|
"cost": 0.25,
|
|
"mean_reward": -5.656537055969238,
|
|
"n_episodes": 500,
|
|
"p05": -13.8267240524292,
|
|
"p50": -5.272023677825928,
|
|
"p95": 1.1986992359161377,
|
|
"sharpe_annualised": -35.41947937011719,
|
|
"sharpe_per_episode": -1.2376567125320435,
|
|
"std_reward": 4.57036018371582,
|
|
"threshold": 0.25,
|
|
"win_rate": 0.08399999886751175
|
|
},
|
|
{
|
|
"avg_n_trades": 96.16999816894531,
|
|
"cost": 0.5,
|
|
"mean_reward": -12.691283226013184,
|
|
"n_episodes": 500,
|
|
"p05": -23.98550033569336,
|
|
"p50": -11.424251556396484,
|
|
"p95": -4.219249248504639,
|
|
"sharpe_annualised": -58.172401428222656,
|
|
"sharpe_per_episode": -2.032708168029785,
|
|
"std_reward": 6.243533611297607,
|
|
"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
|
|
} |