發表文章

CL3 v1.6.2 今日工作紀錄

圖片
  CL3 v1.6.2 今日工作紀錄 版本結果 今天已完成 CL3 v1.6.2 的開發收斂、DEV 驗收、STG 驗收與 Git tag 發布。 main 已推送 v1.6.2 tag 已建立並 push DEV 驗收通過 STG 驗收通過 本次主題 Logging v1 / Admin Log Center MVP 正式落地 這次不是單點修 bug,而是把 CL3 的 log 能力往前推了一個完整層級,從原本偏向容器 stdout 與人工追查,升級為: 有結構化欄位 可查詢 可過濾 可追 run_id / symbol / driver 可在 Admin 中直接查看 今日完成項目 1. 完成 unified system logs v1 建立 system_logs 的統一欄位結構,正式導入以下核心欄位: timestamp_utc level service module module_version event_code message run_id symbol driver source extra_json 同時保留相容舊欄位,避免一次性硬切造成舊流程失效。 2. 完成 DB migration 完成並套用: 008_logging_audit_foundation_v1.sql 009_system_logs_schema_v1.sql 成果包括: system_logs 新欄位建立 舊資料回填 查詢索引建立 DEV / STG 兩環境 migration 驗證成功 3. 完成共用 structured logger 完成 core / api / admin 共用 logging helper 串接,支援: stdout JSON line 輸出 DB best-effort 寫入 自動帶入 service/module/module_version 可附帶 run_id / symbol / driver / source / extra_json 並補強: DB write ...

CL3 開發週記|v1.4.x 走向 v1.5.1:從功能堆疊,走向可維護的平台工程

圖片
  CL3 開發週記|v1.4.x 走向 v1.5.1:從功能堆疊,走向可維護的平台工程 發布日期:2026-03-14 作者:Michael 專案: CL3 Platform 這一週,CL3 的開發重點,不只是新增功能,而是更明確地把整個系統往「平台化、工程化、可維護化」推進。 若說前一階段的核心,是讓 CL3 能夠完成資料抓取、快照寫入、API 輸出與 Dashboard 呈現;那麼這一週更重要的任務,則是讓系統從「已經能運作」,進一步提升為「可以長期維護、可以穩定交付、可以逐步擴張」。 本週的工作,橫跨了幾個核心面向: Dashboard UI 與資訊顯示優化 中英文 / 多語系架構落地 Admin 資產管理流程強化 ALLIANZ 與 YFINANCE driver 防呆方向明確化 DEV 到 STG 的部署與交付流程整理 版本、模組資訊與工程文件持續補強 表面上看,這些工作有些像是修正細節、補文件、調整欄位、優化畫面;但從系統發展的角度來看,這些事情都指向同一個目標: 讓 CL3 從一套功能集合,逐步成長為一個真正可持續演進的平台。 一、本週的核心意義:讓 CL3 更像一個真正可維運的系統 CL3 目前的架構方向已經相當明確: Core :負責資料抓取、計算、市場狀態判斷與快照寫入 PostgreSQL :作為單一資料真實來源( SSOT ) API / Dashboard :專注讀取與呈現,不直接改寫核心決策資料 Admin :負責標的管理、資料來源設定與維護流程 這個架構本身,不只是技術拆分,而是一種治理方式。 因為只要系統未來要持續擴張,不論是增加更多標的、更多 driver、更多說明頁、更多管理功能,最後都會回到兩個根本問題: 第一,資料是否可信。 第二,維護是否可控。 這一週的很多工作,正是在補這兩個基礎。 二、Dashboard 進展:從能顯示,到更清楚、更一致、更易理解 1. Telemetry 卡片切換功能完成 本週完成了 Dashboard 上 Telemetry 區塊的顯示開關功能,並加入 localStorage 持久化。 這代表使用者可以依自身偏好,決定是否顯示特定資訊卡片,而且重新整理頁面後仍能保留上...

CL3 Blog — Designing the CL3 Market Regime Engine

