跳到主要內容

發表文章

Gemini 分析投顧研究的 MLCC 產業

今天下午參加了凱基證券辦的一場線上講座, 主要分析 MLCC(Multi-Layer Ceramic Capacitor) 多層陶瓷電容, 可用在許多的電子產品中, AI 盛行後, 大量需要高精密度的 MLCC 用在 AI 相關產品上, 因此也造就相關廠商漲了一波。 我對這個產業所知不多, 因此我在講座過程中截了需多張投影片的圖, 在會後我提供給 Gemini, 並詢問了以下問題: " 根據這些簡報, 可以幫我分析一下在台灣股市可以投資 MLCC 相關股票嗎?如果建議投資, 哪一檔股票最推薦呢?" Gemini 很盡心地幫我總結會議內容, 也根據簡報中, 推薦禾伸堂這支股票(如下圖) 但我不知道, Gemini 是單純根據簡報給我答案, 還是有分析過才給我答案的, 所有我又問了: " 可否就網路上可以收集到的最新資訊, 與凱基的這份報告比較, 凱基的分析是否合理?" 果然這時候 Gemini 才真正做一些分析(但還是建議要自己再驗證一下資訊的正確與否) Gemini 認為產業基本面分析很合理, 但禾伸堂的2026與2027 EPS 凱基過於樂觀: 報告預估 2026 年 EPS 為 38 元、2027 年高達 189 元。這是一種「零死角、無競爭對手、利潤率極大化」的完美數學模型。 根據最新的財務數據,禾伸堂近期的 EPS 表現大約落在 7.69 元左右,距離 38 元甚至 189 元的爆發性成長還有極大的現實差距。 但我看了原始的講座投影片, 沒看到 2026 EPS 是 38元, 2027 是 189 的部分(原始資料中, 2026 EPS 預計是 13.15, 2026上半年已經是 6.73, 全年 13.15算是合理, 2027 則是 38.9), 這部分應該是 AI 判讀圖片中欄位錯誤所致。 至於該不該投資禾伸堂, 我只能說以今年的預估本益比(今日股價 588)禾伸堂超過 40, 是有點高, 也許要再跌一陣子再考慮。
最近的文章

用 Antigravity CLI 將截圖中的表格轉換成可編輯的 xlsx

下午參加了一個證券公司辦的線上講座, 用我很熟悉的 Webex, 主題是: "AI算力引路、應用爆發台股5萬點財富超前部署!", 講座內容很豐富, 講者也分享了幾個券商研究部門的分析資料, 如下圖: 我看了想之後再研究分析一下, 當下立刻截圖, 想說之後再手動鍵入 google sheets (是的我沒花錢買 Microsoft Excel), 後續講者又分享的好幾個不同的表格, 我也儘可能的都截圖下來。 會議結束後, 看到好多個截圖, 裡面有密密麻麻的資料, 突然想到如果用 AI 來幫我轉成可編輯的 google sheets 應該會很快完成, 順便也試試 AI 的圖形辨識能力。 因此我就用了 Antigravity CLI 下了一句 prompt: " 請幫我把此目錄下的 PNG 檔案內容的表格轉換成 google sheets 的格式, 每個 PNG 產生一個對應的 google sheets. " 果然在一連串的 yes confirm 後, 就幫我都轉好了, 同時他還幫我寫好了一支程式。 Antigravity 不是去呼叫 Gemini api 幫我把一個一個的截圖(PNG格式)轉成 google sheets 的檔案, 而是幫我寫的一支程式, 並且幫我把他們輸出成為 xlsx 與 csv 格式。 比較特別的是我原本以為這支程式是先用 OCR library 去辨識我給的截圖, 但我去看了程式, 原來他已經將辨識後的文字直接放在程式中的陣列中, 然後用 library 轉成我要的格式, 所以有可能是圖形辨識的部分, 還是用雲端的 Gemini, 得到的資料才用地端的程式輸出成我要的格式。 輸出的效果非常的不錯, 我簡單的比對一下, 內容都正確, 以下是輸出的結果: 全覽圖轉換的效果也很不錯: 下次你如果也有大量的會議截圖, 你也可以利用 AI 來幫你轉成你方便處理的格式, 沒有一定要用 Antigravity CLI, OpenAI, Anthorpic 也都有類似的工具可以幫你完成。

