HK 溫度盤口做 T

{{ d.mode || '—' }} HKT {{ d.hkt || '—' }} 運行 {{ fmtDur(d.uptime_s) }} {{ conn ? '已連線' : '斷線中' }} 市場 {{ d.event && d.event.ok ? '已載入' : '未載入' }} CLOB Relay {{ d.event.slug }}

權益 初始 ${{ n(cap.initial,0) }}

${{ n(cap.equity,2) }}
{{ sgn(cap.return_pct) }}{{ n(cap.return_pct,3) }}% ({{ sgn(cap.equity-cap.initial) }}${{ n(Math.abs(cap.equity-cap.initial),2) }})
現金${{ n(cap.cash,2) }}
持倉市值 (按 best_bid) ${{ n(cap.inventory,2) }}
可動用${{ n(cap.available,2) }}

已實現損益

{{ sgn(cap.realized_pnl) }}${{ n(Math.abs(cap.realized_pnl||0),2) }}
已付 taker 費 −${{ n(cap.fees_paid,3) }}
平倉筆數{{ (d.closed||[]).length }}
勝率{{ winRate }}
每筆均值 {{ avgPnl==null?'—':(sgn(avgPnl)+n(Math.abs(avgPnl)*100,2)+'¢/股') }}

當前讀數 {{ rd.source || '' }}

{{ n(rd.temp,1) }}°C  {{ rd.dT==null?'':(sgn(rd.dT)+n(Math.abs(rd.dT),1)) }}
讀數時刻{{ rd.reading_time }}
今日滾動最高 M {{ n(rd.max_temp,1) }}°C → 桶 {{ leadBucket }}
gap = T − M {{ fair.gap==null?'—':n(fair.gap,2) }}
距抵達{{ age }}s
等待第一筆 relay 讀數…

公允價模型 V δ 表 {{ cfg.fv_table_days }} 天