圖片
Designing the CL3 Market Regime Engine 在投資世界中,大部分系統都在做同一件事情: 找出「應該買什麼」。 但在長期市場觀察之後,我開始意識到一件更重要的事情: 在多數情況下, 決定「要不要在市場裡」 , 比決定「買哪一檔股票」更重要。 這個觀察,成為 CL3 Market Regime Engine 的起點。 為什麼 Market Regime 很重要 市場並不是一個靜態環境。 有時候市場處於: Bull Market 趨勢上升、風險偏好高 有時候市場進入: Neutral Phase 沒有明確方向、波動增加 有時候市場則進入: Risk-Off Environment 資金快速撤離、系統性風險上升 如果用一個簡單比喻: 投資就像在海上航行。 有些時候是 順風航行 , 有些時候是 亂流海域 , 有些時候則是 風暴區域 。 如果忽略這些環境差異,再好的選股策略也可能失效。 多數投資系統忽略了 Market Regime 在我觀察過的許多交易系統中,大多數策略都專注在: 技術指標 因子模型 選股排名 AI 預測 但卻很少系統真正處理一個問題: 市場現在處於什麼環境? 很多策略其實只在 Bull Market 有效。 一旦市場進入 Risk-Off , 策略的 Sharpe Ratio、Drawdown、甚至整體邏輯都會崩壞。 這也是為什麼很多回測漂亮的策略,在實際市場中很難長期存活。 CL3 的核心思考:Exposure Control CL3 的第一個設計原則是: 控制 Exposure,比選股更重要。 在 CL3 系統中, Market Regime 會直接影響整體資產配置。 例如: Market Regime Target Exposure Bull 100% Neutral 60% Risk-Off 40% 這意味著: 即使選股系統仍然在運作, 整體市場環境仍然會決定最大資金暴露。 這是一種風險優先(Risk-First)的設計。 Bull / Neutral / Risk-Off CL3 Market Regime Engine 將市場分成三個主要狀態: ...

Building CL3 — From Manual Trading to a Decision Engine

