fix: Kalshi market data nested under 'market' key — resolve_bets now correctly settles orders. fix: BTC Binance proxy. All 8 data sources verified. PNL tracking live.

This commit is contained in:
drjones
2026-08-02 20:27:32 -07:00
parent c817216ab1
commit 0408ff026f
9 changed files with 324 additions and 8 deletions

Binary file not shown.

313
bot.log
View File

@@ -1904,3 +1904,316 @@ sqlite3.OperationalError: no such column: id
2026-08-02 20:07:54,850 POST YES x1 KXXRP15M-26AUG022315-15 @ 50¢ — ⚠ RSI 4 extreme oversold → fade UP 2026-08-02 20:07:54,850 POST YES x1 KXXRP15M-26AUG022315-15 @ 50¢ — ⚠ RSI 4 extreme oversold → fade UP
2026-08-02 20:08:27,463 POST YES x1 KXBTC15M-26AUG022315-15 @ 50¢ — ⚠ RSI 0 extreme oversold → fade UP 2026-08-02 20:08:27,463 POST YES x1 KXBTC15M-26AUG022315-15 @ 50¢ — ⚠ RSI 0 extreme oversold → fade UP
2026-08-02 20:10:05,986 127.0.0.1 - - [02/Aug/2026 20:10:05] "GET /api/fleet HTTP/1.1" 200 - 2026-08-02 20:10:05,986 127.0.0.1 - - [02/Aug/2026 20:10:05] "GET /api/fleet HTTP/1.1" 200 -
2026-08-02 20:12:05,293 skip KXDOGE15M-26AUG022315-15: passes: No clear edge; RSI neutral, trend mixed
2026-08-02 20:12:18,883 POST NO x1 KXSOL15M-26AUG022315-15 @ 50¢ — DOWN: UP spike 0.02% conf=0.65 [RSI(1m)=75 overbought, fading sharp UP spike]
2026-08-02 20:12:50,766 skip KXETH15M-26AUG022315-15: passes: BTC bearish + Fear regime, no clear fade edge
2026-08-02 20:13:01,415 POST NO x1 KXXRP15M-26AUG022315-15 @ 50¢ — DOWN: DOWN spike 0.08% conf=0.65 [RSI 25 oversold but price still declining; fading the down s]
2026-08-02 20:13:23,700 POST YES x1 KXBTC15M-26AUG022315-15 @ 50¢ — ⚠ RSI 0 extreme oversold → fade UP
2026-08-02 20:17:18,978 skip KXDOGE15M-26AUG022330-30: passes: Choppy regime, no clear edge
2026-08-02 20:17:30,145 POST NO x1 KXSOL15M-26AUG022330-30 @ 50¢ — DOWN: DOWN spike 0.05% conf=0.65 [RSI oversold at 30, price near range low, fading the down sp]
2026-08-02 20:17:56,170 127.0.0.1 - - [02/Aug/2026 20:17:56] "GET /fleet HTTP/1.1" 200 -
2026-08-02 20:17:56,651 127.0.0.1 - - [02/Aug/2026 20:17:56] "GET /api/fleet HTTP/1.1" 200 -
2026-08-02 20:18:04,531 127.0.0.1 - - [02/Aug/2026 20:18:04] "GET /api/fleet/ticks?coin=doge&mins=5 HTTP/1.1" 200 -
2026-08-02 20:18:04,527 POST NO x1 KXXRP15M-26AUG022330-30 @ 50¢ — DOWN: DOWN spike 0.05% conf=0.75 [RSI(1m)=82 overbought, fading sharp up move]
2026-08-02 20:18:06,886 HEDGE KXBTC15M-TEST: no@45¢ + yes@42¢ → locked 13¢
2026-08-02 20:18:13,859 skip KXETH15M-26AUG022330-30: no swing (0.005% < 0.005%)
2026-08-02 20:18:25,214 POST NO x1 KXBTC15M-26AUG022330-30 @ 50¢ — ⚠ RSI 86 extreme overbought → fade DOWN
2026-08-02 20:20:39,154 127.0.0.1 - - [02/Aug/2026 20:20:39] "GET /api/fleet HTTP/1.1" 200 -
2026-08-02 20:20:40,971 127.0.0.1 - - [02/Aug/2026 20:20:40] "GET /api/state HTTP/1.1" 200 -
2026-08-02 20:20:41,146 127.0.0.1 - - [02/Aug/2026 20:20:41] "GET /api/fleet/ticks?coin=btc&mins=60 HTTP/1.1" 200 -
2026-08-02 20:20:41,201 127.0.0.1 - - [02/Aug/2026 20:20:41] "GET /api/fleet/ticks?coin=doge&mins=60 HTTP/1.1" 200 -
2026-08-02 20:20:41,220 127.0.0.1 - - [02/Aug/2026 20:20:41] "GET /api/fleet/ticks?coin=eth&mins=60 HTTP/1.1" 200 -
2026-08-02 20:20:41,233 127.0.0.1 - - [02/Aug/2026 20:20:41] "GET /api/fleet/ticks?coin=sol&mins=60 HTTP/1.1" 200 -
2026-08-02 20:20:41,249 127.0.0.1 - - [02/Aug/2026 20:20:41] "GET /api/fleet/ticks?coin=xrp&mins=60 HTTP/1.1" 200 -
2026-08-02 20:20:54,098 127.0.0.1 - - [02/Aug/2026 20:20:54] "GET /api/fleet HTTP/1.1" 200 -
2026-08-02 20:20:54,916 127.0.0.1 - - [02/Aug/2026 20:20:54] "GET /api/state HTTP/1.1" 200 -
2026-08-02 20:20:54,981 127.0.0.1 - - [02/Aug/2026 20:20:54] "GET /api/fleet/ticks?coin=btc&mins=60 HTTP/1.1" 200 -
2026-08-02 20:20:55,048 127.0.0.1 - - [02/Aug/2026 20:20:55] "GET /api/fleet/ticks?coin=doge&mins=60 HTTP/1.1" 200 -
2026-08-02 20:20:55,067 127.0.0.1 - - [02/Aug/2026 20:20:55] "GET /api/fleet/ticks?coin=eth&mins=60 HTTP/1.1" 200 -
2026-08-02 20:20:55,084 127.0.0.1 - - [02/Aug/2026 20:20:55] "GET /api/fleet/ticks?coin=sol&mins=60 HTTP/1.1" 200 -
2026-08-02 20:20:55,100 127.0.0.1 - - [02/Aug/2026 20:20:55] "GET /api/fleet/ticks?coin=xrp&mins=60 HTTP/1.1" 200 -
2026-08-02 20:21:08,883 127.0.0.1 - - [02/Aug/2026 20:21:08] "GET /api/fleet HTTP/1.1" 200 -
2026-08-02 20:21:09,470 127.0.0.1 - - [02/Aug/2026 20:21:09] "GET /api/state HTTP/1.1" 200 -
2026-08-02 20:21:09,538 127.0.0.1 - - [02/Aug/2026 20:21:09] "GET /api/fleet/ticks?coin=btc&mins=60 HTTP/1.1" 200 -
2026-08-02 20:21:09,589 127.0.0.1 - - [02/Aug/2026 20:21:09] "GET /api/fleet/ticks?coin=doge&mins=60 HTTP/1.1" 200 -
2026-08-02 20:21:09,605 127.0.0.1 - - [02/Aug/2026 20:21:09] "GET /api/fleet/ticks?coin=eth&mins=60 HTTP/1.1" 200 -
2026-08-02 20:21:09,624 127.0.0.1 - - [02/Aug/2026 20:21:09] "GET /api/fleet/ticks?coin=sol&mins=60 HTTP/1.1" 200 -
2026-08-02 20:21:09,647 127.0.0.1 - - [02/Aug/2026 20:21:09] "GET /api/fleet/ticks?coin=xrp&mins=60 HTTP/1.1" 200 -
2026-08-02 20:21:23,910 127.0.0.1 - - [02/Aug/2026 20:21:23] "GET /api/fleet HTTP/1.1" 200 -
2026-08-02 20:21:24,455 127.0.0.1 - - [02/Aug/2026 20:21:24] "GET /api/state HTTP/1.1" 200 -
2026-08-02 20:21:24,517 127.0.0.1 - - [02/Aug/2026 20:21:24] "GET /api/fleet/ticks?coin=btc&mins=60 HTTP/1.1" 200 -
2026-08-02 20:21:24,550 127.0.0.1 - - [02/Aug/2026 20:21:24] "GET /api/fleet/ticks?coin=doge&mins=60 HTTP/1.1" 200 -
2026-08-02 20:21:24,568 127.0.0.1 - - [02/Aug/2026 20:21:24] "GET /api/fleet/ticks?coin=eth&mins=60 HTTP/1.1" 200 -
2026-08-02 20:21:24,584 127.0.0.1 - - [02/Aug/2026 20:21:24] "GET /api/fleet/ticks?coin=sol&mins=60 HTTP/1.1" 200 -
2026-08-02 20:21:24,600 127.0.0.1 - - [02/Aug/2026 20:21:24] "GET /api/fleet/ticks?coin=xrp&mins=60 HTTP/1.1" 200 -
2026-08-02 20:21:38,819 127.0.0.1 - - [02/Aug/2026 20:21:38] "GET /api/fleet HTTP/1.1" 200 -
2026-08-02 20:21:39,445 127.0.0.1 - - [02/Aug/2026 20:21:39] "GET /api/state HTTP/1.1" 200 -
2026-08-02 20:21:39,478 127.0.0.1 - - [02/Aug/2026 20:21:39] "GET /api/fleet/ticks?coin=btc&mins=60 HTTP/1.1" 200 -
2026-08-02 20:21:39,539 127.0.0.1 - - [02/Aug/2026 20:21:39] "GET /api/fleet/ticks?coin=doge&mins=60 HTTP/1.1" 200 -
2026-08-02 20:21:39,557 127.0.0.1 - - [02/Aug/2026 20:21:39] "GET /api/fleet/ticks?coin=eth&mins=60 HTTP/1.1" 200 -
2026-08-02 20:21:39,568 127.0.0.1 - - [02/Aug/2026 20:21:39] "GET /api/fleet/ticks?coin=sol&mins=60 HTTP/1.1" 200 -
2026-08-02 20:21:39,582 127.0.0.1 - - [02/Aug/2026 20:21:39] "GET /api/fleet/ticks?coin=xrp&mins=60 HTTP/1.1" 200 -
2026-08-02 20:21:53,824 127.0.0.1 - - [02/Aug/2026 20:21:53] "GET /api/fleet HTTP/1.1" 200 -
2026-08-02 20:21:54,461 127.0.0.1 - - [02/Aug/2026 20:21:54] "GET /api/state HTTP/1.1" 200 -
2026-08-02 20:21:54,482 127.0.0.1 - - [02/Aug/2026 20:21:54] "GET /api/fleet/ticks?coin=btc&mins=60 HTTP/1.1" 200 -
2026-08-02 20:21:54,494 127.0.0.1 - - [02/Aug/2026 20:21:54] "GET /api/fleet/ticks?coin=doge&mins=60 HTTP/1.1" 200 -
2026-08-02 20:21:54,502 127.0.0.1 - - [02/Aug/2026 20:21:54] "GET /api/fleet/ticks?coin=eth&mins=60 HTTP/1.1" 200 -
2026-08-02 20:21:54,509 127.0.0.1 - - [02/Aug/2026 20:21:54] "GET /api/fleet/ticks?coin=sol&mins=60 HTTP/1.1" 200 -
2026-08-02 20:21:54,518 127.0.0.1 - - [02/Aug/2026 20:21:54] "GET /api/fleet/ticks?coin=xrp&mins=60 HTTP/1.1" 200 -
2026-08-02 20:22:08,754 127.0.0.1 - - [02/Aug/2026 20:22:08] "GET /api/fleet HTTP/1.1" 200 -
2026-08-02 20:22:09,776 127.0.0.1 - - [02/Aug/2026 20:22:09] "GET /api/state HTTP/1.1" 200 -
2026-08-02 20:22:09,810 127.0.0.1 - - [02/Aug/2026 20:22:09] "GET /api/fleet/ticks?coin=btc&mins=60 HTTP/1.1" 200 -
2026-08-02 20:22:09,828 127.0.0.1 - - [02/Aug/2026 20:22:09] "GET /api/fleet/ticks?coin=doge&mins=60 HTTP/1.1" 200 -
2026-08-02 20:22:09,845 127.0.0.1 - - [02/Aug/2026 20:22:09] "GET /api/fleet/ticks?coin=eth&mins=60 HTTP/1.1" 200 -
2026-08-02 20:22:09,868 127.0.0.1 - - [02/Aug/2026 20:22:09] "GET /api/fleet/ticks?coin=sol&mins=60 HTTP/1.1" 200 -
2026-08-02 20:22:09,876 127.0.0.1 - - [02/Aug/2026 20:22:09] "GET /api/fleet/ticks?coin=xrp&mins=60 HTTP/1.1" 200 -
2026-08-02 20:22:11,450 127.0.0.1 - - [02/Aug/2026 20:22:11] "GET /api/fleet HTTP/1.1" 200 -
2026-08-02 20:22:17,699 POST NO x1 KXDOGE15M-26AUG022330-30 @ 50¢ — ⚠ RSI 97 extreme overbought → fade DOWN
2026-08-02 20:22:23,731 127.0.0.1 - - [02/Aug/2026 20:22:23] "GET /api/fleet HTTP/1.1" 200 -
2026-08-02 20:22:24,239 127.0.0.1 - - [02/Aug/2026 20:22:24] "GET /api/state HTTP/1.1" 200 -
2026-08-02 20:22:24,257 127.0.0.1 - - [02/Aug/2026 20:22:24] "GET /api/fleet/ticks?coin=btc&mins=60 HTTP/1.1" 200 -
2026-08-02 20:22:24,270 127.0.0.1 - - [02/Aug/2026 20:22:24] "GET /api/fleet/ticks?coin=doge&mins=60 HTTP/1.1" 200 -
2026-08-02 20:22:24,278 127.0.0.1 - - [02/Aug/2026 20:22:24] "GET /api/fleet/ticks?coin=eth&mins=60 HTTP/1.1" 200 -
2026-08-02 20:22:24,289 127.0.0.1 - - [02/Aug/2026 20:22:24] "GET /api/fleet/ticks?coin=sol&mins=60 HTTP/1.1" 200 -
2026-08-02 20:22:24,296 127.0.0.1 - - [02/Aug/2026 20:22:24] "GET /api/fleet/ticks?coin=xrp&mins=60 HTTP/1.1" 200 -
2026-08-02 20:22:26,119 skip KXSOL15M-26AUG022330-30: passes: RSI neutral, no clear spike to fade
2026-08-02 20:22:38,765 127.0.0.1 - - [02/Aug/2026 20:22:38] "GET /api/fleet HTTP/1.1" 200 -
2026-08-02 20:22:39,266 127.0.0.1 - - [02/Aug/2026 20:22:39] "GET /api/state HTTP/1.1" 200 -
2026-08-02 20:22:39,299 127.0.0.1 - - [02/Aug/2026 20:22:39] "GET /api/fleet/ticks?coin=btc&mins=60 HTTP/1.1" 200 -
2026-08-02 20:22:39,314 127.0.0.1 - - [02/Aug/2026 20:22:39] "GET /api/fleet/ticks?coin=doge&mins=60 HTTP/1.1" 200 -
2026-08-02 20:22:39,335 127.0.0.1 - - [02/Aug/2026 20:22:39] "GET /api/fleet/ticks?coin=eth&mins=60 HTTP/1.1" 200 -
2026-08-02 20:22:39,348 127.0.0.1 - - [02/Aug/2026 20:22:39] "GET /api/fleet/ticks?coin=sol&mins=60 HTTP/1.1" 200 -
2026-08-02 20:22:39,357 127.0.0.1 - - [02/Aug/2026 20:22:39] "GET /api/fleet/ticks?coin=xrp&mins=60 HTTP/1.1" 200 -
2026-08-02 20:22:53,733 127.0.0.1 - - [02/Aug/2026 20:22:53] "GET /api/fleet HTTP/1.1" 200 -
2026-08-02 20:22:54,277 127.0.0.1 - - [02/Aug/2026 20:22:54] "GET /api/state HTTP/1.1" 200 -
2026-08-02 20:22:54,303 127.0.0.1 - - [02/Aug/2026 20:22:54] "GET /api/fleet/ticks?coin=btc&mins=60 HTTP/1.1" 200 -
2026-08-02 20:22:54,316 127.0.0.1 - - [02/Aug/2026 20:22:54] "GET /api/fleet/ticks?coin=doge&mins=60 HTTP/1.1" 200 -
2026-08-02 20:22:54,322 127.0.0.1 - - [02/Aug/2026 20:22:54] "GET /api/fleet/ticks?coin=eth&mins=60 HTTP/1.1" 200 -
2026-08-02 20:22:54,329 127.0.0.1 - - [02/Aug/2026 20:22:54] "GET /api/fleet/ticks?coin=sol&mins=60 HTTP/1.1" 200 -
2026-08-02 20:22:54,335 127.0.0.1 - - [02/Aug/2026 20:22:54] "GET /api/fleet/ticks?coin=xrp&mins=60 HTTP/1.1" 200 -
2026-08-02 20:23:08,381 POST YES x1 KXXRP15M-26AUG022330-30 @ 50¢ — ⚠ RSI 5 extreme oversold → fade UP
2026-08-02 20:23:08,918 127.0.0.1 - - [02/Aug/2026 20:23:08] "GET /api/fleet HTTP/1.1" 200 -
2026-08-02 20:23:09,755 127.0.0.1 - - [02/Aug/2026 20:23:09] "GET /api/state HTTP/1.1" 200 -
2026-08-02 20:23:09,820 127.0.0.1 - - [02/Aug/2026 20:23:09] "GET /api/fleet/ticks?coin=btc&mins=60 HTTP/1.1" 200 -
2026-08-02 20:23:09,839 127.0.0.1 - - [02/Aug/2026 20:23:09] "GET /api/fleet/ticks?coin=doge&mins=60 HTTP/1.1" 200 -
2026-08-02 20:23:09,854 127.0.0.1 - - [02/Aug/2026 20:23:09] "GET /api/fleet/ticks?coin=eth&mins=60 HTTP/1.1" 200 -
2026-08-02 20:23:09,871 127.0.0.1 - - [02/Aug/2026 20:23:09] "GET /api/fleet/ticks?coin=sol&mins=60 HTTP/1.1" 200 -
2026-08-02 20:23:09,884 127.0.0.1 - - [02/Aug/2026 20:23:09] "GET /api/fleet/ticks?coin=xrp&mins=60 HTTP/1.1" 200 -
2026-08-02 20:23:23,782 127.0.0.1 - - [02/Aug/2026 20:23:23] "GET /api/fleet HTTP/1.1" 200 -
2026-08-02 20:23:24,278 127.0.0.1 - - [02/Aug/2026 20:23:24] "GET /api/state HTTP/1.1" 200 -
2026-08-02 20:23:24,318 127.0.0.1 - - [02/Aug/2026 20:23:24] "GET /api/fleet/ticks?coin=btc&mins=60 HTTP/1.1" 200 -
2026-08-02 20:23:24,334 127.0.0.1 - - [02/Aug/2026 20:23:24] "GET /api/fleet/ticks?coin=doge&mins=60 HTTP/1.1" 200 -
2026-08-02 20:23:24,353 127.0.0.1 - - [02/Aug/2026 20:23:24] "GET /api/fleet/ticks?coin=eth&mins=60 HTTP/1.1" 200 -
2026-08-02 20:23:24,366 127.0.0.1 - - [02/Aug/2026 20:23:24] "GET /api/fleet/ticks?coin=sol&mins=60 HTTP/1.1" 200 -
2026-08-02 20:23:24,382 127.0.0.1 - - [02/Aug/2026 20:23:24] "GET /api/fleet/ticks?coin=xrp&mins=60 HTTP/1.1" 200 -
2026-08-02 20:23:27,620 POST YES x1 KXBTC15M-26AUG022330-30 @ 50¢ — ⚠ RSI 1 extreme oversold → fade UP
2026-08-02 20:23:35,791 POST YES x1 KXETH15M-26AUG022330-30 @ 50¢ — ⚠ RSI 4 extreme oversold → fade UP
2026-08-02 20:23:38,751 127.0.0.1 - - [02/Aug/2026 20:23:38] "GET /api/fleet HTTP/1.1" 200 -
2026-08-02 20:23:39,416 127.0.0.1 - - [02/Aug/2026 20:23:39] "GET /api/state HTTP/1.1" 200 -
2026-08-02 20:23:39,465 127.0.0.1 - - [02/Aug/2026 20:23:39] "GET /api/fleet/ticks?coin=btc&mins=60 HTTP/1.1" 200 -
2026-08-02 20:23:39,492 127.0.0.1 - - [02/Aug/2026 20:23:39] "GET /api/fleet/ticks?coin=doge&mins=60 HTTP/1.1" 200 -
2026-08-02 20:23:39,504 127.0.0.1 - - [02/Aug/2026 20:23:39] "GET /api/fleet/ticks?coin=eth&mins=60 HTTP/1.1" 200 -
2026-08-02 20:23:39,519 127.0.0.1 - - [02/Aug/2026 20:23:39] "GET /api/fleet/ticks?coin=sol&mins=60 HTTP/1.1" 200 -
2026-08-02 20:23:39,532 127.0.0.1 - - [02/Aug/2026 20:23:39] "GET /api/fleet/ticks?coin=xrp&mins=60 HTTP/1.1" 200 -
2026-08-02 20:23:53,726 127.0.0.1 - - [02/Aug/2026 20:23:53] "GET /api/fleet HTTP/1.1" 200 -
2026-08-02 20:23:54,450 127.0.0.1 - - [02/Aug/2026 20:23:54] "GET /api/state HTTP/1.1" 200 -
2026-08-02 20:23:55,686 K4LSH1_OPS online — mode=AUTO dry_run=False stake=10¢ max_spend=100¢
2026-08-02 20:23:57,016 WIN KXDOGE15M-26AUG021915-15 no@5¢ → no (+95¢)
2026-08-02 20:23:57,340 LOSS KXDOGE15M-26AUG021930-30 no@5¢ → yes (-5¢)
2026-08-02 20:23:57,425 127.0.0.1 - - [02/Aug/2026 20:23:57] "GET /api/fleet/ticks?coin=btc&mins=60 HTTP/1.1" 200 -
2026-08-02 20:23:57,441 127.0.0.1 - - [02/Aug/2026 20:23:57] "GET /api/fleet/ticks?coin=doge&mins=60 HTTP/1.1" 200 -
2026-08-02 20:23:57,449 127.0.0.1 - - [02/Aug/2026 20:23:57] "GET /api/fleet/ticks?coin=eth&mins=60 HTTP/1.1" 200 -
2026-08-02 20:23:57,459 127.0.0.1 - - [02/Aug/2026 20:23:57] "GET /api/fleet/ticks?coin=sol&mins=60 HTTP/1.1" 200 -
2026-08-02 20:23:57,469 127.0.0.1 - - [02/Aug/2026 20:23:57] "GET /api/fleet/ticks?coin=xrp&mins=60 HTTP/1.1" 200 -
2026-08-02 20:23:57,663 WIN KXDOGE15M-26AUG021945-45 no@50¢ → no (+50¢)
2026-08-02 20:23:57,976 WIN KXDOGE15M-26AUG022015-15 no@50¢ → no (+50¢)
2026-08-02 20:23:58,289 WIN KXDOGE15M-26AUG022030-30 no@50¢ → no (+50¢)
2026-08-02 20:23:58,602 WIN KXDOGE15M-26AUG022100-00 no@50¢ → no (+50¢)
2026-08-02 20:23:58,933 WIN KXDOGE15M-26AUG022130-30 no@50¢ → no (+50¢)
2026-08-02 20:23:59,246 WIN KXDOGE15M-26AUG022145-45 no@50¢ → no (+50¢)
2026-08-02 20:23:59,558 WIN KXDOGE15M-26AUG022200-00 yes@50¢ → yes (+50¢)
2026-08-02 20:23:59,881 WIN KXDOGE15M-26AUG022200-00 yes@50¢ → yes (+50¢)
2026-08-02 20:24:00,196 LOSS KXDOGE15M-26AUG022200-00 no@50¢ → yes (-50¢)
2026-08-02 20:24:00,255 K4LSH1_OPS online — mode=AUTO dry_run=False stake=10¢ max_spend=100¢
2026-08-02 20:24:00,255 staggering start by 20s
2026-08-02 20:24:00,513 WIN KXDOGE15M-26AUG022215-15 no@50¢ → no (+50¢)
2026-08-02 20:24:00,835 LOSS KXDOGE15M-26AUG022215-15 yes@50¢ → no (-50¢)
2026-08-02 20:24:01,162 WIN KXDOGE15M-26AUG022230-30 yes@50¢ → yes (+50¢)
2026-08-02 20:24:01,477 WIN KXDOGE15M-26AUG022230-30 yes@50¢ → yes (+50¢)
2026-08-02 20:24:01,793 WIN KXDOGE15M-26AUG022230-30 yes@50¢ → yes (+50¢)
2026-08-02 20:24:02,213 WIN KXDOGE15M-26AUG022230-30 yes@50¢ → yes (+50¢)
2026-08-02 20:24:02,527 WIN KXDOGE15M-26AUG022230-30 yes@50¢ → yes (+50¢)
2026-08-02 20:24:02,840 WIN KXDOGE15M-26AUG022230-30 yes@50¢ → yes (+50¢)
2026-08-02 20:24:03,156 WIN KXDOGE15M-26AUG022245-45 yes@50¢ → yes (+50¢)
2026-08-02 20:24:03,468 WIN KXDOGE15M-26AUG022245-45 yes@50¢ → yes (+50¢)
2026-08-02 20:24:03,788 WIN KXDOGE15M-26AUG022245-45 yes@50¢ → yes (+50¢)
2026-08-02 20:24:04,098 WIN KXDOGE15M-26AUG022300-00 no@50¢ → no (+50¢)
2026-08-02 20:24:04,409 LOSS KXDOGE15M-26AUG022300-00 yes@50¢ → no (-50¢)
2026-08-02 20:24:04,719 LOSS KXDOGE15M-26AUG022300-00 yes@50¢ → no (-50¢)
2026-08-02 20:24:05,035 WIN KXDOGE15M-26AUG022315-15 no@50¢ → no (+50¢)
2026-08-02 20:24:05,332 K4LSH1_OPS online — mode=AUTO dry_run=False stake=10¢ max_spend=100¢
2026-08-02 20:24:05,332 staggering start by 40s
2026-08-02 20:24:08,743 127.0.0.1 - - [02/Aug/2026 20:24:08] "GET /api/fleet HTTP/1.1" 200 -
2026-08-02 20:24:09,297 127.0.0.1 - - [02/Aug/2026 20:24:09] "GET /api/state HTTP/1.1" 200 -
2026-08-02 20:24:09,313 127.0.0.1 - - [02/Aug/2026 20:24:09] "GET /api/fleet/ticks?coin=btc&mins=60 HTTP/1.1" 200 -
2026-08-02 20:24:09,324 127.0.0.1 - - [02/Aug/2026 20:24:09] "GET /api/fleet/ticks?coin=doge&mins=60 HTTP/1.1" 200 -
2026-08-02 20:24:09,332 127.0.0.1 - - [02/Aug/2026 20:24:09] "GET /api/fleet/ticks?coin=eth&mins=60 HTTP/1.1" 200 -
2026-08-02 20:24:09,338 127.0.0.1 - - [02/Aug/2026 20:24:09] "GET /api/fleet/ticks?coin=sol&mins=60 HTTP/1.1" 200 -
2026-08-02 20:24:09,345 127.0.0.1 - - [02/Aug/2026 20:24:09] "GET /api/fleet/ticks?coin=xrp&mins=60 HTTP/1.1" 200 -
2026-08-02 20:24:10,359 K4LSH1_OPS online — mode=AUTO dry_run=False stake=10¢ max_spend=100¢
2026-08-02 20:24:10,359 staggering start by 60s
2026-08-02 20:24:12,617 POST NO x1 KXDOGE15M-26AUG022330-30 @ 50¢ — DOWN: DOWN spike 0.04% conf=0.75 [RSI 27 oversold + sharp down trend, fade the dip]
2026-08-02 20:24:15,295 K4LSH1_OPS online — mode=AUTO dry_run=False stake=10¢ max_spend=100¢
2026-08-02 20:24:15,295 staggering start by 80s
2026-08-02 20:24:21,343 WIN KXSOL15M-26AUG021915-15 no@45¢ → no (+55¢)
2026-08-02 20:24:21,626 LOSS KXSOL15M-26AUG021930-30 no@5¢ → yes (-5¢)
2026-08-02 20:24:21,882 LOSS KXSOL15M-26AUG022000-00 no@50¢ → yes (-50¢)
2026-08-02 20:24:22,137 WIN KXSOL15M-26AUG022015-15 no@50¢ → no (+50¢)
2026-08-02 20:24:22,398 WIN KXSOL15M-26AUG022030-30 no@50¢ → no (+50¢)
2026-08-02 20:24:22,646 WIN KXSOL15M-26AUG022045-45 no@50¢ → no (+50¢)
2026-08-02 20:24:22,899 WIN KXSOL15M-26AUG022100-00 no@50¢ → no (+50¢)
2026-08-02 20:24:23,151 WIN KXSOL15M-26AUG022115-15 no@50¢ → no (+50¢)
2026-08-02 20:24:23,403 WIN KXSOL15M-26AUG022130-30 no@50¢ → no (+50¢)
2026-08-02 20:24:23,656 WIN KXSOL15M-26AUG022130-30 no@50¢ → no (+50¢)
2026-08-02 20:24:23,723 127.0.0.1 - - [02/Aug/2026 20:24:23] "GET /api/fleet HTTP/1.1" 200 -
2026-08-02 20:24:23,908 WIN KXSOL15M-26AUG022145-45 no@50¢ → no (+50¢)
2026-08-02 20:24:24,164 WIN KXSOL15M-26AUG022145-45 no@50¢ → no (+50¢)
2026-08-02 20:24:24,222 127.0.0.1 - - [02/Aug/2026 20:24:24] "GET /api/state HTTP/1.1" 200 -
2026-08-02 20:24:24,236 127.0.0.1 - - [02/Aug/2026 20:24:24] "GET /api/fleet/ticks?coin=btc&mins=60 HTTP/1.1" 200 -
2026-08-02 20:24:24,246 127.0.0.1 - - [02/Aug/2026 20:24:24] "GET /api/fleet/ticks?coin=doge&mins=60 HTTP/1.1" 200 -
2026-08-02 20:24:24,251 127.0.0.1 - - [02/Aug/2026 20:24:24] "GET /api/fleet/ticks?coin=eth&mins=60 HTTP/1.1" 200 -
2026-08-02 20:24:24,256 127.0.0.1 - - [02/Aug/2026 20:24:24] "GET /api/fleet/ticks?coin=sol&mins=60 HTTP/1.1" 200 -
2026-08-02 20:24:24,262 127.0.0.1 - - [02/Aug/2026 20:24:24] "GET /api/fleet/ticks?coin=xrp&mins=60 HTTP/1.1" 200 -
2026-08-02 20:24:24,417 WIN KXSOL15M-26AUG022145-45 no@50¢ → no (+50¢)
2026-08-02 20:24:24,684 LOSS KXSOL15M-26AUG022200-00 yes@50¢ → no (-50¢)
2026-08-02 20:24:24,934 WIN KXSOL15M-26AUG022200-00 no@50¢ → no (+50¢)
2026-08-02 20:24:25,184 LOSS KXSOL15M-26AUG022215-15 yes@50¢ → no (-50¢)
2026-08-02 20:24:25,442 LOSS KXSOL15M-26AUG022215-15 yes@50¢ → no (-50¢)
2026-08-02 20:24:25,693 LOSS KXSOL15M-26AUG022215-15 yes@50¢ → no (-50¢)
2026-08-02 20:24:25,937 WIN KXSOL15M-26AUG022230-30 no@50¢ → no (+50¢)
2026-08-02 20:24:26,199 WIN KXSOL15M-26AUG022230-30 no@50¢ → no (+50¢)
2026-08-02 20:24:26,455 WIN KXSOL15M-26AUG022230-30 no@50¢ → no (+50¢)
2026-08-02 20:24:26,709 LOSS KXSOL15M-26AUG022230-30 yes@50¢ → no (-50¢)
2026-08-02 20:24:26,963 LOSS KXSOL15M-26AUG022230-30 yes@50¢ → no (-50¢)
2026-08-02 20:24:27,221 WIN KXSOL15M-26AUG022300-00 no@50¢ → no (+50¢)
2026-08-02 20:24:27,476 WIN KXSOL15M-26AUG022300-00 no@50¢ → no (+50¢)
2026-08-02 20:24:27,748 LOSS KXSOL15M-26AUG022315-15 no@50¢ → yes (-50¢)
2026-08-02 20:24:28,031 LOSS KXSOL15M-26AUG022315-15 no@50¢ → yes (-50¢)
2026-08-02 20:24:34,429 skip KXSOL15M-26AUG022330-30: passes: RSI neutral, no clear spike to fade
2026-08-02 20:24:38,753 127.0.0.1 - - [02/Aug/2026 20:24:38] "GET /api/fleet HTTP/1.1" 200 -
2026-08-02 20:24:39,272 127.0.0.1 - - [02/Aug/2026 20:24:39] "GET /api/state HTTP/1.1" 200 -
2026-08-02 20:24:39,297 127.0.0.1 - - [02/Aug/2026 20:24:39] "GET /api/fleet/ticks?coin=btc&mins=60 HTTP/1.1" 200 -
2026-08-02 20:24:39,306 127.0.0.1 - - [02/Aug/2026 20:24:39] "GET /api/fleet/ticks?coin=doge&mins=60 HTTP/1.1" 200 -
2026-08-02 20:24:39,312 127.0.0.1 - - [02/Aug/2026 20:24:39] "GET /api/fleet/ticks?coin=eth&mins=60 HTTP/1.1" 200 -
2026-08-02 20:24:39,317 127.0.0.1 - - [02/Aug/2026 20:24:39] "GET /api/fleet/ticks?coin=sol&mins=60 HTTP/1.1" 200 -
2026-08-02 20:24:39,323 127.0.0.1 - - [02/Aug/2026 20:24:39] "GET /api/fleet/ticks?coin=xrp&mins=60 HTTP/1.1" 200 -
2026-08-02 20:24:46,987 WIN KXETH15M-26AUG021915-15 no@5¢ → no (+95¢)
2026-08-02 20:24:47,399 LOSS KXETH15M-26AUG021930-30 no@5¢ → yes (-5¢)
2026-08-02 20:24:47,811 LOSS KXETH15M-26AUG021945-45 no@50¢ → yes (-50¢)
2026-08-02 20:24:48,221 WIN KXETH15M-26AUG022030-30 no@50¢ → no (+50¢)
2026-08-02 20:24:48,626 WIN KXETH15M-26AUG022045-45 no@50¢ → no (+50¢)
2026-08-02 20:24:49,035 WIN KXETH15M-26AUG022115-15 no@50¢ → no (+50¢)
2026-08-02 20:24:49,441 WIN KXETH15M-26AUG022130-30 no@50¢ → no (+50¢)
2026-08-02 20:24:49,851 WIN KXETH15M-26AUG022130-30 no@50¢ → no (+50¢)
2026-08-02 20:24:50,266 WIN KXETH15M-26AUG022130-30 no@50¢ → no (+50¢)
2026-08-02 20:24:50,686 WIN KXETH15M-26AUG022200-00 no@50¢ → no (+50¢)
2026-08-02 20:24:51,091 WIN KXETH15M-26AUG022215-15 no@50¢ → no (+50¢)
2026-08-02 20:24:51,500 WIN KXETH15M-26AUG022215-15 no@50¢ → no (+50¢)
2026-08-02 20:24:51,915 LOSS KXETH15M-26AUG022215-15 yes@50¢ → no (-50¢)
2026-08-02 20:24:52,409 WIN KXETH15M-26AUG022230-30 no@50¢ → no (+50¢)
2026-08-02 20:24:52,819 WIN KXETH15M-26AUG022230-30 no@50¢ → no (+50¢)
2026-08-02 20:24:53,230 LOSS KXETH15M-26AUG022230-30 yes@50¢ → no (-50¢)
2026-08-02 20:24:53,682 WIN KXETH15M-26AUG022230-30 no@50¢ → no (+50¢)
2026-08-02 20:24:53,737 127.0.0.1 - - [02/Aug/2026 20:24:53] "GET /api/fleet HTTP/1.1" 200 -
2026-08-02 20:24:54,091 LOSS KXETH15M-26AUG022230-30 yes@50¢ → no (-50¢)
2026-08-02 20:24:54,297 127.0.0.1 - - [02/Aug/2026 20:24:54] "GET /api/state HTTP/1.1" 200 -
2026-08-02 20:24:54,317 127.0.0.1 - - [02/Aug/2026 20:24:54] "GET /api/fleet/ticks?coin=btc&mins=60 HTTP/1.1" 200 -
2026-08-02 20:24:54,329 127.0.0.1 - - [02/Aug/2026 20:24:54] "GET /api/fleet/ticks?coin=doge&mins=60 HTTP/1.1" 200 -
2026-08-02 20:24:54,335 127.0.0.1 - - [02/Aug/2026 20:24:54] "GET /api/fleet/ticks?coin=eth&mins=60 HTTP/1.1" 200 -
2026-08-02 20:24:54,341 127.0.0.1 - - [02/Aug/2026 20:24:54] "GET /api/fleet/ticks?coin=sol&mins=60 HTTP/1.1" 200 -
2026-08-02 20:24:54,348 127.0.0.1 - - [02/Aug/2026 20:24:54] "GET /api/fleet/ticks?coin=xrp&mins=60 HTTP/1.1" 200 -
2026-08-02 20:24:54,495 LOSS KXETH15M-26AUG022245-45 no@50¢ → yes (-50¢)
2026-08-02 20:24:54,901 WIN KXETH15M-26AUG022245-45 yes@50¢ → yes (+50¢)
2026-08-02 20:24:55,312 LOSS KXETH15M-26AUG022300-00 yes@50¢ → no (-50¢)
2026-08-02 20:24:55,714 LOSS KXETH15M-26AUG022300-00 yes@50¢ → no (-50¢)
2026-08-02 20:24:56,126 WIN KXETH15M-26AUG022300-00 no@50¢ → no (+50¢)
2026-08-02 20:24:56,533 WIN KXETH15M-26AUG022315-15 no@50¢ → no (+50¢)
2026-08-02 20:24:56,940 WIN KXETH15M-26AUG022315-15 no@50¢ → no (+50¢)
2026-08-02 20:25:08,743 127.0.0.1 - - [02/Aug/2026 20:25:08] "GET /api/fleet HTTP/1.1" 200 -
2026-08-02 20:25:09,297 127.0.0.1 - - [02/Aug/2026 20:25:09] "GET /api/state HTTP/1.1" 200 -
2026-08-02 20:25:09,312 127.0.0.1 - - [02/Aug/2026 20:25:09] "GET /api/fleet/ticks?coin=btc&mins=60 HTTP/1.1" 200 -
2026-08-02 20:25:09,324 127.0.0.1 - - [02/Aug/2026 20:25:09] "GET /api/fleet/ticks?coin=doge&mins=60 HTTP/1.1" 200 -
2026-08-02 20:25:09,333 127.0.0.1 - - [02/Aug/2026 20:25:09] "GET /api/fleet/ticks?coin=eth&mins=60 HTTP/1.1" 200 -
2026-08-02 20:25:09,339 127.0.0.1 - - [02/Aug/2026 20:25:09] "GET /api/fleet/ticks?coin=sol&mins=60 HTTP/1.1" 200 -
2026-08-02 20:25:09,347 127.0.0.1 - - [02/Aug/2026 20:25:09] "GET /api/fleet/ticks?coin=xrp&mins=60 HTTP/1.1" 200 -
2026-08-02 20:25:11,482 WIN KXXRP15M-26AUG022230-30 yes@50¢ → yes (+50¢)
2026-08-02 20:25:11,796 WIN KXXRP15M-26AUG022245-45 yes@50¢ → yes (+50¢)
2026-08-02 20:25:12,230 WIN KXXRP15M-26AUG022245-45 yes@50¢ → yes (+50¢)
2026-08-02 20:25:12,538 WIN KXXRP15M-26AUG022245-45 yes@50¢ → yes (+50¢)
2026-08-02 20:25:12,848 LOSS KXXRP15M-26AUG022300-00 yes@50¢ → no (-50¢)
2026-08-02 20:25:13,158 LOSS KXXRP15M-26AUG022300-00 yes@50¢ → no (-50¢)
2026-08-02 20:25:13,469 LOSS KXXRP15M-26AUG022315-15 yes@50¢ → no (-50¢)
2026-08-02 20:25:13,786 WIN KXXRP15M-26AUG022315-15 no@50¢ → no (+50¢)
2026-08-02 20:25:18,176 POST YES x1 KXETH15M-26AUG022330-30 @ 50¢ — ⚠ RSI 10 extreme oversold → fade UP
2026-08-02 20:25:22,267 POST NO x1 KXXRP15M-26AUG022330-30 @ 50¢ — DOWN: DOWN spike 0.04% conf=0.65 [Spot at $1.0710, 1h/2h bearish trend, RSI(1m)=36 low — fadin]
2026-08-02 20:25:23,740 127.0.0.1 - - [02/Aug/2026 20:25:23] "GET /api/fleet HTTP/1.1" 200 -
2026-08-02 20:25:24,278 127.0.0.1 - - [02/Aug/2026 20:25:24] "GET /api/state HTTP/1.1" 200 -
2026-08-02 20:25:24,293 127.0.0.1 - - [02/Aug/2026 20:25:24] "GET /api/fleet/ticks?coin=btc&mins=60 HTTP/1.1" 200 -
2026-08-02 20:25:24,305 127.0.0.1 - - [02/Aug/2026 20:25:24] "GET /api/fleet/ticks?coin=doge&mins=60 HTTP/1.1" 200 -
2026-08-02 20:25:24,314 127.0.0.1 - - [02/Aug/2026 20:25:24] "GET /api/fleet/ticks?coin=eth&mins=60 HTTP/1.1" 200 -
2026-08-02 20:25:24,320 127.0.0.1 - - [02/Aug/2026 20:25:24] "GET /api/fleet/ticks?coin=sol&mins=60 HTTP/1.1" 200 -
2026-08-02 20:25:24,330 127.0.0.1 - - [02/Aug/2026 20:25:24] "GET /api/fleet/ticks?coin=xrp&mins=60 HTTP/1.1" 200 -
2026-08-02 20:25:35,481 LOSS KXBTC15M-26AUG022230-30 yes@50¢ → no (-50¢)
2026-08-02 20:25:35,566 WIN KXBTC15M-26AUG022245-45 yes@50¢ → yes (+50¢)
2026-08-02 20:25:35,652 WIN KXBTC15M-26AUG022245-45 yes@50¢ → yes (+50¢)
2026-08-02 20:25:35,858 WIN KXBTC15M-26AUG022245-45 yes@50¢ → yes (+50¢)
2026-08-02 20:25:35,949 LOSS KXBTC15M-26AUG022300-00 yes@50¢ → no (-50¢)
2026-08-02 20:25:36,051 LOSS KXBTC15M-26AUG022300-00 yes@50¢ → no (-50¢)
2026-08-02 20:25:36,150 LOSS KXBTC15M-26AUG022300-00 yes@50¢ → no (-50¢)
2026-08-02 20:25:36,253 WIN KXBTC15M-26AUG022315-15 no@50¢ → no (+50¢)
2026-08-02 20:25:36,351 LOSS KXBTC15M-26AUG022315-15 yes@50¢ → no (-50¢)
2026-08-02 20:25:36,444 LOSS KXBTC15M-26AUG022315-15 yes@50¢ → no (-50¢)
2026-08-02 20:25:38,767 127.0.0.1 - - [02/Aug/2026 20:25:38] "GET /api/fleet HTTP/1.1" 200 -
2026-08-02 20:25:39,288 127.0.0.1 - - [02/Aug/2026 20:25:39] "GET /api/state HTTP/1.1" 200 -
2026-08-02 20:25:39,309 127.0.0.1 - - [02/Aug/2026 20:25:39] "GET /api/fleet/ticks?coin=btc&mins=60 HTTP/1.1" 200 -
2026-08-02 20:25:39,320 127.0.0.1 - - [02/Aug/2026 20:25:39] "GET /api/fleet/ticks?coin=doge&mins=60 HTTP/1.1" 200 -
2026-08-02 20:25:39,327 127.0.0.1 - - [02/Aug/2026 20:25:39] "GET /api/fleet/ticks?coin=eth&mins=60 HTTP/1.1" 200 -
2026-08-02 20:25:39,336 127.0.0.1 - - [02/Aug/2026 20:25:39] "GET /api/fleet/ticks?coin=sol&mins=60 HTTP/1.1" 200 -
2026-08-02 20:25:39,347 127.0.0.1 - - [02/Aug/2026 20:25:39] "GET /api/fleet/ticks?coin=xrp&mins=60 HTTP/1.1" 200 -
2026-08-02 20:25:53,747 127.0.0.1 - - [02/Aug/2026 20:25:53] "GET /api/fleet HTTP/1.1" 200 -
2026-08-02 20:25:55,414 127.0.0.1 - - [02/Aug/2026 20:25:55] "GET /api/state HTTP/1.1" 200 -
2026-08-02 20:25:55,433 127.0.0.1 - - [02/Aug/2026 20:25:55] "GET /api/fleet/ticks?coin=btc&mins=60 HTTP/1.1" 200 -
2026-08-02 20:25:55,444 127.0.0.1 - - [02/Aug/2026 20:25:55] "GET /api/fleet/ticks?coin=doge&mins=60 HTTP/1.1" 200 -
2026-08-02 20:25:55,452 127.0.0.1 - - [02/Aug/2026 20:25:55] "GET /api/fleet/ticks?coin=eth&mins=60 HTTP/1.1" 200 -
2026-08-02 20:25:55,458 127.0.0.1 - - [02/Aug/2026 20:25:55] "GET /api/fleet/ticks?coin=sol&mins=60 HTTP/1.1" 200 -
2026-08-02 20:25:55,466 127.0.0.1 - - [02/Aug/2026 20:25:55] "GET /api/fleet/ticks?coin=xrp&mins=60 HTTP/1.1" 200 -
2026-08-02 20:25:57,846 POST YES x1 KXBTC15M-26AUG022330-30 @ 50¢ — ⚠ RSI 1 extreme oversold → fade UP
2026-08-02 20:26:05,704 127.0.0.1 - - [02/Aug/2026 20:26:05] "GET /api/fleet HTTP/1.1" 200 -
2026-08-02 20:26:08,738 127.0.0.1 - - [02/Aug/2026 20:26:08] "GET /api/fleet HTTP/1.1" 200 -
2026-08-02 20:26:09,380 127.0.0.1 - - [02/Aug/2026 20:26:09] "GET /api/state HTTP/1.1" 200 -
2026-08-02 20:26:09,395 127.0.0.1 - - [02/Aug/2026 20:26:09] "GET /api/fleet/ticks?coin=btc&mins=60 HTTP/1.1" 200 -
2026-08-02 20:26:09,407 127.0.0.1 - - [02/Aug/2026 20:26:09] "GET /api/fleet/ticks?coin=doge&mins=60 HTTP/1.1" 200 -
2026-08-02 20:26:09,415 127.0.0.1 - - [02/Aug/2026 20:26:09] "GET /api/fleet/ticks?coin=eth&mins=60 HTTP/1.1" 200 -
2026-08-02 20:26:09,421 127.0.0.1 - - [02/Aug/2026 20:26:09] "GET /api/fleet/ticks?coin=sol&mins=60 HTTP/1.1" 200 -
2026-08-02 20:26:09,428 127.0.0.1 - - [02/Aug/2026 20:26:09] "GET /api/fleet/ticks?coin=xrp&mins=60 HTTP/1.1" 200 -
2026-08-02 20:26:23,764 127.0.0.1 - - [02/Aug/2026 20:26:23] "GET /api/fleet HTTP/1.1" 200 -
2026-08-02 20:26:24,392 127.0.0.1 - - [02/Aug/2026 20:26:24] "GET /api/state HTTP/1.1" 200 -
2026-08-02 20:26:24,421 127.0.0.1 - - [02/Aug/2026 20:26:24] "GET /api/fleet/ticks?coin=btc&mins=60 HTTP/1.1" 200 -
2026-08-02 20:26:24,437 127.0.0.1 - - [02/Aug/2026 20:26:24] "GET /api/fleet/ticks?coin=doge&mins=60 HTTP/1.1" 200 -
2026-08-02 20:26:24,447 127.0.0.1 - - [02/Aug/2026 20:26:24] "GET /api/fleet/ticks?coin=eth&mins=60 HTTP/1.1" 200 -
2026-08-02 20:26:24,455 127.0.0.1 - - [02/Aug/2026 20:26:24] "GET /api/fleet/ticks?coin=sol&mins=60 HTTP/1.1" 200 -
2026-08-02 20:26:24,464 127.0.0.1 - - [02/Aug/2026 20:26:24] "GET /api/fleet/ticks?coin=xrp&mins=60 HTTP/1.1" 200 -
2026-08-02 20:26:38,792 127.0.0.1 - - [02/Aug/2026 20:26:38] "GET /api/fleet HTTP/1.1" 200 -
2026-08-02 20:26:39,398 127.0.0.1 - - [02/Aug/2026 20:26:39] "GET /api/state HTTP/1.1" 200 -
2026-08-02 20:26:39,416 127.0.0.1 - - [02/Aug/2026 20:26:39] "GET /api/fleet/ticks?coin=btc&mins=60 HTTP/1.1" 200 -
2026-08-02 20:26:39,433 127.0.0.1 - - [02/Aug/2026 20:26:39] "GET /api/fleet/ticks?coin=doge&mins=60 HTTP/1.1" 200 -
2026-08-02 20:26:39,443 127.0.0.1 - - [02/Aug/2026 20:26:39] "GET /api/fleet/ticks?coin=eth&mins=60 HTTP/1.1" 200 -
2026-08-02 20:26:39,452 127.0.0.1 - - [02/Aug/2026 20:26:39] "GET /api/fleet/ticks?coin=sol&mins=60 HTTP/1.1" 200 -
2026-08-02 20:26:39,462 127.0.0.1 - - [02/Aug/2026 20:26:39] "GET /api/fleet/ticks?coin=xrp&mins=60 HTTP/1.1" 200 -
2026-08-02 20:26:53,888 127.0.0.1 - - [02/Aug/2026 20:26:53] "GET /api/fleet HTTP/1.1" 200 -
2026-08-02 20:26:54,425 127.0.0.1 - - [02/Aug/2026 20:26:54] "GET /api/state HTTP/1.1" 200 -
2026-08-02 20:26:54,451 127.0.0.1 - - [02/Aug/2026 20:26:54] "GET /api/fleet/ticks?coin=btc&mins=60 HTTP/1.1" 200 -
2026-08-02 20:26:54,473 127.0.0.1 - - [02/Aug/2026 20:26:54] "GET /api/fleet/ticks?coin=doge&mins=60 HTTP/1.1" 200 -
2026-08-02 20:26:54,486 127.0.0.1 - - [02/Aug/2026 20:26:54] "GET /api/fleet/ticks?coin=eth&mins=60 HTTP/1.1" 200 -
2026-08-02 20:26:54,500 127.0.0.1 - - [02/Aug/2026 20:26:54] "GET /api/fleet/ticks?coin=sol&mins=60 HTTP/1.1" 200 -
2026-08-02 20:26:54,521 127.0.0.1 - - [02/Aug/2026 20:26:54] "GET /api/fleet/ticks?coin=xrp&mins=60 HTTP/1.1" 200 -

