@newyorkcompute/kalshi-tui 0.3.0 → 0.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * Orderbook Component
3
- * Visual depth chart showing bids and asks with spread indicator
3
+ * Visual depth chart showing bids and asks with enhanced market data
4
4
  */
5
5
  interface OrderbookData {
6
6
  yes: [number, number][];
@@ -1 +1 @@
1
- {"version":3,"file":"Orderbook.d.ts","sourceRoot":"","sources":["../../src/components/Orderbook.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAUH,UAAU,aAAa;IACrB,GAAG,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC;IACxB,EAAE,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC;CACxB;AAED,UAAU,cAAc;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,UAAU,cAAc;IACtB,MAAM,EAAE,cAAc,GAAG,IAAI,CAAC;IAC9B,SAAS,EAAE,aAAa,GAAG,IAAI,CAAC;IAChC,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,wBAAgB,SAAS,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,cAAc,2CAiHtE"}
1
+ {"version":3,"file":"Orderbook.d.ts","sourceRoot":"","sources":["../../src/components/Orderbook.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAUH,UAAU,aAAa;IACrB,GAAG,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC;IACxB,EAAE,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC;CACxB;AAED,UAAU,cAAc;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,UAAU,cAAc;IACtB,MAAM,EAAE,cAAc,GAAG,IAAI,CAAC;IAC9B,SAAS,EAAE,aAAa,GAAG,IAAI,CAAC;IAChC,MAAM,EAAE,MAAM,CAAC;CAChB;AA0CD,wBAAgB,SAAS,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,cAAc,2CAwJtE"}
@@ -1,32 +1,82 @@
1
- import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
1
+ import { jsxs as _jsxs, jsx as _jsx, Fragment as _Fragment } from "react/jsx-runtime";
2
2
  /**
3
3
  * Orderbook Component
4
- * Visual depth chart showing bids and asks with spread indicator
4
+ * Visual depth chart showing bids and asks with enhanced market data
5
5
  */
6
6
  import { Box, Text } from 'ink';
7
- import { formatExpiry, formatVolume, formatPriceDecimal, calculateSpread } from '../utils.js';
7
+ import { formatExpiry, formatVolume } from '../utils.js';
8
+ // Number of price levels to show
9
+ const LEVELS_TO_SHOW = 8;
10
+ /**
11
+ * Format price with proper decimal places
12
+ */
13
+ function formatPrice(cents) {
14
+ if (cents >= 1) {
15
+ return `${cents.toFixed(2)}¢`;
16
+ }
17
+ return `${cents.toFixed(3)}¢`;
18
+ }
19
+ /**
20
+ * Format dollar value
21
+ */
22
+ function formatDollarValue(cents, quantity) {
23
+ const dollars = (cents * quantity) / 100;
24
+ if (dollars >= 1000) {
25
+ return `$${(dollars / 1000).toFixed(1)}K`;
26
+ }
27
+ if (dollars >= 1) {
28
+ return `$${dollars.toFixed(0)}`;
29
+ }
30
+ return `$${dollars.toFixed(2)}`;
31
+ }
32
+ /**
33
+ * Format quantity with K suffix
34
+ */
35
+ function formatQty(qty) {
36
+ if (qty >= 10000) {
37
+ return `${(qty / 1000).toFixed(1)}K`;
38
+ }
39
+ if (qty >= 1000) {
40
+ return `${(qty / 1000).toFixed(1)}K`;
41
+ }
42
+ return `${qty}`;
43
+ }
8
44
  export function Orderbook({ market, orderbook, height }) {
9
45
  // Parse orderbook into asks (no side, converted to YES equivalent) and bids (yes side)
10
46
  const asks = (orderbook?.no ?? [])
11
- .slice(0, 5)
47
+ .slice(0, LEVELS_TO_SHOW)
12
48
  .map(([price, qty]) => ({ price: 100 - price, quantity: qty }))
13
49
  .sort((a, b) => b.price - a.price);
14
50
  const bids = (orderbook?.yes ?? [])
15
- .slice(0, 5)
51
+ .slice(0, LEVELS_TO_SHOW)
16
52
  .map(([price, qty]) => ({ price, quantity: qty }))
17
53
  .sort((a, b) => b.price - a.price);
18
- // Calculate spread
54
+ // Calculate metrics
19
55
  const bestAsk = asks.length > 0 ? Math.min(...asks.map(a => a.price)) : null;
20
56
  const bestBid = bids.length > 0 ? Math.max(...bids.map(b => b.price)) : null;
21
- const spread = calculateSpread(bestBid, bestAsk);
57
+ const spread = bestAsk !== null && bestBid !== null ? bestAsk - bestBid : null;
58
+ const midPrice = bestAsk !== null && bestBid !== null ? (bestAsk + bestBid) / 2 : null;
59
+ // Total depth
60
+ const totalAskQty = asks.reduce((sum, l) => sum + l.quantity, 0);
61
+ const totalBidQty = bids.reduce((sum, l) => sum + l.quantity, 0);
62
+ // Imbalance: >1 means more buyers (bullish), <1 means more sellers (bearish)
63
+ const imbalance = totalAskQty > 0 ? totalBidQty / totalAskQty : 0;
64
+ const imbalanceText = imbalance > 1.2 ? 'buyers' : imbalance < 0.8 ? 'sellers' : 'neutral';
65
+ const imbalanceColor = imbalance > 1.2 ? 'green' : imbalance < 0.8 ? 'red' : 'gray';
22
66
  // Calculate max quantity for bar scaling
23
67
  const maxQty = Math.max(...asks.map(l => l.quantity), ...bids.map(l => l.quantity), 1);
24
- const renderBar = (qty, color, maxWidth = 20) => {
68
+ const renderBar = (qty, color, maxWidth = 15) => {
25
69
  const barLength = Math.min(Math.floor((qty / maxQty) * maxWidth), maxWidth);
26
- return _jsx(Text, { color: color, children: '█'.repeat(barLength) });
70
+ return _jsxs(Text, { color: color, children: ['█'.repeat(barLength), '░'.repeat(maxWidth - barLength)] });
27
71
  };
28
72
  const expiry = formatExpiry(market?.close_time);
29
73
  const volume = formatVolume(market?.volume);
30
- return (_jsxs(Box, { flexDirection: "column", borderStyle: "single", borderColor: "gray", height: height, width: "100%", children: [_jsxs(Box, { paddingX: 1, flexDirection: "column", children: [_jsxs(Box, { children: [_jsx(Text, { bold: true, children: " ORDERBOOK" }), _jsxs(Text, { color: "gray", children: [": ", market?.ticker || 'Select a market'] })] }), market?.title && (_jsxs(Text, { color: "cyan", wrap: "truncate", children: [market.title.slice(0, 50), market.title.length > 50 ? '…' : ''] })), market && (_jsxs(Box, { children: [expiry && (_jsxs(Text, { color: "yellow", children: ["\u23F1 ", expiry] })), volume && (_jsxs(Text, { color: "gray", children: [" Vol: ", volume] }))] }))] }), _jsx(Box, { flexDirection: "column", paddingX: 1, flexGrow: 1, children: !orderbook ? (_jsx(Text, { color: "gray", children: "Select a market to view orderbook" })) : (_jsxs(_Fragment, { children: [asks.map((level, i) => (_jsxs(Box, { justifyContent: "space-between", children: [_jsxs(Box, { children: [_jsx(Text, { color: "gray", children: "ASK " }), renderBar(level.quantity, 'red')] }), _jsxs(Box, { children: [_jsx(Text, { color: "red", children: formatPriceDecimal(level.price) }), _jsxs(Text, { color: "gray", children: [" (", level.quantity, ")"] })] })] }, `ask-${i}`))), _jsxs(Box, { marginY: 1, justifyContent: "space-between", children: [_jsx(Text, { color: "gray", children: '─'.repeat(30) }), spread !== null && (_jsxs(Text, { color: "yellow", bold: true, children: ["SPREAD: ", spread.toFixed(2), "\u00A2"] }))] }), bids.map((level, i) => (_jsxs(Box, { justifyContent: "space-between", children: [_jsxs(Box, { children: [_jsx(Text, { color: "gray", children: "BID " }), renderBar(level.quantity, 'green')] }), _jsxs(Box, { children: [_jsx(Text, { color: "green", children: formatPriceDecimal(level.price) }), _jsxs(Text, { color: "gray", children: [" (", level.quantity, ")"] })] })] }, `bid-${i}`)))] })) })] }));
74
+ return (_jsxs(Box, { flexDirection: "column", borderStyle: "single", borderColor: "gray", height: height, width: "100%", children: [_jsxs(Box, { paddingX: 1, flexDirection: "column", children: [_jsxs(Box, { justifyContent: "space-between", children: [_jsxs(Box, { children: [_jsx(Text, { color: "green", bold: true, children: " ORDERBOOK" }), _jsxs(Text, { color: "gray", children: [": ", market?.ticker || 'Select a market'] })] }), midPrice !== null && (_jsxs(Text, { color: "white", bold: true, children: ["Mid: ", midPrice.toFixed(2), "\u00A2"] }))] }), market?.title && (_jsxs(Text, { color: "cyan", wrap: "truncate", children: [market.title.slice(0, 55), market.title.length > 55 ? '…' : ''] })), market && (_jsxs(Box, { children: [expiry && (_jsxs(Text, { color: "yellow", children: ["\u23F1 ", expiry] })), volume && (_jsxs(Text, { color: "gray", children: [" Vol: ", volume] }))] }))] }), _jsx(Box, { flexDirection: "column", paddingX: 1, flexGrow: 1, children: !orderbook ? (_jsx(Text, { color: "gray", children: "Select a market to view orderbook" })) : (_jsxs(_Fragment, { children: [asks.map((level, i) => {
75
+ const isTopOfBook = level.price === bestAsk;
76
+ return (_jsxs(Box, { justifyContent: "space-between", children: [_jsxs(Box, { children: [_jsx(Text, { color: isTopOfBook ? 'red' : 'gray', bold: isTopOfBook, children: isTopOfBook ? 'ASK▸' : 'ASK ' }), renderBar(level.quantity, 'red')] }), _jsxs(Box, { children: [_jsx(Text, { color: "red", bold: isTopOfBook, children: formatPrice(level.price) }), _jsxs(Text, { color: "gray", children: [" ", formatQty(level.quantity).padStart(6)] }), _jsxs(Text, { color: "gray", dimColor: true, children: [" ", formatDollarValue(level.price, level.quantity).padStart(6)] })] })] }, `ask-${i}`));
77
+ }), _jsxs(Box, { marginY: 0, flexDirection: "column", children: [_jsxs(Box, { justifyContent: "space-between", children: [_jsx(Text, { color: "gray", children: '─'.repeat(20) }), _jsx(Box, { children: spread !== null && (_jsxs(Text, { color: "yellow", bold: true, children: [" SPREAD: ", spread.toFixed(2), "\u00A2 "] })) }), _jsx(Text, { color: "gray", children: '─'.repeat(10) })] }), _jsxs(Box, { justifyContent: "space-between", children: [_jsxs(Text, { color: "gray", dimColor: true, children: ["Depth: ", formatQty(totalAskQty), " ask / ", formatQty(totalBidQty), " bid"] }), _jsxs(Text, { color: imbalanceColor, dimColor: true, children: [imbalance.toFixed(2), "x (", imbalanceText, ")"] })] })] }), bids.map((level, i) => {
78
+ const isTopOfBook = level.price === bestBid;
79
+ return (_jsxs(Box, { justifyContent: "space-between", children: [_jsxs(Box, { children: [_jsx(Text, { color: isTopOfBook ? 'green' : 'gray', bold: isTopOfBook, children: isTopOfBook ? 'BID▸' : 'BID ' }), renderBar(level.quantity, 'green')] }), _jsxs(Box, { children: [_jsx(Text, { color: "green", bold: isTopOfBook, children: formatPrice(level.price) }), _jsxs(Text, { color: "gray", children: [" ", formatQty(level.quantity).padStart(6)] }), _jsxs(Text, { color: "gray", dimColor: true, children: [" ", formatDollarValue(level.price, level.quantity).padStart(6)] })] })] }, `bid-${i}`));
80
+ })] })) })] }));
31
81
  }
32
82
  //# sourceMappingURL=Orderbook.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Orderbook.js","sourceRoot":"","sources":["../../src/components/Orderbook.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Orderbook.js","sourceRoot":"","sources":["../../src/components/Orderbook.tsx"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@newyorkcompute/kalshi-tui",
3
- "version": "0.3.0",
3
+ "version": "0.3.1",
4
4
  "description": "Beautiful terminal UI for Kalshi prediction markets — real-time data, trading, and portfolio management",
5
5
  "author": "NewYorkCompute",
6
6
  "license": "MIT",