fix: ornith leads when confident (>0.55), qwen vetoes borderline only. Was too tight — 2/2 agreement blocked all trades.
This commit is contained in:
128
bot.log
128
bot.log
@@ -4021,3 +4021,131 @@ sqlite3.OperationalError: no such column: id
|
|||||||
2026-08-03 02:30:15,212 WIN KXXRP15M-26AUG030530-30 yes@50¢ → yes (+50¢)
|
2026-08-03 02:30:15,212 WIN KXXRP15M-26AUG030530-30 yes@50¢ → yes (+50¢)
|
||||||
2026-08-03 02:30:17,969 WIN KXDOGE15M-26AUG030530-30 yes@50¢ → yes (+50¢)
|
2026-08-03 02:30:17,969 WIN KXDOGE15M-26AUG030530-30 yes@50¢ → yes (+50¢)
|
||||||
2026-08-03 02:30:23,542 LOSS KXXRP15M-26AUG030530-30 no@50¢ → yes (-50¢)
|
2026-08-03 02:30:23,542 LOSS KXXRP15M-26AUG030530-30 no@50¢ → yes (-50¢)
|
||||||
|
2026-08-03 02:32:49,243 skip KXDOGE15M-26AUG030545-45: ⚠ RSI 0 extreme OS but 24h -1.1% downtrend — no knife catch
|
||||||
|
2026-08-03 02:33:12,141 skip KXSOL15M-26AUG030545-45: ⚠ RSI 0 extreme OS but 24h -1.2% downtrend — no knife catch
|
||||||
|
2026-08-03 02:33:33,340 skip KXBNB15M-26AUG030545-45: ⚠ RSI 0 extreme OS but 24h -0.9% downtrend — no knife catch
|
||||||
|
2026-08-03 02:33:38,293 skip KXETH15M-26AUG030545-45: passes: [SPLIT: 0U/1D/1S] qwen3.5=SKIP | ornith=DOWN
|
||||||
|
2026-08-03 02:33:42,160 skip KXNEAR15M-26AUG030545-45: ⚠ RSI 0 extreme OS but 24h -0.9% downtrend — no knife catch
|
||||||
|
2026-08-03 02:33:52,480 skip KXZEC15M-26AUG030545-45: ⚠ RSI 0 extreme OS but 24h -1.0% downtrend — no knife catch
|
||||||
|
2026-08-03 02:34:02,894 skip KXXRP15M-26AUG030545-45: passes: [SPLIT: 0U/1D/1S] qwen3.5=SKIP | ornith=DOWN
|
||||||
|
2026-08-03 02:34:03,898 ⚖ BTC WR=32% → stake $1.00→$0.75 (bets:34)
|
||||||
|
2026-08-03 02:34:25,944 skip KXBTC15M-26AUG030545-45: passes: [SPLIT: 0U/1D/1S] qwen3.5=SKIP | ornith=DOWN
|
||||||
|
2026-08-03 02:37:52,449 skip KXDOGE15M-26AUG030545-45: ⚠ RSI 0 extreme OS but 24h -1.1% downtrend — no knife catch
|
||||||
|
2026-08-03 02:38:15,346 skip KXSOL15M-26AUG030545-45: ⚠ RSI 0 extreme OS but 24h -1.2% downtrend — no knife catch
|
||||||
|
2026-08-03 02:38:36,944 skip KXBNB15M-26AUG030545-45: no swing (0.002% < 0.005%)
|
||||||
|
2026-08-03 02:38:45,695 skip KXNEAR15M-26AUG030545-45: no swing (0.002% < 0.005%)
|
||||||
|
2026-08-03 02:38:50,852 skip KXETH15M-26AUG030545-45: ⚠ RSI 0 extreme OS but 24h -1.5% downtrend — no knife catch
|
||||||
|
2026-08-03 02:39:04,644 skip KXZEC15M-26AUG030545-45: no swing (0.007% < 0.005%)
|
||||||
|
2026-08-03 02:39:06,865 POST NO x1 KXXRP15M-26AUG030545-45 @ 50¢ — ⚠ RSI 100 extreme OB + momentum reversing → fade DOWN
|
||||||
|
2026-08-03 02:39:38,112 skip KXBTC15M-26AUG030545-45: passes: [SPLIT: 0U/0D/2S] qwen3.5=SKIP | ornith=SKIP
|
||||||
|
2026-08-03 02:42:53,327 skip KXDOGE15M-26AUG030545-45: ⚠ RSI 0 extreme OS but 24h -1.0% downtrend — no knife catch
|
||||||
|
2026-08-03 02:43:16,404 skip KXSOL15M-26AUG030545-45: ⚠ RSI 0 extreme OS but 24h -1.1% downtrend — no knife catch
|
||||||
|
2026-08-03 02:43:38,142 skip KXBNB15M-26AUG030545-45: ⚠ RSI 0 extreme OS but 24h -0.9% downtrend — no knife catch
|
||||||
|
2026-08-03 02:43:45,617 skip KXNEAR15M-26AUG030545-45: ⚠ RSI 0 extreme OS but 24h -0.9% downtrend — no knife catch
|
||||||
|
2026-08-03 02:43:51,656 skip KXETH15M-26AUG030545-45: passes: [SPLIT: 0U/1D/1S] qwen3.5=SKIP | ornith=DOWN
|
||||||
|
2026-08-03 02:44:04,855 ⚖ BTC WR=32% → stake $1.00→$0.75 (bets:34)
|
||||||
|
2026-08-03 02:44:05,268 skip KXZEC15M-26AUG030545-45: passes: [SPLIT: 0U/1D/1S] qwen3.5=SKIP | ornith=DOWN
|
||||||
|
2026-08-03 02:44:12,742 skip KXXRP15M-26AUG030545-45: ⚠ RSI 0 extreme OS but 24h -1.3% downtrend — no knife catch
|
||||||
|
2026-08-03 02:44:38,727 skip KXBTC15M-26AUG030545-45: ⚠ RSI 0 extreme OS but 24h -0.9% downtrend — no knife catch
|
||||||
|
2026-08-03 02:45:28,129 LOSS KXXRP15M-26AUG030545-45 no@50¢ → yes (-50¢)
|
||||||
|
2026-08-03 02:47:50,349 skip KXDOGE15M-26AUG030600-00: ⚠ RSI 0 extreme OS but 24h -1.0% downtrend — no knife catch
|
||||||
|
2026-08-03 02:48:13,493 skip KXSOL15M-26AUG030600-00: passes: [SPLIT: 0U/1D/1S] qwen3.5=SKIP | ornith=DOWN
|
||||||
|
2026-08-03 02:48:34,629 skip KXBNB15M-26AUG030600-00: passes: [SPLIT: 0U/1D/1S] qwen3.5=SKIP | ornith=DOWN
|
||||||
|
2026-08-03 02:48:42,561 POST NO x1 KXETH15M-26AUG030600-00 @ 50¢ — DOWN: UP spike 0.11% conf=0.80 [[ENSEMBLE: 0U/2D/0S] qwen3.5=DOWN | ornith=DOWN]
|
||||||
|
2026-08-03 02:48:43,820 skip KXNEAR15M-26AUG030600-00: passes: [SPLIT: 0U/1D/1S] qwen3.5=SKIP | ornith=DOWN
|
||||||
|
2026-08-03 02:48:55,288 skip KXZEC15M-26AUG030600-00: passes: [SPLIT: 0U/1D/1S] qwen3.5=SKIP | ornith=DOWN
|
||||||
|
2026-08-03 02:49:12,194 skip KXXRP15M-26AUG030600-00: passes: [SPLIT: 0U/1D/1S] qwen3.5=SKIP | ornith=DOWN
|
||||||
|
2026-08-03 02:49:28,778 skip KXBTC15M-26AUG030600-00: passes: [SPLIT: 0U/1D/1S] qwen3.5=SKIP | ornith=DOWN
|
||||||
|
2026-08-03 02:52:51,867 skip KXDOGE15M-26AUG030600-00: ⚠ RSI 0 extreme OS but 24h -0.9% downtrend — no knife catch
|
||||||
|
2026-08-03 02:53:15,911 skip KXSOL15M-26AUG030600-00: ⚠ RSI 0 extreme OS but 24h -1.0% downtrend — no knife catch
|
||||||
|
2026-08-03 02:53:36,565 skip KXBNB15M-26AUG030600-00: ⚠ RSI 0 extreme OS but 24h -0.8% downtrend — no knife catch
|
||||||
|
2026-08-03 02:53:45,197 skip KXNEAR15M-26AUG030600-00: ⚠ RSI 0 extreme OS but 24h -0.8% downtrend — no knife catch
|
||||||
|
2026-08-03 02:53:52,165 skip KXETH15M-26AUG030600-00: ⚠ RSI 0 extreme OS but 24h -1.3% downtrend — no knife catch
|
||||||
|
2026-08-03 02:54:06,389 skip KXZEC15M-26AUG030600-00: ⚠ RSI 0 extreme OS but 24h -0.8% downtrend — no knife catch
|
||||||
|
2026-08-03 02:54:06,722 ⚖ BTC WR=32% → stake $1.00→$0.75 (bets:34)
|
||||||
|
2026-08-03 02:54:10,755 skip KXXRP15M-26AUG030600-00: ⚠ RSI 0 extreme OS but 24h -1.2% downtrend — no knife catch
|
||||||
|
2026-08-03 02:54:40,099 skip KXBTC15M-26AUG030600-00: ⚠ RSI 0 extreme OS but 24h -0.8% downtrend — no knife catch
|
||||||
|
2026-08-03 02:57:53,962 skip KXDOGE15M-26AUG030600-00: passes: [SPLIT: 0U/1D/1S] qwen3.5=SKIP | ornith=DOWN
|
||||||
|
2026-08-03 02:58:16,014 skip KXSOL15M-26AUG030600-00: conf 0.78<0.80 (adaptive)
|
||||||
|
2026-08-03 02:58:38,804 skip KXBNB15M-26AUG030600-00: ⚠ RSI 0 extreme OS but 24h -0.7% downtrend — no knife catch
|
||||||
|
2026-08-03 02:58:45,994 skip KXNEAR15M-26AUG030600-00: ⚠ RSI 0 extreme OS but 24h -0.7% downtrend — no knife catch
|
||||||
|
2026-08-03 02:58:56,024 skip KXETH15M-26AUG030600-00: passes: [SPLIT: 0U/1D/1S] qwen3.5=SKIP | ornith=DOWN
|
||||||
|
2026-08-03 02:59:06,587 skip KXZEC15M-26AUG030600-00: ⚠ RSI 0 extreme OS but 24h -0.7% downtrend — no knife catch
|
||||||
|
2026-08-03 02:59:14,739 skip KXXRP15M-26AUG030600-00: ⚠ RSI 0 extreme OS but 24h -1.0% downtrend — no knife catch
|
||||||
|
2026-08-03 02:59:39,402 skip KXBTC15M-26AUG030600-00: ⚠ RSI 2 extreme OS but 24h -0.7% downtrend — no knife catch
|
||||||
|
2026-08-03 03:00:22,003 LOSS KXETH15M-26AUG030600-00 no@50¢ → yes (-50¢)
|
||||||
|
2026-08-03 03:02:51,641 skip KXDOGE15M-26AUG030615-15: ⚠ RSI 0 extreme OS but 24h -0.6% downtrend — no knife catch
|
||||||
|
2026-08-03 03:03:13,600 skip KXSOL15M-26AUG030615-15: ⚠ RSI 0 extreme OS but 24h -0.8% downtrend — no knife catch
|
||||||
|
2026-08-03 03:03:34,889 skip KXBNB15M-26AUG030615-15: ⚠ RSI 0 extreme OS but 24h -0.7% downtrend — no knife catch
|
||||||
|
2026-08-03 03:03:42,696 skip KXETH15M-26AUG030615-15: ⚠ RSI 0 extreme OS but 24h -1.0% downtrend — no knife catch
|
||||||
|
2026-08-03 03:03:45,334 skip KXNEAR15M-26AUG030615-15: ⚠ RSI 0 extreme OS but 24h -0.7% downtrend — no knife catch
|
||||||
|
2026-08-03 03:03:55,241 skip KXZEC15M-26AUG030615-15: ⚠ RSI 0 extreme OS but 24h -0.7% downtrend — no knife catch
|
||||||
|
2026-08-03 03:04:07,648 ⚖ BTC WR=32% → stake $1.00→$0.75 (bets:34)
|
||||||
|
2026-08-03 03:04:13,918 skip KXXRP15M-26AUG030615-15: ⚠ RSI 0 extreme OS but 24h -1.0% downtrend — no knife catch
|
||||||
|
2026-08-03 03:04:31,588 skip KXBTC15M-26AUG030615-15: no swing (0.005% < 0.005%)
|
||||||
|
2026-08-03 03:07:54,575 skip KXDOGE15M-26AUG030615-15: ⚠ RSI 0 extreme OS but 24h -0.7% downtrend — no knife catch
|
||||||
|
2026-08-03 03:08:17,645 skip KXSOL15M-26AUG030615-15: ⚠ RSI 0 extreme OS but 24h -0.8% downtrend — no knife catch
|
||||||
|
2026-08-03 03:08:38,080 skip KXBNB15M-26AUG030615-15: ⚠ RSI 0 extreme OS but 24h -0.7% downtrend — no knife catch
|
||||||
|
2026-08-03 03:08:46,474 skip KXNEAR15M-26AUG030615-15: ⚠ RSI 0 extreme OS but 24h -0.7% downtrend — no knife catch
|
||||||
|
2026-08-03 03:08:54,850 skip KXETH15M-26AUG030615-15: passes: [SPLIT: 0U/0D/2S] qwen3.5=SKIP | ornith=SKIP
|
||||||
|
2026-08-03 03:09:07,204 skip KXZEC15M-26AUG030615-15: ⚠ RSI 0 extreme OS but 24h -0.7% downtrend — no knife catch
|
||||||
|
2026-08-03 03:09:13,862 skip KXXRP15M-26AUG030615-15: ⚠ RSI 0 extreme OS but 24h -1.0% downtrend — no knife catch
|
||||||
|
2026-08-03 03:09:41,149 skip KXBTC15M-26AUG030615-15: ⚠ RSI 1 extreme OS but 24h -0.7% downtrend — no knife catch
|
||||||
|
2026-08-03 03:12:55,534 skip KXDOGE15M-26AUG030615-15: ⚠ RSI 0 extreme OS but 24h -0.5% downtrend — no knife catch
|
||||||
|
2026-08-03 03:13:17,894 skip KXSOL15M-26AUG030615-15: ⚠ RSI 0 extreme OS but 24h -0.8% downtrend — no knife catch
|
||||||
|
2026-08-03 03:13:39,299 skip KXBNB15M-26AUG030615-15: ⚠ RSI 0 extreme OS but 24h -0.7% downtrend — no knife catch
|
||||||
|
2026-08-03 03:13:47,283 skip KXNEAR15M-26AUG030615-15: ⚠ RSI 0 extreme OS but 24h -0.7% downtrend — no knife catch
|
||||||
|
2026-08-03 03:13:57,133 skip KXETH15M-26AUG030615-15: ⚠ RSI 0 extreme OS but 24h -1.0% downtrend — no knife catch
|
||||||
|
2026-08-03 03:14:07,237 skip KXZEC15M-26AUG030615-15: ⚠ RSI 0 extreme OS but 24h -0.7% downtrend — no knife catch
|
||||||
|
2026-08-03 03:14:08,303 ⚖ BTC WR=32% → stake $1.00→$0.75 (bets:34)
|
||||||
|
2026-08-03 03:14:15,842 skip KXXRP15M-26AUG030615-15: ⚠ RSI 0 extreme OS but 24h -1.0% downtrend — no knife catch
|
||||||
|
2026-08-03 03:14:41,127 skip KXBTC15M-26AUG030615-15: ⚠ RSI 0 extreme OS but 24h -0.7% downtrend — no knife catch
|
||||||
|
2026-08-03 03:17:52,495 skip KXDOGE15M-26AUG030630-30: ⚠ RSI 0 extreme OS but 24h -0.5% downtrend — no knife catch
|
||||||
|
2026-08-03 03:18:15,002 skip KXSOL15M-26AUG030630-30: ⚠ RSI 0 extreme OS but 24h -0.8% downtrend — no knife catch
|
||||||
|
2026-08-03 03:18:36,373 skip KXBNB15M-26AUG030630-30: ⚠ RSI 0 extreme OS but 24h -0.7% downtrend — no knife catch
|
||||||
|
2026-08-03 03:18:44,356 skip KXETH15M-26AUG030630-30: ⚠ RSI 0 extreme OS but 24h -1.0% downtrend — no knife catch
|
||||||
|
2026-08-03 03:18:47,222 skip KXNEAR15M-26AUG030630-30: ⚠ RSI 0 extreme OS but 24h -0.7% downtrend — no knife catch
|
||||||
|
2026-08-03 03:18:57,961 skip KXZEC15M-26AUG030630-30: ⚠ RSI 0 extreme OS but 24h -0.7% downtrend — no knife catch
|
||||||
|
2026-08-03 03:19:17,052 skip KXXRP15M-26AUG030630-30: ⚠ RSI 0 extreme OS but 24h -1.1% downtrend — no knife catch
|
||||||
|
2026-08-03 03:19:31,703 skip KXBTC15M-26AUG030630-30: no swing (0.000% < 0.005%)
|
||||||
|
2026-08-03 03:22:52,863 skip KXDOGE15M-26AUG030630-30: ⚠ RSI 0 extreme OS but 24h -0.6% downtrend — no knife catch
|
||||||
|
2026-08-03 03:23:19,738 skip KXSOL15M-26AUG030630-30: ⚠ RSI 0 extreme OS but 24h -0.6% downtrend — no knife catch
|
||||||
|
2026-08-03 03:23:40,105 skip KXBNB15M-26AUG030630-30: ⚠ RSI 0 extreme OS but 24h -0.6% downtrend — no knife catch
|
||||||
|
2026-08-03 03:23:48,153 skip KXNEAR15M-26AUG030630-30: passes: [SPLIT: 0U/1D/1S] qwen3.5=SKIP | ornith=DOWN
|
||||||
|
2026-08-03 03:23:59,134 skip KXETH15M-26AUG030630-30: passes: [SPLIT: 0U/1D/1S] qwen3.5=SKIP | ornith=DOWN
|
||||||
|
2026-08-03 03:24:08,519 ⚖ BTC WR=32% → stake $1.00→$0.75 (bets:34)
|
||||||
|
2026-08-03 03:24:09,838 skip KXZEC15M-26AUG030630-30: passes: [SPLIT: 0U/1D/1S] qwen3.5=SKIP | ornith=DOWN
|
||||||
|
2026-08-03 03:24:15,644 skip KXXRP15M-26AUG030630-30: ⚠ RSI 0 extreme OS but 24h -1.1% downtrend — no knife catch
|
||||||
|
2026-08-03 03:24:43,141 skip KXBTC15M-26AUG030630-30: ⚠ RSI 0 extreme OS but 24h -0.5% downtrend — no knife catch
|
||||||
|
2026-08-03 03:27:56,993 skip KXDOGE15M-26AUG030630-30: ⚠ RSI 0 extreme OS but 24h -0.7% downtrend — no knife catch
|
||||||
|
2026-08-03 03:28:19,718 skip KXSOL15M-26AUG030630-30: ⚠ RSI 0 extreme OS but 24h -0.7% downtrend — no knife catch
|
||||||
|
2026-08-03 03:28:40,846 skip KXBNB15M-26AUG030630-30: ⚠ RSI 0 extreme OS but 24h -0.6% downtrend — no knife catch
|
||||||
|
2026-08-03 03:28:49,320 skip KXNEAR15M-26AUG030630-30: ⚠ RSI 0 extreme OS but 24h -0.6% downtrend — no knife catch
|
||||||
|
2026-08-03 03:28:59,956 skip KXETH15M-26AUG030630-30: ⚠ RSI 0 extreme OS but 24h -0.9% downtrend — no knife catch
|
||||||
|
2026-08-03 03:29:11,220 skip KXZEC15M-26AUG030630-30: ⚠ RSI 0 extreme OS but 24h -0.6% downtrend — no knife catch
|
||||||
|
2026-08-03 03:29:19,897 skip KXXRP15M-26AUG030630-30: ⚠ RSI 0 extreme OS but 24h -1.0% downtrend — no knife catch
|
||||||
|
2026-08-03 03:29:44,470 skip KXBTC15M-26AUG030630-30: ⚠ RSI 0 extreme OS but 24h -0.6% downtrend — no knife catch
|
||||||
|
2026-08-03 03:30:56,113 K4LSH1_OPS online — mode=AUTO dry_run=False stake=10¢ max_spend=100¢
|
||||||
|
2026-08-03 03:31:00,043 K4LSH1_OPS online — mode=AUTO dry_run=False stake=10¢ max_spend=100¢
|
||||||
|
2026-08-03 03:31:00,043 staggering start by 20s
|
||||||
|
2026-08-03 03:31:04,060 K4LSH1_OPS online — mode=AUTO dry_run=False stake=10¢ max_spend=100¢
|
||||||
|
2026-08-03 03:31:04,060 staggering start by 40s
|
||||||
|
2026-08-03 03:31:08,091 K4LSH1_OPS online — mode=AUTO dry_run=False stake=10¢ max_spend=100¢
|
||||||
|
2026-08-03 03:31:08,092 staggering start by 60s
|
||||||
|
2026-08-03 03:31:14,829 K4LSH1_OPS online — mode=AUTO dry_run=False stake=10¢ max_spend=100¢
|
||||||
|
2026-08-03 03:31:14,830 staggering start by 80s
|
||||||
|
2026-08-03 03:31:17,044 K4LSH1_OPS online — mode=AUTO dry_run=False stake=10¢ max_spend=100¢
|
||||||
|
2026-08-03 03:31:17,045 staggering start by 25s
|
||||||
|
2026-08-03 03:31:17,535 skip KXDOGE15M-26AUG030645-45: ⚠ RSI 0 extreme OS but 24h -0.8% downtrend — no knife catch
|
||||||
|
2026-08-03 03:31:20,302 K4LSH1_OPS online — mode=AUTO dry_run=False stake=10¢ max_spend=100¢
|
||||||
|
2026-08-03 03:31:20,303 staggering start by 30s
|
||||||
|
2026-08-03 03:31:24,314 K4LSH1_OPS online — mode=AUTO dry_run=False stake=10¢ max_spend=100¢
|
||||||
|
2026-08-03 03:31:24,315 staggering start by 35s
|
||||||
|
2026-08-03 03:31:42,030 skip KXSOL15M-26AUG030645-45: ⚠ RSI 0 extreme OS but 24h -0.8% downtrend — no knife catch
|
||||||
|
2026-08-03 03:32:05,849 POST NO x1 KXBNB15M-26AUG030645-45 @ 50¢ — DOWN: DOWN spike 0.11% conf=0.75 [[ornith-lead DOWN 0.75 | qwen=DOWN] RSI 13 oversold + BTC be]
|
||||||
|
2026-08-03 03:32:11,987 skip KXNEAR15M-26AUG030645-45: ⚠ RSI 0 extreme OS but 24h -0.7% downtrend — no knife catch
|
||||||
|
2026-08-03 03:32:16,140 skip KXETH15M-26AUG030645-45: ⚠ RSI 0 extreme OS but 24h -1.0% downtrend — no knife catch
|
||||||
|
2026-08-03 03:32:29,485 skip KXXRP15M-26AUG030645-45: ⚠ RSI 0 extreme OS but 24h -1.1% downtrend — no knife catch
|
||||||
|
2026-08-03 03:32:30,840 skip KXZEC15M-26AUG030645-45: ⚠ RSI 1 extreme OS but 24h -0.7% downtrend — no knife catch
|
||||||
|
2026-08-03 03:32:34,839 ⚖ BTC WR=32% → stake $1.00→$0.75 (bets:34)
|
||||||
|
2026-08-03 03:33:05,368 skip KXBTC15M-26AUG030645-45: ⚠ RSI 1 extreme OS but 24h -0.7% downtrend — no knife catch
|
||||||
|
|||||||
34
bot.py
34
bot.py
@@ -342,15 +342,13 @@ def llm_vote(cfg, price, mom, mom_score, conn):
|
|||||||
except Exception as ex:
|
except Exception as ex:
|
||||||
fast_v, fast_c, fast_w = "BORDERLINE", 0.50, f"gate: {str(ex)[:40]}"
|
fast_v, fast_c, fast_w = "BORDERLINE", 0.50, f"gate: {str(ex)[:40]}"
|
||||||
|
|
||||||
# ── 2-model ensemble: qwen3.5 (MacBook) + ornith (GamingPC RTX 3070) ──
|
# ── 2-model: ornith leads when confident, qwen vetoes borderline ──
|
||||||
# Disagreement = SKIP (conservative). No diverifier — avoids VRAM contention.
|
|
||||||
NO_PROXY = {"proxies": {"http": None, "https": None}}
|
NO_PROXY = {"proxies": {"http": None, "https": None}}
|
||||||
votes = []
|
|
||||||
# Model 1: qwen3.5 fast gate (MacBook — already ran)
|
# Model 1: qwen3.5 fast gate (MacBook — already ran)
|
||||||
v1 = fast_v if fast_v in ("UP","DOWN","SKIP") else "SKIP"
|
v1 = fast_v if fast_v in ("UP","DOWN","SKIP") else "SKIP"
|
||||||
votes.append((v1, fast_c if fast_v in ("UP","DOWN","SKIP") else 0.50, fast_w, "qwen3.5"))
|
c1 = fast_c if fast_v in ("UP","DOWN","SKIP") else 0.50
|
||||||
|
|
||||||
# Model 2: ornith deep verify (GamingPC RTX 3070 — always hot)
|
# Model 2: ornith deep verify (GamingPC RTX 3070)
|
||||||
try:
|
try:
|
||||||
r2 = requests.post("http://10.30.20.186:11434/api/generate",
|
r2 = requests.post("http://10.30.20.186:11434/api/generate",
|
||||||
json={"model": "ornith:latest", "prompt": prompt, "stream": False, "think": False, "keep_alive": "10m",
|
json={"model": "ornith:latest", "prompt": prompt, "stream": False, "think": False, "keep_alive": "10m",
|
||||||
@@ -360,20 +358,24 @@ def llm_vote(cfg, price, mom, mom_score, conn):
|
|||||||
d2 = json.loads(txt2[s2:e2]) if s2 >= 0 else {}
|
d2 = json.loads(txt2[s2:e2]) if s2 >= 0 else {}
|
||||||
v2 = str(d2.get("vote","SKIP")).upper()
|
v2 = str(d2.get("vote","SKIP")).upper()
|
||||||
if v2 not in ("UP","DOWN","SKIP"): v2 = "SKIP"
|
if v2 not in ("UP","DOWN","SKIP"): v2 = "SKIP"
|
||||||
votes.append((v2, float(d2.get("conf",0)), str(d2.get("why",""))[:120], "ornith"))
|
c2 = float(d2.get("conf",0))
|
||||||
|
w2 = str(d2.get("why",""))[:120]
|
||||||
except Exception as ex2:
|
except Exception as ex2:
|
||||||
LOG.warning(f"ornith failed: {ex2}")
|
LOG.warning(f"ornith failed: {ex2}")
|
||||||
votes.append(("SKIP", 0.0, "ornith offline", "ornith"))
|
return v1, c1, f"[qwen-only: {v1} {c1:.2f}] {fast_w[:80]}"
|
||||||
|
|
||||||
# Majority: only trade if BOTH agree (2/2). Any disagreement = SKIP.
|
# ornith confident (>0.55) → lead, regardless of qwen
|
||||||
tally = {"UP": 0, "DOWN": 0, "SKIP": 0}
|
if v2 in ("UP","DOWN") and c2 >= 0.55:
|
||||||
for v, c, w, src in votes:
|
return v2, c2, f"[ornith-lead {v2} {c2:.2f} | qwen={v1}] {w2[:60]}"
|
||||||
tally[v] += 1
|
# both agree → go
|
||||||
winner = "UP" if tally["UP"] == 2 else ("DOWN" if tally["DOWN"] == 2 else "SKIP")
|
if v1 == v2 and v1 in ("UP","DOWN"):
|
||||||
avg_conf = sum(v[1] for v in votes if v[0] == winner) / max(1, tally[winner])
|
avg = (c1 + c2) / 2
|
||||||
reasons = " | ".join(f"{src}={v}" for v, _, _, src in votes)
|
return v1, avg, f"[agree {v1} {avg:.2f}] {w2[:60]}"
|
||||||
tag = "ENSEMBLE" if winner != "SKIP" else "SPLIT"
|
# qwen confident + ornith uncertain → use qwen
|
||||||
return winner, avg_conf, f"[{tag}: {tally['UP']}U/{tally['DOWN']}D/{tally['SKIP']}S] {reasons}"
|
if v1 in ("UP","DOWN") and c1 >= 0.65 and c2 < 0.55:
|
||||||
|
return v1, c1, f"[qwen-lead {v1} {c1:.2f} | ornith={v2}] {fast_w[:60]}"
|
||||||
|
# disagreement or both uncertain → skip
|
||||||
|
return "SKIP", 0.0, f"[split qwen={v1}({c1:.2f}) ornith={v2}({c2:.2f})] {w2[:50]}"
|
||||||
|
|
||||||
def decide(cfg, conn, price):
|
def decide(cfg, conn, price):
|
||||||
"""Two-tier decision: qwen fast-gate → ornith deep-verify.
|
"""Two-tier decision: qwen fast-gate → ornith deep-verify.
|
||||||
|
|||||||
Reference in New Issue
Block a user