圖片
  Building CL3 為什麼我決定建立自己的 Investment Decision Engine 每一個投資人,最終都會面對同一個問題。 市場充滿不確定性、資訊噪音,以及難以預測的變化。 但隨著時間,我逐漸意識到一件更重要的事情: 真正困難的不是市場,而是決策。 多年以來,我和大多數投資人一樣參與市場。 看圖表(Charts) 閱讀新聞(News) 觀察價格變動(Price Movements) 然後依靠經驗做出投資判斷。 有時候這些判斷很成功。 但有時候並不如此。 慢慢地,我發現一個現象: 人的判斷其實並不穩定。 有些時候,我們可以非常理性與紀律。 但在其他時候,情緒(Emotion)、恐懼(Fear)、或市場壓力會干擾決策。 同一個投資人,在不同時間點,可能會做出完全不同的投資行為。 這讓我開始思考一個問題: 如果投資決策可以被系統化(Systematized),會是什麼樣子? 不是一個黑箱的 Trading Bot 。 而是一個更有意義的東西: Investment Decision Engine 這個想法,就是 CL3 的起點 。 Why CL3? 有趣的是, CL3 這個名字並不是一開始就精心設計的品牌。 它其實來自一次意外。 當時我正在和 AI 討論投資相關的想法,在回覆訊息時,我忘記把鍵盤從 Zhuyin Input Method(中文注音輸入法) 切換回中文。 我敲下了三個鍵: C(ㄏ) L(ㄠ) 3(ˇ) 在注音輸入法中,這三個鍵其實會輸入一個中文字: 「好」 但在當時的對話情境中,AI 看到的只是: CL3 有趣的是,AI 並沒有把它當作錯字。 反而開始回應一段關於 CL3 系統架構與投資方法 的說明。 那一刻我突然覺得: 也許這不只是一次打錯字。 也許這可以成為一個專案名稱。 於是 CL3 就成為了我開始撰寫這個投資系統時使用的專案代號。 What CL3 Means 隨著系統逐漸發展,我發現這三個字母其實也可以代表整個系統的核心理念: CL3 = Cycle · Logic · Layer Cycle 市場總是在循環(Market Cycle)。 牛市(Bull Market)、修正(Correction)、風險收縮(Risk...

戰未來十年!《最終章》18U 機櫃巡禮 & 未來展望

圖片
  我們終於來到了最後一章。硬體已經入庫、軟體已經設定。是時候,拉開這個 18U 司令部的帷幕了。 最終章:18U 機櫃巡禮 & 未來展望 這不只是一個鐵箱子,這是我未來十年數位生活的「心臟、大腦、與神經中樞」的家。 我選擇的是 18U、600mm 寬、600mm 深 的標準機櫃。為什麼是 18U?因為 22U 對一個「房間」來說太高、太有壓迫感;18U (約 90-100cm) 則是一個完美的「矮櫃」高度,它低調地藏在 2F 的角落,卻掌控著整棟房子的所有資訊流。 18U 機櫃巡禮 (The Tour) 拉開機櫃的玻璃門,映入眼簾的是閃爍的燈號與整齊的佈局。我的佈局是由上而下,依據「網路訊號流」與「散熱」來規劃的: (以下請自行搭配您拍攝的機櫃照片) [機櫃正面 - 邏輯層] U18-U17 (佈線): 24 埠 Cat 6a 跳線面板 (Patch Panel) (照片描述) 這是機櫃的「門面」。全屋 3 層樓拉來的 20 多條 Cat 6a 網路線,全部在這裡匯聚、端接。這是我告別「線路地獄」的第一步。 U16 (理線): 1U 理線槽 (Brush Panel) (...描述) 靈魂藏在細節裡。我使用 0.3m (30公分) 的 UniFi 跳線 (Patch Cords),從 U17 的面板「向下」跳接到 U15 的交換器。黑色的線代表 Trusted VLAN ,藍色的線代表 IoT VLAN 。 U15 (心臟): QNAP QSW-M2116P-2T2S (2.5G/10G PoE 交換器) (...描述) 這就是那台「零妥協」的效能心臟。全屋的 2.5G AP ( U7 Pro )、2.5G HA 主機 ( N100 )、以及 10G 電腦和 10G NAS 全部插在這裡。它的燈號閃爍,代表 10G 的血液正奔流不息。 U14 (大腦): UniFi UDM-SE (路由器/控制器) (...描述) 機櫃的「大腦」。它靜靜地坐在交換器下方,透過背後那條 UC-DAC-SFP+ (10G DAC 線),以 10G 的速度與 QNAP 交換器對話。 U13 (散熱): 1U 通風空白面板 (...描述) 專業的散熱規劃。我刻意在 UDM-SE 和下方 NAS 之間留出 1U 的空間,確保冷空氣可以流通。 U12-U10 ...

戰未來十年!《第四章》關鍵設定筆記 (VLAN & HA)

圖片
  好的,硬體只是「骨架」,軟體設定才是「神經」。這一章,我們要讓網路「活」起來,並在「安全」與「便利」之間,劃出一條完美的界線。 第四章:關鍵設定筆記 - 讓 VLAN 與 Home Assistant 完美協作 我的機櫃 (18U) 已經就位, UDM-SE 和 TVS-h674 的風扇聲正譜出第一首交響曲。但現在,它們都還只是「孤島」。 是時候進入 UniFi 控制器,編織我的網路神經了。這一步將決定誰能與誰對話,這也是我 10G 影音內網的「安全基石」。 1. UDM-SE:用 VLAN 建立數位護城河 我的第一項任務,就是執行「第一章」的藍圖,在 UDM-SE 上建立我的「數位城堡」。 如果你是 UniFi 新手,這個介面非常直觀: 登入 UDM-SE: 透過 unifi.ui.com 或 192.168.1.1 登入。 修改預設網路 (Default): 導航至 設定 (Settings) > 網路 (Networks) 。 點選 Default (預設) 網路。 (重要) 我不喜歡 192.168.1.x 網段。我將它重新命名為 Trusted ,並將 IP 網段改為 192.168.10.1/24 。 這裡就是我的「皇室內城」(VLAN 10)。 建立 IoT 網路 (VLAN 20): 點選 Create New Network 。 Network Name (名稱): IoT VLAN ID (關鍵): 20 Gateway/Subnet (IP 網段): 192.168.20.1/24 (Pro-Tip) 在「Advanced」中,我 關閉 了「IGMP Snooping」和「mDNS」,因為我不希望 IoT 設備的垃圾廣播封包污染我的網路。 這裡就是我的「隔離廣場」。 建立訪客網路 (VLAN 30): 再次點選 Create New Network 。 Network Name: Guest VLAN ID: 30 Gateway/Subnet: 192.168.30.1/24 (關鍵) 網路類型選擇 Guest Network 。UniFi 會自動幫你建立「客戶端隔離」和「禁止存取內網」的防火牆規則,省時省力。 防火牆呢? UniFi 預設的防火牆規則是「 VLAN 互不相通,但全部允許...