2024年10月8日 星期二

[網站開發] 新增GPT投資助手美股公司分析頁面 (Norn-StockScreener投資網站開發)


好久沒新頁面的靈感了, 以前是有想過用GPT幫忙給投資建議的idea, 不過測試了一下發現意義不大, 基本上給的分數或建議都沒有參考價值, 畢竟GPT的model資料大概都是一兩年前的, 所以真的問GPT給一間公司是否適合投資, 他能回答你的也只有根據那一兩年前的資料生成的建議, 有種garbage in garbage out的感覺, 後來就放棄這個想法了...。

最近則是想到, 我最常用GPT做的事是修英文文法, 效果也很不錯 (不過還是得人工校稿, 有時會修出不得了的東西出來...), 就想到GPT如果單純問問題, 他會用他的知識庫回答你, 但如果我把所有需要的參考資料都給GPT, 讓GPT幫我生成投資分析報告的話那是不是就有參考價值了呢? 

這樣GPT提供的功能就像修英文文法一樣, 靠的不是GPT資料庫內過時的公司財報資料, 而是只要GPT提供過去到現在都適用的分析公司&投資方法就好, 由我這邊負責提供最新的資料, 讓GPT幫我整理結果, 感覺這個功能就有點價值~。

做好的功能如下:


上面跑的是gpt-4o model, 另外也有試著跑最新版的ol-preview model, 看起來功能真的更強:





Norn-StockScreener投資網站: https://norn-stockscreener.zmcx16.moe/gpt-investing-assistant/

Github: https://github.com/zmcx16/Norn-StockScreener


這個頁面的功能參數如下:

  1. Symbol: 美股股票代號

  2. GPT Model Name: 選要使用的GPT的model name, 預設是目前功能最強的gpt-4o, 如果選gpt-3.5-turbo的話產出的報告就會簡單不少, 另外也支援使用者自己輸入OpenAI其他支援的model, 不過不一定能用, 只有ChatGPT相關的model才能跑。

  3. OpenAI API Key: 考慮到自己的錢包, 有想使用的人得輸入自己的OpenAI API Key, 我想會有人擔心輸入了API Key會不會被我偷偷拿去用, 我說不會也拿不出證明, 所以真的有想用這功能的話, 建議申請5美元免洗帳號的API Key, 或是用自己帳號新產生的key, 用完就趕緊銷毀吧~  申請API Key可以參考這個文章: 如何免費申請ChatGPT (OpenAI) 的API Key

  4. Key Statistics: 你想讓GPT分析的公司基本資料, 有選到的參數會從我的DB直接撈出數據餵給GPT, 目前提供的Key Statistics如下:
  5. 'P/E', 'EPS (ttm)', 'Insider Ownership', 'Shs Outstand', 'Perf Week', 'Market Cap', 'Forward P/E', 'Insider Transactions', 'Shs Float', 'Perf Month', 'PEG', 'EPS next Q', 'Institutional Ownership', 'Short Float', 'Perf Quarter', 'P/S', 'EPS this Y', 'Institutional Transactions', 'Short Ratio', 'Perf Half Y', 'Book/sh', 'P/B', 'EPS next Y_%', 'ROA', 'Perf Year', 'Cash/sh', 'P/C', 'EPS next 5Y', 'ROE', 'Perf YTD', 'P/FCF', 'EPS past 5Y', 'ROI', '52W High', 'Beta', 'Quick Ratio', 'Sales past 5Y', 'Gross Margin', '52W Low', 'ATR (14)', 'Current Ratio', 'EPS Y/Y TTM', 'Oper. Margin', 'RSI (14)', 'Debt/Eq', 'Sales Y/Y TTM', 'Profit Margin', 'LT Debt/Eq', 'EPS Q/Q', 'Rel Volume', 'Sales Q/Q', 'Price', 'SMA20', 'SMA50', 'SMA200', 'Dividend %', 'Quarterly EPS Data'

  6. Investment Gurus: 可以輸入你想讓GPT參考的投資大師的建議, 不過GPT畢竟是生成式模型, 參考大師資料生成的建議有幾分胡謅幾分可信, 就自己判斷了XD  目前提供的投資大師清單如下:
  7. 'Warren Buffett', 'Peter Lynch', 'Ray Dalio', 'Jim Simons', 'Philip Fisher', 'George Soros', 'Carl Icahn', 'Bill Ackman', 'David Tepper', 'Michael Burry', 'Mohnish Pabrai'

    另外也可以讓使用者追加輸入自己的投資大師名單, 像是肯恩費雪或查理蒙格等等...。

