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>
447 lines
13 KiB
JSON
447 lines
13 KiB
JSON
{
|
|
"bins": [
|
|
{
|
|
"avg_n_trades": 409.4419860839844,
|
|
"cost": 0.0,
|
|
"mean_reward": -30.64391326904297,
|
|
"n_episodes": 500,
|
|
"p05": -49.61526870727539,
|
|
"p50": -28.566925048828125,
|
|
"p95": -18.450275421142578,
|
|
"sharpe_annualised": -77.86469268798828,
|
|
"sharpe_per_episode": -2.7208125591278076,
|
|
"std_reward": 11.262779235839844,
|
|
"threshold": 0.0,
|
|
"win_rate": 0.0
|
|
},
|
|
{
|
|
"avg_n_trades": 407.4179992675781,
|
|
"cost": 0.0625,
|
|
"mean_reward": -45.718017578125,
|
|
"n_episodes": 500,
|
|
"p05": -64.58588409423828,
|
|
"p50": -44.32868576049805,
|
|
"p95": -31.426769256591797,
|
|
"sharpe_annualised": -126.78475189208984,
|
|
"sharpe_per_episode": -4.430217742919922,
|
|
"std_reward": 10.319586753845215,
|
|
"threshold": 0.0,
|
|
"win_rate": 0.0
|
|
},
|
|
{
|
|
"avg_n_trades": 412.2200012207031,
|
|
"cost": 0.125,
|
|
"mean_reward": -62.28627014160156,
|
|
"n_episodes": 500,
|
|
"p05": -87.70376586914062,
|
|
"p50": -59.780799865722656,
|
|
"p95": -41.51686477661133,
|
|
"sharpe_annualised": -125.80178833007812,
|
|
"sharpe_per_episode": -4.395870208740234,
|
|
"std_reward": 14.169269561767578,
|
|
"threshold": 0.0,
|
|
"win_rate": 0.0
|
|
},
|
|
{
|
|
"avg_n_trades": 412.1180114746094,
|
|
"cost": 0.25,
|
|
"mean_reward": -94.7795181274414,
|
|
"n_episodes": 500,
|
|
"p05": -125.90235137939453,
|
|
"p50": -93.9426498413086,
|
|
"p95": -67.9682388305664,
|
|
"sharpe_annualised": -141.44520568847656,
|
|
"sharpe_per_episode": -4.942495346069336,
|
|
"std_reward": 19.176450729370117,
|
|
"threshold": 0.0,
|
|
"win_rate": 0.0
|
|
},
|
|
{
|
|
"avg_n_trades": 412.614013671875,
|
|
"cost": 0.5,
|
|
"mean_reward": -159.3415069580078,
|
|
"n_episodes": 500,
|
|
"p05": -202.5274200439453,
|
|
"p50": -165.60362243652344,
|
|
"p95": -108.91909790039062,
|
|
"sharpe_annualised": -150.140380859375,
|
|
"sharpe_per_episode": -5.246329307556152,
|
|
"std_reward": 30.371997833251953,
|
|
"threshold": 0.0,
|
|
"win_rate": 0.0
|
|
},
|
|
{
|
|
"avg_n_trades": 346.38800048828125,
|
|
"cost": 0.0,
|
|
"mean_reward": -26.021240234375,
|
|
"n_episodes": 500,
|
|
"p05": -42.303611755371094,
|
|
"p50": -23.978374481201172,
|
|
"p95": -13.484901428222656,
|
|
"sharpe_annualised": -78.6505355834961,
|
|
"sharpe_per_episode": -2.748272180557251,
|
|
"std_reward": 9.468217849731445,
|
|
"threshold": 0.05000000074505806,
|
|
"win_rate": 0.0020000000949949026
|
|
},
|
|
{
|
|
"avg_n_trades": 345.72198486328125,
|
|
"cost": 0.0625,
|
|
"mean_reward": -39.795684814453125,
|
|
"n_episodes": 500,
|
|
"p05": -60.49996566772461,
|
|
"p50": -36.7501220703125,
|
|
"p95": -25.743999481201172,
|
|
"sharpe_annualised": -99.63706970214844,
|
|
"sharpe_per_episode": -3.4816009998321533,
|
|
"std_reward": 11.430282592773438,
|
|
"threshold": 0.05000000074505806,
|
|
"win_rate": 0.0
|
|
},
|
|
{
|
|
"avg_n_trades": 343.6199951171875,
|
|
"cost": 0.125,
|
|
"mean_reward": -53.896480560302734,
|
|
"n_episodes": 500,
|
|
"p05": -81.64607238769531,
|
|
"p50": -49.21561813354492,
|
|
"p95": -34.734275817871094,
|
|
"sharpe_annualised": -98.90637969970703,
|
|
"sharpe_per_episode": -3.456068515777588,
|
|
"std_reward": 15.59473705291748,
|
|
"threshold": 0.05000000074505806,
|
|
"win_rate": 0.0
|
|
},
|
|
{
|
|
"avg_n_trades": 342.9639892578125,
|
|
"cost": 0.25,
|
|
"mean_reward": -79.68690490722656,
|
|
"n_episodes": 500,
|
|
"p05": -113.12445068359375,
|
|
"p50": -73.63372802734375,
|
|
"p95": -55.00608825683594,
|
|
"sharpe_annualised": -116.19927978515625,
|
|
"sharpe_per_episode": -4.060331344604492,
|
|
"std_reward": 19.625713348388672,
|
|
"threshold": 0.05000000074505806,
|
|
"win_rate": 0.0
|
|
},
|
|
{
|
|
"avg_n_trades": 346.8240051269531,
|
|
"cost": 0.5,
|
|
"mean_reward": -135.82601928710938,
|
|
"n_episodes": 500,
|
|
"p05": -184.07630920410156,
|
|
"p50": -126.77576446533203,
|
|
"p95": -91.21710968017578,
|
|
"sharpe_annualised": -118.39791107177734,
|
|
"sharpe_per_episode": -4.137157917022705,
|
|
"std_reward": 32.83075714111328,
|
|
"threshold": 0.05000000074505806,
|
|
"win_rate": 0.0
|
|
},
|
|
{
|
|
"avg_n_trades": 283.99200439453125,
|
|
"cost": 0.0,
|
|
"mean_reward": -22.65932846069336,
|
|
"n_episodes": 500,
|
|
"p05": -43.386817932128906,
|
|
"p50": -20.47347068786621,
|
|
"p95": -9.256776809692383,
|
|
"sharpe_annualised": -60.726375579833984,
|
|
"sharpe_per_episode": -2.1219513416290283,
|
|
"std_reward": 10.678532600402832,
|
|
"threshold": 0.10000000149011612,
|
|
"win_rate": 0.0
|
|
},
|
|
{
|
|
"avg_n_trades": 280.16400146484375,
|
|
"cost": 0.0625,
|
|
"mean_reward": -33.22947311401367,
|
|
"n_episodes": 500,
|
|
"p05": -57.53879165649414,
|
|
"p50": -31.169370651245117,
|
|
"p95": -16.533370971679688,
|
|
"sharpe_annualised": -72.24711608886719,
|
|
"sharpe_per_episode": -2.5245184898376465,
|
|
"std_reward": 13.162697792053223,
|
|
"threshold": 0.10000000149011612,
|
|
"win_rate": 0.0
|
|
},
|
|
{
|
|
"avg_n_trades": 274.6679992675781,
|
|
"cost": 0.125,
|
|
"mean_reward": -42.85700225830078,
|
|
"n_episodes": 500,
|
|
"p05": -70.168212890625,
|
|
"p50": -40.32282257080078,
|
|
"p95": -22.919273376464844,
|
|
"sharpe_annualised": -79.69395446777344,
|
|
"sharpe_per_episode": -2.7847321033477783,
|
|
"std_reward": 15.38999080657959,
|
|
"threshold": 0.10000000149011612,
|
|
"win_rate": 0.0020000000949949026
|
|
},
|
|
{
|
|
"avg_n_trades": 274.9219970703125,
|
|
"cost": 0.25,
|
|
"mean_reward": -64.72478485107422,
|
|
"n_episodes": 500,
|
|
"p05": -101.20083618164062,
|
|
"p50": -61.02626419067383,
|
|
"p95": -35.71025085449219,
|
|
"sharpe_annualised": -84.47412872314453,
|
|
"sharpe_per_episode": -2.9517648220062256,
|
|
"std_reward": 21.9274845123291,
|
|
"threshold": 0.10000000149011612,
|
|
"win_rate": 0.0
|
|
},
|
|
{
|
|
"avg_n_trades": 275.6679992675781,
|
|
"cost": 0.5,
|
|
"mean_reward": -108.99763488769531,
|
|
"n_episodes": 500,
|
|
"p05": -166.28961181640625,
|
|
"p50": -104.48725128173828,
|
|
"p95": -57.43674850463867,
|
|
"sharpe_annualised": -82.64939880371094,
|
|
"sharpe_per_episode": -2.8880035877227783,
|
|
"std_reward": 37.74151611328125,
|
|
"threshold": 0.10000000149011612,
|
|
"win_rate": 0.0
|
|
},
|
|
{
|
|
"avg_n_trades": 215.17799377441406,
|
|
"cost": 0.0,
|
|
"mean_reward": -17.607177734375,
|
|
"n_episodes": 500,
|
|
"p05": -35.043479919433594,
|
|
"p50": -15.50200080871582,
|
|
"p95": -5.586098670959473,
|
|
"sharpe_annualised": -49.608726501464844,
|
|
"sharpe_per_episode": -1.7334692478179932,
|
|
"std_reward": 10.157191276550293,
|
|
"threshold": 0.15000000596046448,
|
|
"win_rate": 0.017999999225139618
|
|
},
|
|
{
|
|
"avg_n_trades": 209.697998046875,
|
|
"cost": 0.0625,
|
|
"mean_reward": -26.11052131652832,
|
|
"n_episodes": 500,
|
|
"p05": -48.8406982421875,
|
|
"p50": -22.618318557739258,
|
|
"p95": -10.570127487182617,
|
|
"sharpe_annualised": -57.65428161621094,
|
|
"sharpe_per_episode": -2.014603614807129,
|
|
"std_reward": 12.960623741149902,
|
|
"threshold": 0.15000000596046448,
|
|
"win_rate": 0.004000000189989805
|
|
},
|
|
{
|
|
"avg_n_trades": 217.76600646972656,
|
|
"cost": 0.125,
|
|
"mean_reward": -35.587677001953125,
|
|
"n_episodes": 500,
|
|
"p05": -62.99174499511719,
|
|
"p50": -31.81800079345703,
|
|
"p95": -16.088119506835938,
|
|
"sharpe_annualised": -66.77113342285156,
|
|
"sharpe_per_episode": -2.33317232131958,
|
|
"std_reward": 15.252914428710938,
|
|
"threshold": 0.15000000596046448,
|
|
"win_rate": 0.0020000000949949026
|
|
},
|
|
{
|
|
"avg_n_trades": 213.79600524902344,
|
|
"cost": 0.25,
|
|
"mean_reward": -51.22513961791992,
|
|
"n_episodes": 500,
|
|
"p05": -86.71883392333984,
|
|
"p50": -47.09474563598633,
|
|
"p95": -25.441743850708008,
|
|
"sharpe_annualised": -71.61820220947266,
|
|
"sharpe_per_episode": -2.502542495727539,
|
|
"std_reward": 20.469240188598633,
|
|
"threshold": 0.15000000596046448,
|
|
"win_rate": 0.0
|
|
},
|
|
{
|
|
"avg_n_trades": 216.11000061035156,
|
|
"cost": 0.5,
|
|
"mean_reward": -85.81346893310547,
|
|
"n_episodes": 500,
|
|
"p05": -140.97569274902344,
|
|
"p50": -81.15174102783203,
|
|
"p95": -41.56011962890625,
|
|
"sharpe_annualised": -76.13468933105469,
|
|
"sharpe_per_episode": -2.6603612899780273,
|
|
"std_reward": 32.25632095336914,
|
|
"threshold": 0.15000000596046448,
|
|
"win_rate": 0.0
|
|
},
|
|
{
|
|
"avg_n_trades": 161.28199768066406,
|
|
"cost": 0.0,
|
|
"mean_reward": -14.621756553649902,
|
|
"n_episodes": 500,
|
|
"p05": -34.215675354003906,
|
|
"p50": -11.45572280883789,
|
|
"p95": -4.464199542999268,
|
|
"sharpe_annualised": -42.86232376098633,
|
|
"sharpe_per_episode": -1.4977308511734009,
|
|
"std_reward": 9.762606620788574,
|
|
"threshold": 0.20000000298023224,
|
|
"win_rate": 0.014000000432133675
|
|
},
|
|
{
|
|
"avg_n_trades": 165.6179962158203,
|
|
"cost": 0.0625,
|
|
"mean_reward": -21.606536865234375,
|
|
"n_episodes": 500,
|
|
"p05": -42.06482696533203,
|
|
"p50": -18.75684356689453,
|
|
"p95": -8.337549209594727,
|
|
"sharpe_annualised": -55.583866119384766,
|
|
"sharpe_per_episode": -1.9422574043273926,
|
|
"std_reward": 11.124444961547852,
|
|
"threshold": 0.20000000298023224,
|
|
"win_rate": 0.00800000037997961
|
|
},
|
|
{
|
|
"avg_n_trades": 158.93600463867188,
|
|
"cost": 0.125,
|
|
"mean_reward": -26.25715446472168,
|
|
"n_episodes": 500,
|
|
"p05": -49.11092758178711,
|
|
"p50": -23.162250518798828,
|
|
"p95": -11.844600677490234,
|
|
"sharpe_annualised": -63.4965705871582,
|
|
"sharpe_per_episode": -2.218749761581421,
|
|
"std_reward": 11.834211349487305,
|
|
"threshold": 0.20000000298023224,
|
|
"win_rate": 0.0
|
|
},
|
|
{
|
|
"avg_n_trades": 161.45599365234375,
|
|
"cost": 0.25,
|
|
"mean_reward": -39.04631805419922,
|
|
"n_episodes": 500,
|
|
"p05": -68.93614959716797,
|
|
"p50": -34.38017272949219,
|
|
"p95": -20.195877075195312,
|
|
"sharpe_annualised": -70.44474029541016,
|
|
"sharpe_per_episode": -2.461538314819336,
|
|
"std_reward": 15.862567901611328,
|
|
"threshold": 0.20000000298023224,
|
|
"win_rate": 0.0
|
|
},
|
|
{
|
|
"avg_n_trades": 163.34800720214844,
|
|
"cost": 0.5,
|
|
"mean_reward": -63.5859375,
|
|
"n_episodes": 500,
|
|
"p05": -102.9427719116211,
|
|
"p50": -58.92830276489258,
|
|
"p95": -32.09709548950195,
|
|
"sharpe_annualised": -75.88227844238281,
|
|
"sharpe_per_episode": -2.6515414714813232,
|
|
"std_reward": 23.980743408203125,
|
|
"threshold": 0.20000000298023224,
|
|
"win_rate": 0.0
|
|
},
|
|
{
|
|
"avg_n_trades": 134.08599853515625,
|
|
"cost": 0.0,
|
|
"mean_reward": -13.83078670501709,
|
|
"n_episodes": 500,
|
|
"p05": -36.201629638671875,
|
|
"p50": -10.920823097229004,
|
|
"p95": -2.622623920440674,
|
|
"sharpe_annualised": -37.462730407714844,
|
|
"sharpe_per_episode": -1.3090537786483765,
|
|
"std_reward": 10.565484046936035,
|
|
"threshold": 0.25,
|
|
"win_rate": 0.00800000037997961
|
|
},
|
|
{
|
|
"avg_n_trades": 136.51199340820312,
|
|
"cost": 0.0625,
|
|
"mean_reward": -18.66702651977539,
|
|
"n_episodes": 500,
|
|
"p05": -40.3795051574707,
|
|
"p50": -15.633600234985352,
|
|
"p95": -5.700125217437744,
|
|
"sharpe_annualised": -46.29603576660156,
|
|
"sharpe_per_episode": -1.6177144050598145,
|
|
"std_reward": 11.539135932922363,
|
|
"threshold": 0.25,
|
|
"win_rate": 0.004000000189989805
|
|
},
|
|
{
|
|
"avg_n_trades": 136.00399780273438,
|
|
"cost": 0.125,
|
|
"mean_reward": -22.70488739013672,
|
|
"n_episodes": 500,
|
|
"p05": -46.12636947631836,
|
|
"p50": -20.130022048950195,
|
|
"p95": -8.378849029541016,
|
|
"sharpe_annualised": -52.185447692871094,
|
|
"sharpe_per_episode": -1.8235070705413818,
|
|
"std_reward": 12.45121955871582,
|
|
"threshold": 0.25,
|
|
"win_rate": 0.004000000189989805
|
|
},
|
|
{
|
|
"avg_n_trades": 133.22999572753906,
|
|
"cost": 0.25,
|
|
"mean_reward": -31.63664436340332,
|
|
"n_episodes": 500,
|
|
"p05": -58.47060012817383,
|
|
"p50": -29.137378692626953,
|
|
"p95": -13.295875549316406,
|
|
"sharpe_annualised": -64.48110961914062,
|
|
"sharpe_per_episode": -2.253152370452881,
|
|
"std_reward": 14.041058540344238,
|
|
"threshold": 0.25,
|
|
"win_rate": 0.0
|
|
},
|
|
{
|
|
"avg_n_trades": 133.7779998779297,
|
|
"cost": 0.5,
|
|
"mean_reward": -49.41081619262695,
|
|
"n_episodes": 500,
|
|
"p05": -84.51933288574219,
|
|
"p50": -46.30955123901367,
|
|
"p95": -23.72110366821289,
|
|
"sharpe_annualised": -71.6323471069336,
|
|
"sharpe_per_episode": -2.5030367374420166,
|
|
"std_reward": 19.74034881591797,
|
|
"threshold": 0.25,
|
|
"win_rate": 0.0
|
|
}
|
|
],
|
|
"cost_grid": [
|
|
0.0,
|
|
0.0625,
|
|
0.125,
|
|
0.25,
|
|
0.5
|
|
],
|
|
"horizon": 600,
|
|
"n_allowed_actions": 4,
|
|
"n_eval_episodes": 500,
|
|
"n_train_episodes": 1000,
|
|
"phase": "E.3 Task 23 (2D sweep)",
|
|
"pruned_actions": true,
|
|
"threshold_grid": [
|
|
0.0,
|
|
0.05000000074505806,
|
|
0.10000000149011612,
|
|
0.15000000596046448,
|
|
0.20000000298023224,
|
|
0.25
|
|
],
|
|
"train_cost": 0.0625,
|
|
"train_frac": 0.800000011920929
|
|
} |