16
bot.py
View File

@@ -420,17 +420,17 @@ def resolve_bets(kx, conn):
for oid, ticker, side, count, px, dry in open_orders: for oid, ticker, side, count, px, dry in open_orders:
try: try:
m = kx.req("GET", f"/markets/{ticker}") m = kx.req("GET", f"/markets/{ticker}")
status = m.get("status") mk = m.get("market", m) # Kalshi nests under "market" key
if status not in ("settled", "finalized", "determined"): status = mk.get("status")
# also catch expired-untraded: close_time passed + no result → mark dead if status not in ("settled", "finalized", "determined", "closed"):
ct = m.get("close_time") ct = mk.get("close_time")
if ct: if ct:
from datetime import datetime, timezone from datetime import datetime, timezone
if datetime.fromisoformat(ct.replace("Z","+00:00")).timestamp() < time.time() - 120: if datetime.fromisoformat(ct.replace("Z","+00:00")).timestamp() < time.time() - 120:
conn.execute("UPDATE orders SET status='expired', settle_ts=? WHERE id=?", (time.time(), oid)) conn.execute("UPDATE orders SET status='expired', settle_ts=? WHERE id=?", (time.time(), oid))
conn.commit() conn.commit()
continue continue
result = (m.get("result") or "").lower() # 'yes' | 'no' result = (mk.get("result") or "").lower() # 'yes' | 'no'
if not result: if not result:
continue continue
won = (result == side) won = (result == side)
@@ -592,7 +592,8 @@ def run():
for oid, ticker, koid, side, px in open_orders: for oid, ticker, koid, side, px in open_orders:
try: try:
m = kx.req("GET", f"/markets/{ticker}") m = kx.req("GET", f"/markets/{ticker}")
ct = m.get("close_time","") mk = m.get("market", m) # Kalshi nests under "market"
ct = mk.get("close_time","")
if ct: if ct:
close_ts = datetime.fromisoformat(ct.replace("Z","+00:00")).timestamp() close_ts = datetime.fromisoformat(ct.replace("Z","+00:00")).timestamp()
mins_left = (close_ts - time.time())/60 mins_left = (close_ts - time.time())/60
@@ -643,7 +644,8 @@ def run():
continue continue
try: try:
verify = kx.req("GET", f"/markets/{ticker}") verify = kx.req("GET", f"/markets/{ticker}")
st = verify.get("status", "open") vm = verify.get("market", verify) # Kalshi nests under "market"
st = vm.get("status", "open")
if st and st not in ("open", "active"): if st and st not in ("open", "active"):
log_event(conn, "info", f"skip {ticker}: market closed (status={st})") log_event(conn, "info", f"skip {ticker}: market closed (status={st})")
continue continue

BIN
btc.db

Binary file not shown.

View File

@@ -24,5 +24,6 @@
"fast_llm_model": "qwen3.5:4b", "fast_llm_model": "qwen3.5:4b",
"deep_llm_url": "http://10.30.20.186:11434", "deep_llm_url": "http://10.30.20.186:11434",
"deep_llm_model": "ornith:latest", "deep_llm_model": "ornith:latest",
"color": "#f7931a" "color": "#f7931a",
"proxy": "http://10.30.20.189:3128"
} }

BIN
doge.db

Binary file not shown.

BIN
eth.db

Binary file not shown.

BIN
sol.db

Binary file not shown.

BIN
xrp.db

Binary file not shown.