時槽{{ fair.slot_label }}
gap 分組{{ fair.gap_label }}
格內樣本 n {{ fair.n_samples }}
E[δ] 還會再漲+{{ n(fair.delta_ev,2) }}°C
領先桶 V {{ leadV==null?'—':(n(leadV*100,1)+'¢') }}
無讀數 ⇒ 無法算 V(不猜 0.5

11 桶盤口 × 公允價 桶 = floor(當日最高溫)|黃底 = 領先桶|灰 = 已死(NO 必結算 $1)

V(YES)YES bidYES askask 量 ≤80¢ 深度價差掛單價edge = V−掛單價 NO bidNO ask機率條
{{ row.title }} {{ row.V==null?'—':n(row.V*100,1)+'¢' }} {{ px(row.yes.bid) }} {{ px(row.yes.ask) }} {{ row.yes.ask_sz==null?'—':n(row.yes.ask_sz,0) }} {{ row.yes.depth_le80==null?'—':n(row.yes.depth_le80,0) }} {{ row.yes.spread==null?'—':n(row.yes.spread*100,1)+'¢' }} {{ row.limit==null?'—':(n(row.limit*100,1)+'¢') }} ★ {{ sgn(row.edge_maker)+n(Math.abs(row.edge_maker)*100,1) }}¢ {{ row.edge_maker==null?'—':(sgn(row.edge_maker)+n(Math.abs(row.edge_maker)*100,1)+'¢') }} {{ px(row.no.bid) }} {{ px(row.no.ask) }}
Σ V = {{ n(sumV*100,1) }}¢ · 本輪未做 negRisk 正規化 —— 有實質質量的桶報價缺失(排除:{{ (fair.dropped_buckets||[]).join('/') }}°C, 質量上界 {{ n(fair.missing_mass_ub*100,0) }}¢)。 ΣV 偏離 100 是誠實的,不是 bug:硬除一個缺了質量的分母會把剩下的桶整個放大 (2026-08-29 12:53 曾把 32 桶從 44.5¢ 放大到 91.6¢)。 Σ V = {{ n(sumV*100,1) }}¢(負風險事件,理論恆為 100¢;偏離即模型或盤口有一邊錯) Σ V 無法計算 —— 目前讀數沒有當日最高溫 M(HKT 00:00 前後 HKO 尚未建立), 這不是模型說 0,是沒有資料

🎯 手動預埋單 指定溫度 / 價格 / 份額 / 溫度幅度 ⇒ 讀數一到、條件成立就立刻 taker 搶。 搶到後 完全走既定離場流程(觀察窗探針 → undercut 追價 → 階梯讓價 → 下次讀數前硬平)

⛔ {{ mErr }}
條件全部留空 = 下一筆讀數無條件搶。價格上限 不套自動策略的 80¢ 閘 (死桶掃 NO 本來就要買到 99¢),上限 {{ n((cfg.market&&cfg.market.manual_price_max||0.99)*100,0) }}¢。
ID標的價格上限份額觸發條件 狀態結果備註
{{ m.id }} {{ m.bucket }}°C {{ m.outcome }} {{ px(m.max_price) }} {{ n(m.shares,0) }} ΔT ≥ {{ m.dT_min }} ΔT ≤ {{ m.dT_max }} 溫度 ≥ {{ m.temp_min }} 溫度 ≤ {{ m.temp_max }} 反覆 無條件 {{ m.status }} {{ m.fired_reason || '—' }} ({{ m.fire_count }} 次) {{ m.note }}
目前沒有預埋單。

最近一次觸發的逐條判準 ★ 沒進場也記,而且記為什麼沒進 —— 只記成交會看不出濾網擋掉了什麼

標的動作Vaskedge 想買成交閘門
{{ x.leg }} {{ x.label }} {{ x.action }} {{ x.V==null?'—':n(x.V*100,1)+'¢' }} {{ px(x.ask) }} {{ x.edge==null?'—':(sgn(x.edge)+n(Math.abs(x.edge)*100,1)+'¢') }} {{ x.want_shares==null?'—':n(x.want_shares,0) }} {{ x.fill? (n(x.fill.shares,0)+' @ '+px(x.fill.avg)) : '—' }} {{ k }} {{ fmtGate(g) }} 死桶門檻 M≥{{ x.threshold }}
尚未觸發過。觸發條件 = relay 推來新的 reading_time。

未平倉 {{ (d.positions||[]).length }} 筆

標的份額成本打平 掛賣模式峰值ask現 bid浮動 剩餘操作
{{ p.label }} 已延期 ×{{ p.defer_count }} {{ p.leg }} {{ n(p.shares,0) }}{{ px(p.entry_price) }} {{ px(breakeven(p)) }} {{ px(p.exit_limit) }} {{ p.exit_mode }} {{ px(p.peak_ask) }} @{{ n(p.peak_ask_at_s,0) }}s {{ px(bidOf(p)) }} {{ float_(p)==null?'—':(sgn(float_(p))+'$'+n(Math.abs(float_(p)),2)) }} {{ remain(p)==null?'結算':remain(p)+'s' }}
空倉。

已平倉 最近 {{ (d.closed||[]).length }} 筆

標的份額方式持有損益
{{ p.label }}{{ n(p.shares,0) }} {{ px(p.entry_price) }}{{ px(p.exit_price) }} {{ p.exit_kind }} {{ p.exit_ts? Math.round(p.exit_ts-p.entry_ts)+'s':'—' }} {{ sgn(p.pnl) }}${{ n(Math.abs(p.pnl||0),2) }}
尚無平倉紀錄。

資料源健康

兩條 relay 路徑同時訂閱,先到的先用。誰快是實測問題,不是推理問題。
路徑連線事件首達落後時均值
{{ shortUrl(p.url) }} {{ p.connected?'ON':'OFF' }} {{ p.events }} {{ p.wins }} {{ p.avg_lag_ms_when_lost==null?'—':n(p.avg_lag_ms_when_lost,0)+'ms' }} (n={{ p.lag_samples }})
CLOB 訊息 {{ clobS.msgs }}
CLOB 重連{{ clobS.reconnects }}
有 bid 的簿 {{ clobS.books_with_bid }} / {{ clobS.tokens }}
最後訊息 {{ clobS.last_msg_age_s==null?'—':clobS.last_msg_age_s+'s 前' }}

凍結參數 2026-08-29 市場錨定 V

進場方式{{ cfg.entry.entry_maker?'掛單 maker(bid+'+cfg.entry.maker_improve_ticks+'檔)':'taker 吃 ask' }}
★ 主閘 Δ̂ ≥{{ n(cfg.entry.delta_min*100,1) }}¢
edge(僅參考){{ n(cfg.entry.edge_min*100,0) }}¢ · 不當門檻
進場 |ΔT| ≥{{ cfg.entry.dT_min }}°C{{ cfg.entry.dT_min>0?'':'(已停用)' }}
掛單存活{{ cfg.entry.entry_ttl_s }}s(新讀數一到即撤)
時段HKT {{ cfg.entry.hours[0] }}–{{ cfg.entry.hours[1] }}
ask 上限{{ n(cfg.entry.ask_max*100,0) }}¢
V 下限 {{ cfg.entry.v_min>0 ? n(cfg.entry.v_min*100,0)+'¢(變體 B)' : '無' }}
單腿份額上限{{ cfg.max_shares_per_leg }} 股
合併曝險上限${{ cfg.max_total_notional }}
離場錨{{ cfg.exit.anchor }}
離場掛 V −{{ n(cfg.exit.margin*100,0) }}¢
硬平提前{{ cfg.exit.force_lead_s }}s
多腿{{ cfg.multi_leg?'開(lead+1 的 NO)':'關' }}
死桶搶單 {{ cfg.dead_bucket.enabled?('開 ≤'+n(cfg.dead_bucket.max_price*100,0)+'¢ / $'+cfg.dead_bucket.budget):'關' }}
tick / 最小股 {{ n(cfg.market.tick*100,1) }}¢ / {{ cfg.market.min_shares }}
手續費 {{ cfg.fee.enabled? ('rate '+cfg.fee.rate+' taker only'):'關' }}
{{ cfg.fee.formula }}
出處:{{ cfg.fee.source }}

⚠️ 誠實聲明

① 選擇偏誤:edge≥5¢、|ΔT|≥0.3、11–15 時、L=V−2¢ 四個門檻是 在同一份 70 天資料上掃出來的。樣本外未驗證前,回測的 +3.74¢/筆是樂觀估計

② maker 成交已用真實隊列模型(2026-08-28 起):qahead/qbehind 逐筆維護,成交訊號取自交易所的 last_trade_price深度變小一律不當成交(可能只是撤單)。掃穿整層時仍受 taker 該筆 的量限制,不會憑空全額成交。
殘留的樂觀:交叉簿(best_bid > 我方限價)一律判必成交。

③ 手續費形狀未獨立驗證:rate=0.05/takerOnly 是 Gamma 硬證據, 但公式裡 exponent 的位置與 rebate 歸屬沿用本專案 BTC 那條已驗證的形狀。 rebate 一律不計(寧可低估)。

④ V 模型只有 4–8 月,沒有分季節,也沒用到預報/雲量/降雨。

⑤ 深度模型是誠實的:taker 逐檔吃,平均價一定比 best_ask 差 —— 回測 v1 用「窗內最低 ask」的樂觀偏誤在這裡已修掉。

⑥⛔ 這個策略在 16 天真實盤口回放上是虧的: 基線 −6.36¢/股(16 天 89 筆、勝率 31%、正的天數 2/14)。 ⚠️ 舊的 −5.74¢ 是錯的:當時 pnl 漏記了 taker 手續費 (現金有扣、損益沒扣,兩本帳差 $108.73),已修並加上每日帳目恆等式檢查。 四個離場變體全部為負 ⇒ 進場信號本身沒有 edge。 它現在跑 PAPER 的目的是收集樣本外證據,不是因為它會賺錢。 完整證據:docs/hkweather/12

事件流 最近 {{ trace.length }} 筆(全量落盤在 hkwsim/logs/trace_*.jsonl)

{{ hms(t.ts) }} [{{ t.chan }}.{{ t.event }}] {{ brief(t) }}