使用以上參數輸入給GPT模型的Prompt範例如下:

{ "model":"gpt-4o", "messages":[ { "role":"user", "content":"Analyze the following stock data for company with the HPE. Focus on key areas such as P/E, EPS (ttm), Insider Own, Shs Outstand, Perf Week, Market Cap, Forward P/E, Insider Trans, Shs Float, Perf Month, PEG, EPS next Q, Inst Own, Short Float, Perf Quarter, P/S, EPS this Y, Inst Trans, Short Ratio, Perf Half Y, Book/sh, P/B, EPS next Y_%, ROA, Perf Year, Cash/sh, P/C, EPS next 5Y, ROE, Perf YTD, P/FCF, EPS past 5Y, ROI, 52W High, Beta, Quick Ratio, Sales past 5Y, Gross Margin, 52W Low, ATR (14), Current Ratio, EPS Y/Y TTM, Oper. Margin, RSI (14), Debt/Eq, Sales Y/Y TTM, Profit Margin, LT Debt/Eq, EPS Q/Q, Rel Volume, Sales Q/Q, Price, SMA20, SMA50, SMA200, Dividend %, eps_q_data and provide an overall analysis of the stock. Here is the data:\n```\n{\r\n \"P/E\": 14.62,\r\n \"EPS (ttm)\": 1.4,\r\n \"Insider Own\": 0,\r\n \"Shs Outstand\": 1300000000.0,\r\n \"Perf Week\": 0.0134,\r\n \"Market Cap\": 26510000000.0,\r\n \"Forward P/E\": 9.65,\r\n \"Insider Trans\": -0.1258,\r\n \"Shs Float\": 1290000000.0,\r\n \"Perf Month\": 0.157,\r\n \"PEG\": 4.54,\r\n \"EPS next Q\": 0.56,\r\n \"Inst Own\": 0.8270000000000001,\r\n \"Short Float\": 0.031000000000000003,\r\n \"Perf Quarter\": -0.023,\r\n \"P/S\": 0.92,\r\n \"EPS this Y\": -0.0889,\r\n \"Inst Trans\": -0.0075,\r\n \"Short Ratio\": 2.62,\r\n \"Perf Half Y\": 0.13390000000000002,\r\n \"Book/sh\": 17.0,\r\n \"P/B\": 1.2,\r\n \"EPS next Y_%\": 0.07980000000000001,\r\n \"ROA\": 0.0316,\r\n \"Perf Year\": 0.1999,\r\n \"Cash/sh\": 3.01,\r\n \"P/C\": 6.79,\r\n \"EPS next 5Y\": 0.032,\r\n \"ROE\": 0.08689999999999999,\r\n \"Perf YTD\": 0.20199999999999999,\r\n \"P/FCF\": 9.74,\r\n \"EPS past 5Y\": 0.0461,\r\n \"ROI\": 0.0618,\r\n \"52W High\": -0.10560000000000001,\r\n \"Beta\": 1.2,\r\n \"Quick Ratio\": 0.61,\r\n \"Sales past 5Y\": -0.0106,\r\n \"Gross Margin\": 0.3271,\r\n \"52W Low\": 0.41100000000000003,\r\n \"ATR (14)\": 0.6,\r\n \"Current Ratio\": 0.94,\r\n \"EPS Y/Y TTM\": 0.7161,\r\n \"Oper. Margin\": 0.0751,\r\n \"RSI (14)\": 63.4,\r\n \"Debt/Eq\": 0.53,\r\n \"Sales Y/Y TTM\": -0.0194,\r\n \"Profit Margin\": 0.0641,\r\n \"LT Debt/Eq\": 0.36,\r\n \"EPS Q/Q\": 0.0902,\r\n \"Rel Volume\": 0.46,\r\n \"Sales Q/Q\": 0.09330000000000001,\r\n \"Price\": 20.41,\r\n \"SMA20\": 0.09630000000000001,\r\n \"SMA50\": 0.09910000000000001,\r\n \"SMA200\": 0.1375,\r\n \"Dividend %\": 0.0255,\r\n \"Quarterly EPS Data\": {\r\n \"2024-07-31\": 0.39,\r\n \"2024-04-30\": 0.24,\r\n \"2024-01-31\": 0.3,\r\n \"2023-10-31\": 0.5,\r\n \"2023-07-31\": 0.36\r\n }\r\n}\n```" }, { "role":"system", "content":"Act as an Investors Group consisting of expert gurus such as Warren Buffet, Peter Lynch, Benjamin Graham. Your task is to analyze the stock data thoroughly and present a comprehensive analysis report in a visually appealing Markdown format (no need code block wrapped)." } ] }

