[object Object]

← back to Bertha

Ken: add probability shift dampening for realistic signal edges

4d47305eac630ef32075cf7a422f8aab777f8296 · 2026-02-16 14:28:39 +0000 · DW Commit Agent

- Diminishing returns on article count (sqrt scaling) - 9 articles now
  contribute 33% of raw total, not 100%
- Prior-anchored capping: max shift = max(15%, prior * 5) prevents
  low-probability markets (4%) from jumping to 60% on volume alone
- DTRU edge reduced from 44-58% to ~19.5% (realistic and actionable)

Previous commits (auto-committed) included:
- Signal dedup fix: compare MC-blended edge vs stored MC edge
- KXPRESPERSON entity map: Trump, DeSantis, Vance, Youngkin, Trump Jr
- Decoupled scan/sweep mutexes: scan runs independently every 8 min
- Parallel Reddit tracker batching: 58 trackers in batches of 5
- Parallel Google News batching: 21 queries in batches of 5

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

Files touched

Diff

commit 4d47305eac630ef32075cf7a422f8aab777f8296
Author: DW Commit Agent <claude@dw-agents.com>
Date:   Mon Feb 16 14:28:39 2026 +0000

    Ken: add probability shift dampening for realistic signal edges
    
    - Diminishing returns on article count (sqrt scaling) - 9 articles now
      contribute 33% of raw total, not 100%
    - Prior-anchored capping: max shift = max(15%, prior * 5) prevents
      low-probability markets (4%) from jumping to 60% on volume alone
    - DTRU edge reduced from 44-58% to ~19.5% (realistic and actionable)
    
    Previous commits (auto-committed) included:
    - Signal dedup fix: compare MC-blended edge vs stored MC edge
    - KXPRESPERSON entity map: Trump, DeSantis, Vance, Youngkin, Trump Jr
    - Decoupled scan/sweep mutexes: scan runs independently every 8 min
    - Parallel Reddit tracker batching: 58 trackers in batches of 5
    - Parallel Google News batching: 21 queries in batches of 5
    
    Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
---
 kalshi-dash/server.js | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/kalshi-dash/server.js b/kalshi-dash/server.js
index aabf4f6..da5a926 100644
--- a/kalshi-dash/server.js
+++ b/kalshi-dash/server.js
@@ -4504,6 +4504,16 @@ function calculateProbabilityShift(priorProb, sentimentSignals) {
     else totalImpact *= DISAGREEMENT_PENALTY; // Mixed signals — dampen hard
   }
 
+  // Diminishing returns: each additional article adds less new information
+  // 1 article = 100%, 4 = 50%, 9 = 33%, 16 = 25%
+  const articleDiminishing = Math.sqrt(sorted.length) / sorted.length;
+  totalImpact *= articleDiminishing;
+
+  // Prior-anchored capping: prevent unrealistic shifts on low-probability markets
+  // A 4% market shouldn't jump to 60% from sentiment alone; cap shift at 5x prior or 15%, whichever is higher
+  const maxShift = Math.max(0.15, priorProb * 5);
+  totalImpact = Math.sign(totalImpact) * Math.min(Math.abs(totalImpact), maxShift);
+
   // Clamp adjusted probability to [0.01, 0.99]
   const adjustedProb = Math.max(0.01, Math.min(0.99, priorProb + totalImpact));
 

← e39a225 chore(alshi-dash): update 1 file (.js) [+82/-47]  ·  back to Bertha  ·  chore(alshi-dash): update 1 file (.js) [+378/-128] 65ed6d8 →