🚀 【量化數據工程】用 Python 打造台股「市場寬度」監控系統:全自動化分析 2,600 檔標的分佈

更新 發佈閱讀 4 分鐘
投資理財內容聲明

前言

在金融市場中,單一標的的漲跌往往帶有隨機性,但「全市場的報酬分佈」則能揭示最真實的市場情緒。為了效率化掌握台股全貌,我利用 Python 與 GitHub Actions 打造了一套全自動化的數據分析管線。它不負責挑選明牌,而是透過統計矩陣,每天準時將 2,600 檔標的的動能分佈送達我的收件匣。


一、 核心架構:無伺服器(Serverless)的數據流水線

這套系統的目標很明確:用最少的硬體資源,處理最龐大的市場數據。 我選擇將程式碼寄生在 GitHub 的虛擬機上,實現 100% 自動化運作。 【建議插圖:GitHub Actions 執行流程圖,展現從觸發到發信的自動化步驟】

系統邏輯分為三個層次:

  1. 高效採集:掃描台股全市場清單,下載兩年期的歷史日 K 線。
  2. 統計分析:計算不同週期下的「報酬矩陣」。
  3. 分佈視覺化:繪製直方圖,觀察市場漲跌家數的比例分佈。

二、 數據採集:解決 2,600 檔標的的「存取限制」

在開發過程中,最困難的技術挑戰在於數據源的頻率限制(Rate Limit)。當你需要短時間存取 2,600 檔標的時,傳統爬蟲極易被封鎖。

1. 高韌性的下載邏輯

downloader_tw.py 中,我設計了隨機延遲(Jitter)與重試機制


  • 模擬真人行為:每次請求間隔隨機化,打亂規律性。
  • 退避算法:偵測到伺服器擁塞時自動暫停,確保數據完整性。

2. 精確的市場分類

台股代號結構複雜,程式需精確判定上市(.TW)與上櫃/興櫃(.TWO)等不同後綴,否則將導致大量無效請求。


三、 數據統計:滾動窗口下的報酬矩陣

這套系統不看固定的「日曆月份」,而是採用 「滾動窗口 (Rolling Window)」 邏輯進行統計。


  • 三維週期監控:同步計算 5日、20日、250日 的報酬率。
  • 分佈矩陣:統計「最高價」、「收盤價」與「最低價」相對於基準點的位階。
  • 市場寬度(Market Breadth):透過直方圖,我可以看到有多少比例的股票處於超漲或超跌狀態,這比單純看大盤指數更能反映市場的健康度。

四、 系統擴展:全球市場的平行運算能力

這個專案在架構上具備極強的 「水平擴展性」。 透過 GitHub Actions 的 Matrix Strategy (矩陣策略),這套邏輯可以輕易複製到美、日、韓等全球市場。藉由多台雲端虛擬機平行作業,能將數小時的下載量壓縮至 15 分鐘內完成,展現了雲端運算在量化數據處理上的優勢。



五、 結語:用統計思維觀察市場

這套系統是我對數據工程的一次實踐。它並不提供投資建議,而是將枯燥的原始數據轉化為可視化的統計圖表。當我們能掌握 2,600 檔標的的整體分佈時,就能以更宏觀、客觀的視角觀察台股。

專案原始碼: 👉 https://github.com/grissomlin/taiwan-stock-monitor 歡迎對自動化數據分析有興趣的朋友一起交流討論!

vocus|新世代的創作平台


vocus|新世代的創作平台
vocus|新世代的創作平台
vocus|新世代的創作平台
vocus|新世代的創作平台
vocus|新世代的創作平台
vocus|新世代的創作平台
vocus|新世代的創作平台
vocus|新世代的創作平台
vocus|新世代的創作平台


vocus|新世代的創作平台
vocus|新世代的創作平台
vocus|新世代的創作平台
vocus|新世代的創作平台
vocus|新世代的創作平台
vocus|新世代的創作平台