至於結果就像上面demo圖看到的, DIS的分析資料整理得還蠻有條有理的, 前半段會根據我提供的數據資料做文字化摘要說明, 解讀數字代表的意義 (我直接Google翻譯頁面了, 比較好解釋XD):



後面則是輸入的投資大師意見跟總結, 感覺真有點像這幾位大師會說的話, 最後結論也總結得蠻有道理的, 不過老話一句畢竟這是生成式AI, 亂寫小說的成分有多少真的不好說XD


最後來看看最近宣告破產的Big Lots的分析報告吧:


這次沒有投資大師的個別建議了, 不過看最後的總結也很符合提供的數據, 投資風險很高, 透過GPT提供的投資建議值不值得參考不好說, 不過解讀數據方面我覺得做得還是不錯的, 個人是覺得有使用的價值。

在來的規劃打算繼續朝這方向開發, 提供更多Key Statistics資料給GPT幫忙做公司個股分析, 並且也想做其他的功能, 像是產業分析, 以及同產業的個股比較排序等等, 就慢慢一步一步做吧~。

9 則留言:

  1. 不好意思我用你那個網站 按下分析後會顯示沒反應
    我用f12看顯示Uncaught TypeError: t.current.RequestGPTAPI is not a function
    想問可能哪裡我設定有誤呢

    回覆刪除
    回覆
    1. 您好, 不好意思剛查了一下發現是之前某次小改版改壞了, 剛剛已經修復完畢, 非常感謝回報問題!

      刪除
  2. 你好喔 我測試以後出現"Get GPT response Failed, ret=-2"的信號. 請問是我哪裡有設定錯誤呢?謝謝喔

    回覆刪除
    回覆
    1. 您好, 上面訊息主要是通用錯誤, 從網頁端看不出原因, 要看原因細節可以開網頁瀏覽器開發者模式, 看網路封包中以下這支API:
      https://zmcx16.moe/stock-minehunter/api/task/do-ai-company-analysis
      回傳的內容是什麼, 或是你可以提供你輸入的symbol代號以及參數, 我這邊在測試看看原因是什麼。 感謝!

      刪除
    2. 你好喔 我輸入的symbol 是NVDA ; API KEY : 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 其他的參數都沒動喔

      刪除
    3. 您好, 看封包回傳:
      HTTP 429 (insufficient_quota: insufficient_quota)\r\n\r\nYou exceeded your current quota, please check your plan and billing details. For more information on this error, read the docs: https://platform.openai.com/docs/guides/error-codes/api-errors.

      看起來上面的API key已經用完quota, 可以申請一個有quota的新API key再試試看, 另外建議不要直接把API key貼在公開的群組, 可能會有被人偷去用的風險...

      刪除
  3. 謝謝分享 您的X我無法私訊只好來這裡留言
    我也是Get GPT response Failed, ret=-2"
    也是需要重新申請一個帳號嗎

    回覆刪除
    回覆
    1. 不過先謝謝佛心網站 感謝您

      刪除
    2. 您好, 剛剛重新上版了網站, 現在會把錯誤訊息的細節顯示出來, 你可以再試一次看看看錯誤訊息是什麼, 通常是額度用完的可能性比較大, 感謝。

      刪除