用 Antigravity CLI 開發一個監控台積電台股與美股的儀表板

 前言: 偶然在 Youtube 上看到一個即時監控台積電(TSMC)的頻道, 我立刻截圖, 如下圖: 想利用 Antigravity CLI 做一個類似的功能, 因此把這張截圖請 agy cli 幫忙完成, 果然不到幾分鐘就完成了。 後來, 我又加了幾個功能: 1. 新增了一個 Competitor Pulse 區塊, 加入美股的 Intel 與韓股的 Samsung. 2. 新增了美股或台股交易期間, 每三分鐘更新即時行情(agy cli 自動幫我在非交易期間, 每五分鐘更新一次。) 3. 原本只有顯示台股與美股交易時間的區塊, 我請 agy cli 幫我放台股的大盤指數與櫃買指數, 與美股的紐約證券指數, Nasdaq 指數及費城半導體指數。 結果如下圖: 整個過程花了不到三小時就完成了, Vibe coding 實在太厲害了。 我也請 agy cli 根據這次的開發幫我寫一個針對有 python 程式設計者寫一個 Blog, 結果如下: # 🚀 從零打造「台積電 ADR 跨國套利監控儀表板」:Python 實戰與大盤指數 API 踩坑記 大家好!身為一個關注台股與美股的投資人/開發者,你是否曾想過即時監控 **台積電(2330.TW)** 與其在美股發行的 **TSMC ADR(TSM)** 之間的折溢價(跨國套利空間)? 今天這篇文章將帶領大家使用 Python,從零開始打造一個 **極具科技感、支援交易時間與非交易時間雙模式更新、並整合美台關鍵大盤指數** 的網頁儀表板。 這篇文章特別適合 **具備基本 Python 開發經驗** ,想嘗試金融 API 串接、自動化背景排程,或是對前端 CSS 排版感興趣的朋友! --- ## 💡 為什麼要監控 TSMC ADR 折溢價? 台積電(2330)普通股在台灣上市,而 TSM ADR 則在美國紐約證交所(NYSE)交易。兩者有著 **1 單位 ADR = 5 股普通股** 的固定換算比例。 由於兩地交易時間不同,加上匯率波動,美股 ADR 的價格換算回台幣後,往往與台股有著數個百分點的「折溢價差」(通常 ADR 會有溢價)。這個價差往往是隔天台股開盤時的重要指標! 我們的公式非常簡單: 1. **ADR 折算台幣價** = $ \ frac { \ text {ADR 收盤價 (USD)}...

用 NotebookLM AI 打造 Pikmin 蘑菇重生計算機

