Fix category mapping and TotalTrades drift, plan traits/tiering (Teil D)
- MarketCategoryMapper: classify from question text (the Gamma /markets
endpoint delivers neither category nor event tags, so on-demand markets
had no signal at all), match short tokens on word boundaries ("eth" no
longer hits inside "whether", "pop" not inside "popular"), widen the
keyword lists across all categories.
- UpdateMarketFields: never overwrite a tag-derived category with an
uninformative "Other" from the on-demand path.
- PositionPnLEngine: sync Trader.TotalTrades to the actual replayed row
count — the worker-side increment counters drift (INSERT IGNORE,
deletions, historic imports) and produced Trades30d > TotalTrades.
- Tests: 14 new (mapper classification + word-boundary regression,
TotalTrades sync + Trades30d invariant, category update guard via
SQLite) — suite now 32 green + 1 skip.
- FIXPLAN Teil D for the larger rebuilds (AggregatedCount column,
TraderTraits heuristics, IngestMode tiering for ultra-HF traders).
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Fable 5
parent
940a99fec2
commit
d2f3ec2bd0
+15
-168
@@ -23,162 +23,7 @@ partial class MainForm
|
||||
statusStrip1 = new StatusStrip();
|
||||
label_apiRatelimit = new ToolStripStatusLabel();
|
||||
label_buildVersion = new ToolStripStatusLabel();
|
||||
tabControl1 = new TabControl();
|
||||
tabPage_terminal = new TabPage();
|
||||
rtb_terminal = new RichTextBox();
|
||||
tabPage2 = new TabPage();
|
||||
pg_settings = new PropertyGrid();
|
||||
menuStrip1 = new MenuStrip();
|
||||
filesToolStripMenuItem = new ToolStripMenuItem();
|
||||
editToolStripMenuItem = new ToolStripMenuItem();
|
||||
btn_logfolder = new ToolStripMenuItem();
|
||||
btn_openbrowser = new ToolStripMenuItem();
|
||||
developmentToolStripMenuItem = new ToolStripMenuItem();
|
||||
btn_dbReset = new ToolStripMenuItem();
|
||||
btn_syncmarkets = new ToolStripMenuItem();
|
||||
btn_dbUpdate = new ToolStripMenuItem();
|
||||
btn_recalcAll = new ToolStripMenuItem();
|
||||
toolStrip1.SuspendLayout();
|
||||
statusStrip1.SuspendLayout();
|
||||
tabControl1.SuspendLayout();
|
||||
tabPage_terminal.SuspendLayout();
|
||||
tabPage2.SuspendLayout();
|
||||
menuStrip1.SuspendLayout();
|
||||
SuspendLayout();
|
||||
//
|
||||
// toolStrip1
|
||||
//
|
||||
toolStrip1.ImageScalingSize = new Size(24, 24);
|
||||
toolStrip1.Items.AddRange(new ToolStripItem[] { btn_serverstart, btn_localWebserver });
|
||||
toolStrip1.Location = new Point(0, 33);
|
||||
toolStrip1.Name = "toolStrip1";
|
||||
toolStrip1.Size = new Size(1864, 34);
|
||||
toolStrip1.TabIndex = 0;
|
||||
//
|
||||
// btn_serverstart
|
||||
//
|
||||
btn_serverstart.ImageTransparentColor = Color.Magenta;
|
||||
btn_serverstart.Name = "btn_serverstart";
|
||||
btn_serverstart.Size = new Size(127, 29);
|
||||
btn_serverstart.Text = "▶ Start Server";
|
||||
//
|
||||
// btn_localWebserver
|
||||
//
|
||||
btn_localWebserver.ImageTransparentColor = Color.Magenta;
|
||||
btn_localWebserver.Name = "btn_localWebserver";
|
||||
btn_localWebserver.Size = new Size(161, 29);
|
||||
btn_localWebserver.Text = "▶ Start Webserver";
|
||||
//
|
||||
// statusStrip1
|
||||
//
|
||||
statusStrip1.ImageScalingSize = new Size(24, 24);
|
||||
statusStrip1.Items.AddRange(new ToolStripItem[] { label_apiRatelimit, label_buildVersion });
|
||||
statusStrip1.Location = new Point(0, 1000);
|
||||
statusStrip1.Name = "statusStrip1";
|
||||
statusStrip1.Size = new Size(1864, 32);
|
||||
statusStrip1.TabIndex = 1;
|
||||
//
|
||||
// label_apiRatelimit
|
||||
//
|
||||
label_apiRatelimit.Name = "label_apiRatelimit";
|
||||
label_apiRatelimit.Size = new Size(1782, 25);
|
||||
label_apiRatelimit.Spring = true;
|
||||
label_apiRatelimit.Text = "API: OK";
|
||||
label_apiRatelimit.TextAlign = ContentAlignment.MiddleLeft;
|
||||
//
|
||||
// label_buildVersion
|
||||
//
|
||||
label_buildVersion.Name = "label_buildVersion";
|
||||
label_buildVersion.Size = new Size(67, 25);
|
||||
label_buildVersion.Text = "Build: -";
|
||||
label_buildVersion.TextAlign = ContentAlignment.MiddleRight;
|
||||
//
|
||||
// tabControl1
|
||||
//
|
||||
tabControl1.Anchor = AnchorStyles.Top | AnchorStyles.Bottom | AnchorStyles.Left | AnchorStyles.Right;
|
||||
tabControl1.Controls.Add(tabPage_terminal);
|
||||
tabControl1.Controls.Add(tabPage2);
|
||||
tabControl1.Location = new Point(0, 61);
|
||||
tabControl1.Name = "tabControl1";
|
||||
tabControl1.SelectedIndex = 0;
|
||||
tabControl1.Size = new Size(1864, 946);
|
||||
tabControl1.TabIndex = 2;
|
||||
//
|
||||
// tabPage_terminal
|
||||
//
|
||||
tabPage_terminal.Controls.Add(rtb_terminal);
|
||||
tabPage_terminal.Location = new Point(4, 34);
|
||||
tabPage_terminal.Name = "tabPage_terminal";
|
||||
tabPage_terminal.Padding = new Padding(3);
|
||||
tabPage_terminal.Size = new Size(1856, 908);
|
||||
tabPage_terminal.TabIndex = 0;
|
||||
tabPage_terminal.Text = "Terminal";
|
||||
tabPage_terminal.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// rtb_terminal
|
||||
//
|
||||
rtb_terminal.Anchor = AnchorStyles.Top | AnchorStyles.Bottom | AnchorStyles.Left | AnchorStyles.Right;
|
||||
rtb_terminal.Location = new Point(3, 6);
|
||||
rtb_terminal.Name = "rtb_terminal";
|
||||
rtb_terminal.Size = new Size(1847, 896);
|
||||
rtb_terminal.TabIndex = 0;
|
||||
rtb_terminal.Text = "";
|
||||
//
|
||||
// tabPage2
|
||||
//
|
||||
tabPage2.Controls.Add(pg_settings);
|
||||
tabPage2.Location = new Point(4, 34);
|
||||
tabPage2.Name = "tabPage2";
|
||||
tabPage2.Padding = new Padding(3);
|
||||
tabPage2.Size = new Size(1856, 908);
|
||||
tabPage2.TabIndex = 1;
|
||||
tabPage2.Text = "Settings";
|
||||
tabPage2.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// pg_settings
|
||||
//
|
||||
pg_settings.Location = new Point(3, 6);
|
||||
pg_settings.Name = "pg_settings";
|
||||
pg_settings.Size = new Size(1850, 896);
|
||||
pg_settings.TabIndex = 0;
|
||||
//
|
||||
// menuStrip1
|
||||
//
|
||||
menuStrip1.ImageScalingSize = new Size(24, 24);
|
||||
menuStrip1.Items.AddRange(new ToolStripItem[] { filesToolStripMenuItem, editToolStripMenuItem, developmentToolStripMenuItem });
|
||||
menuStrip1.Location = new Point(0, 0);
|
||||
menuStrip1.Name = "menuStrip1";
|
||||
menuStrip1.Size = new Size(1864, 33);
|
||||
menuStrip1.TabIndex = 3;
|
||||
//
|
||||
// filesToolStripMenuItem
|
||||
//
|
||||
filesToolStripMenuItem.Name = "filesToolStripMenuItem";
|
||||
filesToolStripMenuItem.Size = new Size(62, 29);
|
||||
filesToolStripMenuItem.Text = "Files";
|
||||
//
|
||||
// editToolStripMenuItem
|
||||
//
|
||||
editToolStripMenuItem.DropDownItems.AddRange(new ToolStripItem[] { btn_logfolder, btn_openbrowser });
|
||||
editToolStripMenuItem.Name = "editToolStripMenuItem";
|
||||
editToolStripMenuItem.Size = new Size(58, 29);
|
||||
editToolStripMenuItem.Text = "Edit";
|
||||
//
|
||||
// btn_logfolder
|
||||
//
|
||||
btn_logfolder.Name = "btn_logfolder";
|
||||
btn_logfolder.Size = new Size(261, 34);
|
||||
btn_logfolder.Text = "Show Logfolder";
|
||||
btn_logfolder.Click += btn_logfolder_Click;
|
||||
//
|
||||
// btn_openbrowser
|
||||
toolStrip1 = new ToolStrip();
|
||||
btn_serverstart = new ToolStripButton();
|
||||
btn_localWebserver = new ToolStripButton();
|
||||
statusStrip1 = new StatusStrip();
|
||||
label_apiRatelimit = new ToolStripStatusLabel();
|
||||
label_dbSize = new ToolStripStatusLabel();
|
||||
label_buildVersion = new ToolStripStatusLabel();
|
||||
tabControl1 = new TabControl();
|
||||
tabPage_terminal = new TabPage();
|
||||
rtb_terminal = new RichTextBox();
|
||||
@@ -242,13 +87,6 @@ partial class MainForm
|
||||
label_apiRatelimit.Text = "API: OK";
|
||||
label_apiRatelimit.TextAlign = ContentAlignment.MiddleLeft;
|
||||
//
|
||||
// label_dbSize
|
||||
//
|
||||
label_dbSize.Name = "label_dbSize";
|
||||
label_dbSize.Size = new Size(150, 25);
|
||||
label_dbSize.Text = "DB Size: -";
|
||||
label_dbSize.TextAlign = ContentAlignment.MiddleRight;
|
||||
//
|
||||
// label_buildVersion
|
||||
//
|
||||
label_buildVersion.Name = "label_buildVersion";
|
||||
@@ -256,6 +94,13 @@ partial class MainForm
|
||||
label_buildVersion.Text = "Build: -";
|
||||
label_buildVersion.TextAlign = ContentAlignment.MiddleRight;
|
||||
//
|
||||
// label_dbSize
|
||||
//
|
||||
label_dbSize.Name = "label_dbSize";
|
||||
label_dbSize.Size = new Size(150, 25);
|
||||
label_dbSize.Text = "DB Size: -";
|
||||
label_dbSize.TextAlign = ContentAlignment.MiddleRight;
|
||||
//
|
||||
// tabControl1
|
||||
//
|
||||
tabControl1.Anchor = AnchorStyles.Top | AnchorStyles.Bottom | AnchorStyles.Left | AnchorStyles.Right;
|
||||
@@ -351,27 +196,27 @@ partial class MainForm
|
||||
// btn_dbReset
|
||||
//
|
||||
btn_dbReset.Name = "btn_dbReset";
|
||||
btn_dbReset.Size = new Size(270, 34);
|
||||
btn_dbReset.Size = new Size(286, 34);
|
||||
btn_dbReset.Text = "reset TradesDB";
|
||||
//
|
||||
// btn_syncmarkets
|
||||
//
|
||||
btn_syncmarkets.Name = "btn_syncmarkets";
|
||||
btn_syncmarkets.Size = new Size(270, 34);
|
||||
btn_syncmarkets.Size = new Size(286, 34);
|
||||
btn_syncmarkets.Text = "Sync Markets";
|
||||
btn_syncmarkets.Click += syncMarketsaToolStripMenuItem_Click;
|
||||
//
|
||||
// btn_dbUpdate
|
||||
//
|
||||
btn_dbUpdate.Name = "btn_dbUpdate";
|
||||
btn_dbUpdate.Size = new Size(270, 34);
|
||||
btn_dbUpdate.Size = new Size(286, 34);
|
||||
btn_dbUpdate.Text = "UpdateDB";
|
||||
btn_dbUpdate.Click += btn_dbUpdate_Click;
|
||||
//
|
||||
//
|
||||
// btn_recalcAll
|
||||
//
|
||||
//
|
||||
btn_recalcAll.Name = "btn_recalcAll";
|
||||
btn_recalcAll.Size = new Size(270, 34);
|
||||
btn_recalcAll.Size = new Size(286, 34);
|
||||
btn_recalcAll.Text = "Recalculate All Traders";
|
||||
btn_recalcAll.Click += btn_recalcAll_Click;
|
||||
//
|
||||
@@ -385,6 +230,8 @@ partial class MainForm
|
||||
Controls.Add(toolStrip1);
|
||||
Controls.Add(menuStrip1);
|
||||
MainMenuStrip = menuStrip1;
|
||||
MaximumSize = new Size(1886, 1088);
|
||||
MinimumSize = new Size(1886, 1088);
|
||||
Name = "MainForm";
|
||||
Text = "Predictalytics";
|
||||
toolStrip1.ResumeLayout(false);
|
||||
|
||||
Reference in New Issue
Block a user