留言
avatar-img
《炒股不看周月年K漲幅機率就是耍流氓》
16會員
290內容數
普通上班族,用 AI 與 Python 將炒股量化。我的數據宣言是:《炒股不做量化,都是在耍流氓》。
你可能也想看
Thumbnail
在 Python 自動化領域中,pyautogui 是非常常用的工具,可以幫你模擬滑鼠與鍵盤操作。 這篇帶你快速掌握: ✔ 滑鼠移動 ✔ 點擊操作 ✔ 拖曳 ✔ 滾動
Thumbnail
在 Python 自動化領域中,pyautogui 是非常常用的工具,可以幫你模擬滑鼠與鍵盤操作。 這篇帶你快速掌握: ✔ 滑鼠移動 ✔ 點擊操作 ✔ 拖曳 ✔ 滾動
Thumbnail
本文分析導演巴里・柯斯基(Barrie Kosky)如何運用極簡的舞臺配置,將布萊希特(Bertolt Brecht)的「疏離效果」轉化為視覺奇觀與黑色幽默,探討《三便士歌劇》在當代劇場中的新詮釋,並藉由舞臺、燈光、服裝、音樂等多方面,分析該作如何在保留批判核心的同時,觸及觀眾的觀看位置與人性幽微。
Thumbnail
本文分析導演巴里・柯斯基(Barrie Kosky)如何運用極簡的舞臺配置,將布萊希特(Bertolt Brecht)的「疏離效果」轉化為視覺奇觀與黑色幽默,探討《三便士歌劇》在當代劇場中的新詮釋,並藉由舞臺、燈光、服裝、音樂等多方面,分析該作如何在保留批判核心的同時,觸及觀眾的觀看位置與人性幽微。
Thumbnail
這是一場修復文化與重建精神的儀式,觀眾不需要完全看懂《遊林驚夢:巧遇Hagay》,但你能感受心與土地團聚的渴望,也不急著在此處釐清或定義什麼,但你的在場感受,就是一條線索,關於如何找著自己的路徑、自己的聲音。
Thumbnail
這是一場修復文化與重建精神的儀式,觀眾不需要完全看懂《遊林驚夢:巧遇Hagay》,但你能感受心與土地團聚的渴望,也不急著在此處釐清或定義什麼,但你的在場感受,就是一條線索,關於如何找著自己的路徑、自己的聲音。
Thumbnail
從 JavaScript 到 Python
Thumbnail
從 JavaScript 到 Python
Thumbnail
背景:從冷門配角到市場主線,算力與電力被重新定價   小P從2008進入股市,每一個時期的投資亮點都不同,記得2009蘋果手機剛上市,當時蘋果只要在媒體上提到哪一間供應鏈,隔天股價就有驚人的表現,當時光學鏡頭非常熱門,因為手機第一次搭上鏡頭可以拍照,也造就傳統相機廠的殞落,如今手機已經全面普及,題
Thumbnail
背景:從冷門配角到市場主線,算力與電力被重新定價   小P從2008進入股市,每一個時期的投資亮點都不同,記得2009蘋果手機剛上市,當時蘋果只要在媒體上提到哪一間供應鏈,隔天股價就有驚人的表現,當時光學鏡頭非常熱門,因為手機第一次搭上鏡頭可以拍照,也造就傳統相機廠的殞落,如今手機已經全面普及,題
Thumbnail
isalnum() : 檢測字串是否由字母和數字組成 isalpha() : 檢測字串是否只由字母組成 isalnum() str1 = "abc123" print(str1.isalnum()) str2 = "pop.cat" print(str2.isalnum()) str3
Thumbnail
isalnum() : 檢測字串是否由字母和數字組成 isalpha() : 檢測字串是否只由字母組成 isalnum() str1 = "abc123" print(str1.isalnum()) str2 = "pop.cat" print(str2.isalnum()) str3
Thumbnail
在做自動化工具或測試腳本時,常常會需要操作視窗,例如: 👉 找到特定程式 👉 切換視窗 👉 自動化點擊操作 這時候,pyautogui 是一個很好上手的工具。
Thumbnail
在做自動化工具或測試腳本時,常常會需要操作視窗,例如: 👉 找到特定程式 👉 切換視窗 👉 自動化點擊操作 這時候,pyautogui 是一個很好上手的工具。
Thumbnail
《轉轉生》(Re:INCARNATION)為奈及利亞編舞家庫德斯.奧尼奎庫與 Q 舞團創作的當代舞蹈作品,結合拉各斯街頭節奏、Afrobeat/Afrobeats、以及約魯巴宇宙觀的非線性時間,建構出關於輪迴的「誕生—死亡—重生」儀式結構。本文將從約魯巴哲學概念出發,解析其去殖民的身體政治。
Thumbnail
《轉轉生》(Re:INCARNATION)為奈及利亞編舞家庫德斯.奧尼奎庫與 Q 舞團創作的當代舞蹈作品,結合拉各斯街頭節奏、Afrobeat/Afrobeats、以及約魯巴宇宙觀的非線性時間,建構出關於輪迴的「誕生—死亡—重生」儀式結構。本文將從約魯巴哲學概念出發,解析其去殖民的身體政治。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News