有玩《Pikmin Bloom》的玩家都知道,遊戲中的大蘑菇(例如「一般 神秘蘑菇」或「一般 紅色蘑菇」)被推毀後需要一段時間才會重生 。為了精準掌握下一次搶菇的時機,我決定透過 NotebookLM 的協助, 動手寫一個小工具:只要上傳包含挑戰剩餘時間(如「剩下20 分 47 秒」或「剩下1 小時 1 分 58 秒」)的遊戲截圖 ,系統就能自動推算出精確到秒的重生時間。 一開始我只上傳了一張 Pikmin 打菇的截圖, AI 就根據我的要求自動根據左上角的系統時間與圖中剩餘時間等資訊, 告訴我要安裝相關 OCR 套件, 並開發出第一個版本的程式, 這個程式已經大致完成了我的需求, 但離實用還有一小段距離, 所以在持續改進的開發過程中,我遇到了幾個有趣且經典的技術挑戰(對於這些影線處理, OCR, 圖片 EXIF info 等知識, 我是沒有太多的經驗, 但在 AI 一步一步的引導下完成了我的需求),在此與大家分享:  一、 影像預處理:拯救低迷的 OCR 辨識率 一開始,我直接將遊戲截圖丟給 Tesseract OCR 引擎,但辨識結果慘不忍睹。原因是遊戲畫面背景太過複雜(充滿草地、花朵與蘑菇發光特效) ,且文字是白色的。 為了解決這個問題,AI 引入了 OpenCV 進行影像預處理。先將圖片精準裁切,只保留左下角的血條與時間區域,接著轉為灰階並放大兩倍,最後使用二值化(經過測試閾值 200 得到不錯的效果)並反轉顏色。這個步驟成功將複雜的畫面轉換成 Tesseract 最容易辨識的「白底黑字」,大幅提升了準確率, 但在做更多的不同截圖的測試, 閾值 200 並不能成功轉換成 OCR 能辨識的黑白圖, 因此我請 AI 調整成以 200 為基礎, 如果辨識失敗, 在調整成 210, 190, 220, 180 如果都失敗才判定無法辨識(下圖是調整後的圖形)。  二、 對抗 OCR 的奇妙誤判與高容錯 Regex 解決了影像問題,接著是文字解析。遊戲字體中的無襯線數字「1」非常容易被誤判為英文字母 l、I、直線 |,甚至在辨識「1 小時」時被讀成 ]小時 。 為此,我設計了一套高容錯率的正規表達式 (Regex):(?:([0-9lIi|\]\[]+)\s*小?\s*時\s*)?(?:([0-9lIi|\]\[]+)\s*分\s*)?([0-9lIi...

[PHP PEAR]mail 功能

如果要使用PHP 來發送信件, PEAR 中的 Mail 模組是一個不錯的選擇 首先要 Include PEAR mail require_once(" /usr/share/pear/Mail.php "); //看你安裝 PEAR 的實際位置 $smtp = Mail::factory('smtp', array('host' => ' mailserver.domain.com ', 'port' => '25', 'auth' => true, 'username' => ' yourname ', 'password' =>' yourpassword ')); // 產生 mail instance $mail = $smtp->send($receivers, $headers, $content); // 送出信件 其中, create mail instance 時, 有三個主要參數可以選擇送信的方法 1. mail: 將寄信的工作交給 PHP 內建的 mail function 來送信 2. sendmail: 將寄信的工作交給本機的 sendmail 程式, 有兩個可設定的參數 $params["sendmail_path"]: 設定本機 sendmail 的實際路徑 $params["sendmail_args"]: 要傳給 sendmail 的參數 3. smtp: 將寄信的工作交給實際能送信的郵件伺服器, 此參數有很多子參數可設定, 介紹幾個常用的 $params["host"]: 設定實際能幫你送信的主機 $params["port"]: 設定傳送信件的通訊埠, 通常是 25 $params["auth"]: 現在非常多郵件伺服...

[PHP] 用 curl 來抓網路上的資料(四)

前面三篇我大概把一般會用到的基本 curl 介紹完了, 接下來我們會 介紹一些比較特殊的功能, 首先我要示範如果你的 瀏覽器是透過 proxy 來存取Internet 網頁的話, 如何用 curl 來達到同樣的效果呢? PHP 4.x 版和 5.x 版的用法不太一樣, 由於我使用的環境是 4.3.9 因此 我只介紹 4.x 版的用法, 其實 5.x 版也可以用等下我介紹的方法, 只是 5.x 提供了更方便的方法讓使用者容易使用 以下假設我們透過 proxy.hinet.net port:3128 來連上我們的目的地 http://www.test.com.tw/testpage.html 1. 如果 proxy 不需密碼: $ch = curl_init("http://www.test.com.tw/testpage.html"); curl_setopt($ch, CURLOPT_PROXY, "http://proxy.hinet.net:3128"); curl_exec($ch); 即可, 其中 curl_setopt 即是設定我們的程式要透過 proxy 去存取 我們的目的地網站 2. 如果 proxy 需要密碼: $ch = curl_init("http://www.test.com.tw/testpage.html"); curl_setopt($ch, CURLOPT_PROXY, "http://proxy.hinet.net:3128"); curl_setopt($ch, CURLOPT_PROXYUSERPWD, "user:password"); curl_exec($ch); 即可, 其中 第二個 curl_setopt 即是設定我們的程式要透過 proxy 去存取 我們的目的地網站所需的帳號(user)及密碼(password), 如果帳號密碼 沒錯應該就可以透過 proxy 存取了