2024年10月20日 星期日

[網站開發] 新增GPT投資助手美股選擇權估值分析頁面 (Norn-StockScreener投資網站開發)

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


上次用GPT幫忙分析整理美股公司資料, 這次想到也可以用GPT幫忙分析美股選擇權估值, 畢竟之前做了不少美股選擇權估值的模型, 如果能把這些資料交給GPT來幫忙分析, 或許可以在做選擇權交易之前看下分析報告, 讓GPT幫忙簡單整理買賣方建議這樣。

關於之前寫的選擇權估值模型的文章, 有興趣的可以也可以參考下:
[網站開發] 美股選擇權定價模型 - 新增隱含波動率計算凱利公式

做好的功能如下:


Norn-StockScreener投資網站: 

https://norn-stockscreener.zmcx16.moe/gpt-investing-assistant/

Github: 

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

https://github.com/zmcx16/Norn-Finance-API-Server

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

  1. Symbol: 美股選擇權合約的股票代號

  2. GPT Model Name: 選要使用的GPT的model name, 預設是目前CP值最高的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. Expriation Date: 選擇權合約到期日

  5. Strike Price: 選擇權合約履約價

  6. Call / Put Option: 選擇Call or Put合約

  7. Valuation Data: 選擇權估值模型參數選擇, 在使用GPT模型之前, 會先用自己做的估值模型跑估值結果, 使用者可以決定要不要讓GPT模型也參考這些估值結果, 目前總共有以下參數:
  8. 'Black Scholes Merton EWMA Historical Volatility', 'Monte Carlo EWMA Historical Volatility', 'Binomial Tree EWMA Historical Volatility', 'Kelly Criterion', 'Probability of Exercise of Option', 'Delta', 'Gamma', 'Vega', 'Theta', 'Rho'

使用以上參數輸入給GPT模型的Prompt範例如下, 其中大部分的資料都是從Norn-Finance-API-Server取得:

{{"model":"o1-preview","messages":[{"role":"user","content":"Please analyze the option contract for the company with the symbol DIS. Provide a detailed and comprehensive analysis, focusing on the risks—particularly the impact of the earnings date and ex-dividend date—and valuation for both the buyer and the seller. Your task is to thoroughly evaluate the data and generate a report in Markdown format (No need to wrap in code blocks). Here’s the data:\n```\n{\r\n  \"symbol\": \"DIS\",\r\n  \"currentDate\": \"2024-10-20\",\r\n  \"stockPrice\": 97.27999877929688,\r\n  \"stockExtraInfo\": {\r\n    \"earningsDate\": \"2024-11-14\",\r\n    \"exDividendDate\": \"2024-07-08\"\r\n  },\r\n  \"EWMA_historicalVolatility\": 0.18602714460634165,\r\n  \"contract\": {\r\n    \"lastTradeDate\": \"2024-10-18\",\r\n    \"strike\": 95.0,\r\n    \"lastPrice\": 2.95,\r\n    \"bid\": 2.91,\r\n    \"ask\": 2.99,\r\n    \"change\": -0.45000005,\r\n    \"percentChange\": -13.235294,\r\n    \"volume\": 2330,\r\n    \"openInterest\": 7064,\r\n    \"impliedVolatility\": 0.3794007373046875,\r\n    \"valuationData\": {\r\n      \"KellyCriterion_buy\": -10.09725610723297,\r\n      \"KellyCriterion_sell\": 0.8934698360970385,\r\n      \"KellyCriterion_MU_0_sell\": 0.8250604590273701,\r\n      \"KellyCriterion_MU_0_buy\": -5.0543039713639955,\r\n      \"KellyCriterion_IV_buy\": null,\r\n      \"KellyCriterion_IV_sell\": null,\r\n      \"exerciseProbability\": 0.33397,\r\n      \"delta\": -0.3079163039792361,\r\n      \"gamma\": 0.06899611538229457,\r\n      \"vega\": 0.09640010958844103,\r\n      \"theta\": -0.10826790796879611,\r\n      \"rho\": -0.024593911487068514,\r\n      \"Black Scholes Merton EWMA Historical Volatility\": -1.0,\r\n      \"Monte Carlo EWMA Historical Volatility\": -1.0,\r\n      \"Binomial Tree EWMA Historical Volatility\": 1.0371441540237885\r\n    },\r\n    \"expiryDate\": \"2024-11-15\",\r\n    \"optionType\": \"put\"\r\n  }\r\n}\n```"}]}}


至於結果就像上面demo圖看到的, 照慣例我直接Google翻譯頁面了, 比較好解釋XD:


上面的資料是程式使用yfinance從Yahoo財經取得的選擇權合約資料, 包含報價資料以及隱含波動率等等, 其中只有歷史波動率不是Yahoo財經給的, 是Norn-Finance-API-Server用歷史股價計算出來的。



上圖的凱利公式也是Norn-Finance-API-Server透過蒙地卡羅模擬計算出來, 可以看出該put交易用凱利公式分析對賣方有利(不過該公式只單純用歷史波動率做蒙地卡羅模擬未來的股價變化, 並沒有考慮到消息面, 財報公布日, 除權息等等, 只能當作參考不能只看這個參數是決定交易與否), 至於風險分析這邊感覺有些廢話, 除了行權機率也是透過程式估算以外, 其他的文字敘述基本上看合約報價就懂的意思差不多...。



分析結果該合約簡單總結對賣方有利, 其他的文字敘述一樣有些雞肋就是..., 另外來看看, 如果選擇權履約日在財報日之後, GPT會怎麼回覆吧, DIS下次財報日是11/14, 我們挑11/15到期, 行權價90元的迪士尼賣權合約看看: 



可以看出因為是價外合約+離目前股票落差不小, 所以行權機率低(7.34%), 凱利公式算出來也是對賣方略為有利(不過也只有0.98%, 跟不建議交易基本上也差不多了), 可是這些公式都是透過歷史波動率計算, 如果加上考慮財報日的影響, 基本上是完全不建議做賣方交易的, 而因為我們在GPT prompt有註明要考慮行權日以及除息日的風險, 所以有特別敘述賣方的風險, 算是有達到我想要的警告這樣。

這次的結果感覺沒有上次的公司分析整理報告好, 給的建議大多數都是看我原本程式的數據就能得到, 這塊我可能要再思考一下, 繼續改進prompt是否可以得到更有價值的建議...。


沒有留言:

張貼留言