標籤

2026年3月30日 星期一

AI當沖實戰 - 找同族群概念的股票

「精準抓出同族群連動」必須賦予不同的「權重(Weight)」與「比對邏輯」

只靠一個欄位(如「概念」)會漏掉隱性標的,三個全上則會因為雜訊太多(例如「IC製造」太泛濫)導致成群效果變差。

以下是針對你的 Python 程式優化建議的三位一體比對法


1. 欄位分工與建議權重

在程式邏輯中,你可以把這三個欄位看作「由廣到精」的篩選網:

欄位名稱角色定位程式作法建議權重 (得分)
族群概念核心引擎精確比對。這是人工整理過的「最熱標籤」,聯動性最強。3 分
主要業務補漏雷達關鍵字包含比對。用來抓出概念欄位沒寫到的隱性產品(如:液冷、天線)。1 分
產業別最後防線大分類過濾。用來確認兩間公司是否在同個大圈子(如:都是「通訊網路」)。0.5 分

2. 建議的程式比對邏輯(Python 虛擬碼)

不要用 if A == B,改用 「計分制 (Scoring System)」。這樣你的「同群」就不會只有「是或不是」,而是有**「相關程度」**。

Python
def get_similarity_score(stock_a, stock_b):
    score = 0
    
    # 1. 概念比對 (Split 後做集合交集)
    set_a = set(stock_a['concept'].split('/'))
    set_b = set(stock_b['concept'].split('/'))
    common_concepts = set_a.intersection(set_b)
    score += len(common_concepts) * 3  # 每命中一個核心概念得 3 分
    
    # 2. 業務關鍵字比對 (模糊匹配)
    # 如果 A 的概念詞出現在 B 的業務內容裡
    for concept in set_a:
        if concept in stock_b['business']:
            score += 1
            
    # 3. 產業別一致性
    if stock_a['industry'] == stock_b['industry']:
        score += 0.5
        
    return score, list(common_concepts)

3. 為什麼「三個都要」?(實戰案例)

拿 3/27 的數據來看:

  • 只看「概念」:你可能只抓到 華通 與 燿華 是「低軌衛星」。

  • 加上「業務」:你會發現 昇達科 業務寫了「衛星天線」,牧德 業務寫了「PCB 檢測」。

  • 結果:你的程式會自動把 華通(板)昇達科(組件)牧德(設備) 串在一起。這就是**「產業鏈連動」**,這對你做「獲利最大化」非常有幫助,因為資金通常會從板廠流向設備。


4. 程式執行流程優化建議

  1. 預處理 (Preprocessing)

    • 將這三個欄位合併成一個長字串 search_text

    • 移除所有括號、空白字元。

  2. 標籤正規化

    • 使用我給你的 concept_mapping 字典,先跑一遍取代。把「DRAM」跟「記憶體」統一成「記憶體」。

  3. Top N 母體判定

    • 先取成交額前 50 檔。

    • 雙向掃描:以 A 股票為中心,掃描剩餘 49 檔,計算分數。

    • 門檻過濾:得分 > 3 分才顯示為「同群」。

🛡️ Zen 的實戰開發小提醒

在你的第二表(選股研究)中,當某個「概念」的 平均得分最高 且 族群內有一半以上收紅 時,這就是你當天要鎖定的 「主攻族群」

這套作法能幫你避開「亞翔跌停,卻不知道要避開漢唐」這種產業資訊斷層的風險。

程式跑出來的結果




沒有留言:

張貼留言