[object Object]

← back to Bertha

chore(kalshi-dash): update 1 file (.js) [+22]

a460d1b0099f2ad77c627433b8b943c14b25c47f · 2026-02-25 01:34:01 +0000 · DW Commit Agent

Files touched

Diff

commit a460d1b0099f2ad77c627433b8b943c14b25c47f
Author: DW Commit Agent <commit-agent@dw-agents.com>
Date:   Wed Feb 25 01:34:01 2026 +0000

    chore(kalshi-dash): update 1 file (.js) [+22]
---
 kalshi-dash/server.js | 22 ++++++++++++++++++++++
 1 file changed, 22 insertions(+)

diff --git a/kalshi-dash/server.js b/kalshi-dash/server.js
index 7e03364..971a86e 100644
--- a/kalshi-dash/server.js
+++ b/kalshi-dash/server.js
@@ -6850,6 +6850,28 @@ async function autonomousScan() {
     } catch (e) { console.log('[Ken] Momentum query error:', e.message); }
     cachedMomentumMap = momentumMap; // Update shared cache for signal pipeline
 
+    // ═══ INSTANT SLACK ALERT: Major Price Movements (>=10¢ in 2h or >=15¢ in 6h) ═══
+    try {
+      const bigMovers = Object.entries(momentumMap)
+        .filter(([, m]) => Math.abs(m.delta_2h) >= 10 || Math.abs(m.delta_6h) >= 15)
+        .sort((a, b) => Math.abs(b[1].delta_2h) - Math.abs(a[1].delta_2h));
+      if (bigMovers.length > 0) {
+        const moverLines = bigMovers.slice(0, 8).map(([ticker, m]) => {
+          const mkt = activeMarkets.find(am => am.ticker === ticker);
+          const title = mkt ? mkt.title : ticker;
+          const d2 = m.delta_2h > 0 ? `+${m.delta_2h}` : `${m.delta_2h}`;
+          const d6 = m.delta_6h > 0 ? `+${m.delta_6h}` : `${m.delta_6h}`;
+          const icon = Math.abs(m.delta_2h) >= 10 ? (m.delta_2h > 0 ? ':chart_with_upwards_trend:' : ':chart_with_downwards_trend:') : ':left_right_arrow:';
+          const et = mkt?.event_ticker || ticker?.replace(/-[^-]+$/, '') || ticker;
+          const link = `<https://kalshi.com/markets/${et}/${ticker}|View>`;
+          return `  ${icon} *${title}*\n     2h: *${d2}¢* | 6h: *${d6}¢* | Now: ${mkt?.last_price || '?'}¢ | ${link}`;
+        }).join('\n');
+        const timeStr = new Date().toLocaleString('en-US', { timeZone: 'America/Los_Angeles', hour: 'numeric', minute: '2-digit', hour12: true });
+        await sendSlack(`:rotating_light: *Major Price Movements* (${timeStr} PT)\n_${bigMovers.length} market(s) moved 10+¢ in 2h or 15+¢ in 6h_\n\n${moverLines}\n\nDashboard: http://45.61.58.125:7810`);
+        console.log(`[Ken] SLACK ALERT: ${bigMovers.length} major price movement(s) sent`);
+      }
+    } catch (e) { console.log('[Ken] Price movement alert error:', e.message); }
+
     for (const m of activeMarkets.slice(0, 75)) {
       const spread = m.yes_ask - m.yes_bid;
       const noPrice = 100 - m.yes_ask;

← a77b8b4 chore(alshi-dash): update 1 file (.js) [+147]  ·  back to Bertha  ·  chore(alshi-dash): update 1 file (.js) [+16/-13] 8e9ef18 →