人工智慧金融投資決策_期貨、選擇權、臺指期(TX)、臺指選(TXO)、衛生紙之亂(紙漿原物料)、令和米荒_利用python繪製買權/賣權選擇權投資組合交易的損益曲線

做一個暑期修課筆記,暑期這門課真的人超級多。
這學期暑期修課又接觸到跟期貨、選擇權有關的陌生術語,部分跟之前因緣際會有接一個MT5小案子負責到MetaTrader API串接,接觸到關於外匯一堆陌生術語有重疊。
需要一些這方面領域知識,才知道怎麼寫這塊程式。

現貨
日常舉凡去吃喝日常生活日用品消費、加油等等幾乎都是屬於現貨交易,直接當下一手交錢一手交貨。與現貨鄉反過來的就是期貨,可以理解為不是當下直接有需要的買賣交易行為。

期貨(高風險、高報酬->槓桿效用極大)
為一種標準化遠期合約,所謂遠期合約就是指,買方跟賣方約定未來特定某日期,先預先決定好某個固定價格,對某個標的物(如股票指數、原油、黃金)做買賣的交易行為。在當下做合約成立,於未來特定時間點執行交割。

以稻米期貨合約來舉例,買方如果跟某個農夫綁定期貨合約後,未來某個時間點
比方明年某月,我去用多少錢跟你買你這一畝田裡所有的米。

對於賣家(農夫、米農這些賣稻米期貨合約的人)而言,就可專心去耕種並確保預期日的交貨。
不用去擔心未來米可能有價格崩跌的問題,造成他前期耕種投入的米、肥料、農業機械設備、人力等成本會血本無歸。

對於買家(買稻米期貨合約的人)而言,也可以規避掉以後米價大漲、買不到米的風險,比方
供需斷鏈後,造成米價暴漲成天價的問題。
事實上在日本2024年時候就有缺米的案例「令和米荒」事件 爆發,根據公視新聞當時紀載,日本米在那時翻倍漲。5公斤的米折合新台幣要價8、900元的高價。

而台灣在2018年時候也有爆發過「衛生紙之亂」事件,根據自由財經新聞當時紀載,主要是因為進口長纖紙漿價格2月至5月仍維持在每噸920美元較高的價格,可以從這網頁永豐金證券-原物料行情表,找到紙漿連結點進去看原物料行情歷史曲線圖。


2018年紙漿的價格曲線,有明顯維持足足3個月區間都坐落於932.5美元(元/噸)

相較於2026/7/18的655.0美元(元/噸),在當時衛生紙的原物料成本真的滿高的。



假如買方於當時買一斤米時100元,過了三個月或半年發掘已經漲到200元
這時候不妨思考,若米價未來大漲回不去的時候,就買家面是類似可抗通膨想法,但對於有投資想法的投機方,則會想的是若現在米價已經是大漲的情況下,我這份未來能買換到更便宜米價的期貨合約,也許可轉賣給別人去買,賺取價差。

在期貨交易市場,事實上不一定要乖乖等到到期日,才能做獲利。於等待過程中,買方也能選擇將這份合約轉讓給其他人來賺取利潤。


期貨基本用語

期貨交易單位會採用"口"的量詞
期貨
就跟日常生活中單位量詞概念類似
股票
豬肉
田地
電腦

而期貨操作的過程又細分如下(習慣用"倉"當作受詞)
  • 建倉 : 買家跟農夫達成協議,在未來的一年之後,購買一口期貨,這動作就是「建倉」。
  • 持倉 : 買方買進之後,在到期日之前等待並持有這口期貨的狀態就稱作「持倉」。
  • 交割 : 等到期約到期,買方拿合約去跟農夫進行履約(一手交錢一手交貨),即「交割」。
  • 平倉 : 若買方在持倉階段,就把這口期貨轉讓給他人,就稱為「平倉」。
期貨分類
根據標的物的不同可分為「商品期貨」跟「金融期貨」兩大類
  1. 商品期貨(以有實體或能源資源作為標的物的合約)
    • 農產品期貨:玉米、小麥、大豆...等等
    • 金屬期貨:白銀、黃金、鋁、銅...等等
    • 能源期貨:汽油、原油、天然氣...等等
  2. 金融期貨(以金融工具作為標的物的合約)->交易比重比商品來的高
    • 外匯期貨:美元、日圓、英鎊...等等
    • 利率期貨:國債、國庫券、政府住宅抵押證券...等等
    • 股票指數期貨:日本日經指數、美國道瓊指數、香港恆生指數...等等


驅動期貨市場三大核心機制
  • 雙方皆有履約義務:當到期時,無論市場價格漲跌,買賣雙方都必須依照合約價格進行交割。
  • 保證金交易(槓桿效應):交易時不需要支付合約的全額價值,只需繳交一定比例的「原始保證金」即可參與交易。這也放大資金運用效率,但也同步拉高投資風險。
  • 逐日計算:期貨市場採用每日結算制度。每天收盤後,期貨結算機構會根據當天的結算價計算帳面盈虧,並直接劃撥至個人期貨保證金專戶


台指期(TX)-台灣期貨市場的旗艦商品
台灣證券交易所股價指數期貨(簡稱台指期,代號 TX)
為台灣期貨市場交易量最大、流動性最好的旗艦商品,標的物為「台灣加權股價指數」。
  • 契約價值 : 台股期貨指數乘上新台幣200元
  • 最小升降單位 : 指數1點(相當於新臺幣200元)
  • 交易時間 :
    • 此契約交易日同台灣證券交易所交易日
    • 一般交易時段之交易時間為營業日上午8:45~下午1:45;到期月份契約最後交易日之交易時間為上午8:45~下午1:30。
    • 盤後交易時段之交易時間為營業日下午3:00~次日上午5:00;到期月份契約最後交易日無盤後交易時段。

臺灣證券交易所發行量加權股價指數
我們可以到台灣期貨交易所官方網站去點選台股期貨


就可以明確看到詳細的「臺灣證券交易所股價指數期貨契約」規格

「臺灣證券交易所股價指數小型期貨契約」規格

股價指數類-保證金
期貨交易之所以有高風險、高報酬特性,主要原因是採用「保證金」(Margin)的交易制度。
以下我們以台指期、小型台指來看
https://www.taifex.com.tw/cht/5/indexMarging

  • 原始保證金
    • 下單前帳戶內必須具備的最低金額,此時帳戶餘額是勉強達到安全區域。
    • 比方假設你要買一口TX時候,買家在期貨商至少要放的最低金額636,000元。
    • 保證金價格會隨著對應指數商品而有波動,期貨合約會根據目前市場波動決定最低客戶可履約的最低保證金額度,就稱為「原始保證金」
    • 由於期貨市場交易每天都會結算,假設今天台股跌100點,那你的636,000元就會幫你扣除200元*100點,也就是你的期貨交割帳戶會只剩下616,000元。
    • 這時候你要再補錢補到至少636,000元,才能允許你去買賣一口台指期。
  • 維持保證金
    • 在持倉期間,隨著台股漲你的錢又多,台股跌你的錢又跌回去或更少。
    • 當客戶的保證金淨值,盤中若因行情不利,降至須追繳保證金的水準時,此水準稱為「維持保證金」。期貨商會發出追繳通知(margin call),要持倉者將戶頭保證金的金額補繳至原始保證金的額度。
    • 以TX為例,如果你帳戶剩下不到488,000元的話,期貨商會通知買家趕快恢復到636,000元的標準。
    • 一般給的期限是隔天中午之前,不然期貨商可能會強制販售掉。
    • 所以如果你帳戶餘額跌損扣錢,但是金額坐落於636,000元~488,000元區間,短時間不會被期貨商追繳,但也沒法交易一口台指期,因低於原始保證金。
  • 結算保證金
    • 是期貨商要給期交所的成本
    • 結算所要求期貨會員經紀商所繳交的保證金,以確保履約的能力與誠意。
    • 結算所每日會通報結算會員經紀商,於次日繳交當日買賣所新增減部位的原始保證金、或補足原有部位損失所必須補足的變動保證金。
保證金管理與追繳機制(Margin Call)

當日沖銷(當沖)
投資人可申請當沖保證金減半,但必須於當日盤前或盤後規定時間前自行平倉,不可留倉過夜。

夜盤避險交易
涵蓋到歐美股市主要開盤時段,當美股出現劇烈波動或重要經濟數據公布時,交易者能即時藉由夜盤台指期進行避險、調整部位。

選擇權
  • 是一種交易「權利」的合約,有別於期貨的想法,它不一定要履約。
  • 有權利的人可以決定是否要履約,有權去跟你買,有權賣給你。
  • 買方支付一筆權利金(Premium)給賣方,換取於未來特定期限內,以約定價格(履約價)買入或賣出標的資產的權利。
買權(Call Option)
  • 看漲權利。給予買方於未來以履約價買進標的資產的權利。
  • 買權持有人在約定的時間內,有權利要求以履約價買進約定之標的資產,但沒有義務一定要執行該項買進權利。
  • 都有區分買賣方。
賣權(Put Option)
  • 看跌權利。給予買方於未來以履約價賣出標的資產的權利。
  • 賣權持有人在約定的時間內,有權利要求以履約價賣出約定之標的資產,但沒有義務一定要執行該項賣出權利。
  • 都有區分買賣方。

臺指選擇權(TXO)
臺指選,代號:TXO
  • 適合單方向性投機、波動率操作或組合套利。
  • 標的物:台灣加權股價指數
  • 履約型態:歐式(僅能於到期日當天申請履約結算)
  • 到期結算日:每月第三個星期三
  • 契約乘數:選擇權點數美點NT$50元。比方某檔Call報價100點,買一口就需支付權利金100*50=NT$ 5,000元


「臺灣證券交易所股價指數選擇權契約規格」

根據買權賣權各自買、賣分四種行為
1.買進買權(Buy Call,BC)->當買權的買方
  • 市場看法:強烈看漲
  • 交易機制:支付權利金,不用繳保證金
  • 最大損失:已付出權利金
  • 獲利空間:隨指數上漲而有無限空間。
2.買進賣權(Buy Put,BP)->當買權的賣方
  • 市場看法:強烈看跌
  • 交易機制:支付權利金,不用繳保證金
  • 最大損失:已付出權利金
  • 獲利空間:指數跌越多獲利越大。
3.賣出賣權(Sell Put,SP)->當賣權的賣方
  • 市場看法:看不跌(看漲或區間盤整)
  • 交易機制:收取權利金,需繳交保證金
  • 最大獲利:收取權利金
  • 承擔風險:若大跌就賠錢,當市場出現劇烈重挫需承擔巨大下行風險。
4.賣出買權(Sell Call,SC)->當買權的賣方
  • 市場看法:看不漲(看跌或區間盤整)
  • 交易機制:收取權利金,需繳交保證金
  • 最大獲利:收取權利金
  • 承擔風險:若大漲就賠錢,當市場出現急漲噴出需承擔巨大上行風險。
組合策略
投資組合策略時常把上述交易姿態做結合
比方牛市價差策略(Bull Spread)
同時買進BC並賣出更高履約價的Call



Yahoo期權首頁
以下是2025/9/17歷史資訊

練習繪製買權、賣權的選擇權損益曲線
底下就分別建立Call、Put履約價對應成交價的字典清單

import numpy as np
import matplotlib.pyplot as plt
plt.close('all')# 關閉前一次執行留下的所有 Matplotlib 圖形
# 設定支援繁體中文的字型
plt.rcParams['font.family'] = 'sans-serif'
plt.rcParams['font.sans-serif'] = [
    'Microsoft JhengHei',  # 微軟正黑體
    'Noto Sans CJK TC',
    'Arial Unicode MS'
]
# 避免座標軸的負號顯示成方框
plt.rcParams['axes.unicode_minus'] = False

# 臺指選擇權屬於歐式選擇權,只能在到期日行使,並採現金結算。
# 依期交所目前契約規格,臺指選擇權每一指數點的契約價值為新臺幣 50 元。
# 以下分別對買權、賣權創建權利金資料字典(履約價格: 權利金)
CALLprice = {24800:980,24900:905,25000:810,25100:735,25200:670,25300:605,25400:545,25500:486,25600:428,25700:380,25800:327,25900:283,26000:247,26100:213}
PUTprice = {24800:280,24900:310,25000:333,25100:365,25200:411,25300:432,25400:456,25500:510,25600:550,25700:625,25800:685,25900:745,26000:790,26100:850}
# 以買權Callprice為例,履約價 25400 的買權,成交權利金是 545 點。
# 對應臺指選擇權,換算一口合約權利金金額就會是 545 × 50 = 新臺幣 27,250 元
# 以賣權PUTprice為例,履約價 25400 的賣權,成交權利金是 456 點。
# 對應臺指選擇權,換算一口合約權利金金額就會是 456 × 50 = 新臺幣 22,800 元
#上述金額尚未計入手續費、交易稅及其他交易成本。

ST = np.arange(24500,26500)#橫軸-所有假設的到期結算指數。
#24500, 24501, 24502, ..., 26498, 26499(含頭不含尾)

#傳入一個list,涵蓋兩個position的list,[買權list,賣權list]
#呼叫函數的傳入參數用法-> [[25000,2],[25100,-1]] ,就代表買了2口履約價25000的選擇權 跟 賣1口履約價25100的選擇權
def OptionProfit(pos):
    callposition = pos[0]
    putposition = pos[1]
    profit = np.zeros(ST.shape)
    #買權 Call,買權買方取得的是
    #在到期時,按照履約價格 K 買進標的的權利。
    #當到期時:若ST > K,則代表買權具有價值(有賺錢);若ST<=K,代表買權沒有履約價值。
    #買權到期履約價值:max(ST-K,0)
    #買進買權的淨損益:max(ST-K,0)-C
    for position in callposition:
        K = position[0] # 履約價格
        N = position[1] # 單位數
        C = CALLprice[K]# 買權權利金,抓取Callprice字典,By履約價格去抓對應成交價格
        #np.maximum(ST-K,0)-C 代表這一檔選擇權買賣獲利狀況,其中ST-K 代表比K大多少就賺多少錢,再去扣除當時付出的權利金C
        #ST代表24500~26500區間,比0小則用0取值,反之就大於多少取多少。
        profit = profit + (np.maximum(ST-K,0)-C)*N
    #賣權 Put,賣權買方取得的是
    #在到期時,按照履約價格 K 賣出標的的權利。
    #當到期時:若ST<K,則代表賣權具有價值;若ST<=K,則表示賣權沒有履約價值。
    #賣權到期履約價值:max(K-ST,0)
    #買進賣權的淨損益:max(K-ST,0)-P
    for position in putposition:
        K = position[0]  # 履約價格
        N = position[1]  # 單位數
        P = PUTprice[K]  # 賣權權利金,抓取PUTprice字典,By履約價格去抓對應成交價格
        # np.maximum(K-ST, 0) - P 代表這一檔選擇權買賣獲利狀況,其中K-ST 代表比K小多少就賺多少錢,再去扣除當時付出的權利金P
        # ST代表24500~26500區間,比0小則用0取值,反之就大於多少取多少。
        profit = profit + (np.maximum(K-ST, 0) - P) * N
    return profit
#紅色實線:選擇權損益曲線,其中ST:橫軸,代表到期時的指數價格,p1:縱軸,代表不同到期價格下的損益
#黑色虛線:零損益基準線,其中[ST[0], ST[-1]]:從橫軸最左端畫到最右端,[0, 0]:兩端的縱軸數值都等於 0
#紅線與黑色虛線交會:損益兩平點,紅線在黑色虛線上方:獲利。反之,紅線在黑色虛線下方:虧損。
#投資組合1.買進一口履約價 25400 的買權
pos1 = [[[25400,1]],[]]
p1 = OptionProfit(pos1)
print(p1)
plt.xlabel('到期結算指數 ST')
plt.ylabel('損益(點)')
plt.title('買進 25400 買權 到期損益圖')
plt.grid(True)
plt.plot(ST, p1, 'r-', [ST[0], ST[-1]], [0, 0], 'k--')#繪製損益曲線
plt.plot(ST,p1,color='red',linestyle='-',label='到期損益')# 紅色實線:選擇權損益
plt.plot([ST[0], ST[-1]],[0, 0],color='black',linestyle='--',label='零損益線')# 黑色虛線:損益為零
plt.legend()#legend() 會收集前面所有設定過 label 的繪圖物件,並顯示圖例。
plt.show()

#投資組合2.賣出一口履約價 25400 的買權-到期損益曲線
pos2 = [[[25400,-1]],[]]
p2 = OptionProfit(pos2)
print(p2)
plt.xlabel('到期結算指數 ST')
plt.ylabel('損益(點)')
plt.title('賣出 25400 買權 到期損益圖')
plt.grid(True)
plt.plot(ST, p2, 'r-', [ST[0], ST[-1]], [0, 0], 'k--')
plt.plot(ST,p2,color='red',linestyle='-',label='到期損益')
plt.plot([ST[0], ST[-1]],[0, 0],color='black',linestyle='--',label='零損益線')
plt.legend()#legend() 會收集前面所有設定過 label 的繪圖物件,並顯示圖例。
plt.show()

#投資組合3.買進一口履約價 25400 的賣權-到期損益曲線
pos3 = [[],[[25400,1]]]
p3 = OptionProfit(pos3)
print(p3)
plt.xlabel('到期結算指數 ST')
plt.ylabel('損益(點)')
plt.title('買進 25400 賣權 到期損益圖')
plt.grid(True)
plt.plot(ST, p3, 'r-', [ST[0], ST[-1]], [0, 0], 'k--')
plt.plot(ST,p3,color='red',linestyle='-',label='到期損益')
plt.plot([ST[0], ST[-1]],[0, 0],color='black',linestyle='--',label='零損益線')
plt.legend()#legend() 會收集前面所有設定過 label 的繪圖物件,並顯示圖例。
plt.show()

#投資組合4.賣出一口履約價 25400 的賣權-到期損益曲線
pos4 = [[],[[25400,-1]]]
p4 = OptionProfit(pos4)
print(p4)
plt.xlabel('到期結算指數 ST')
plt.ylabel('損益(點)')
plt.title('賣出 25400 賣權 到期損益圖')
plt.grid(True)
plt.plot(ST, p4, 'r-', [ST[0], ST[-1]], [0, 0], 'k--')
plt.plot(ST,p4,color='red',linestyle='-',label='到期損益')
plt.plot([ST[0], ST[-1]],[0, 0],color='black',linestyle='--',label='零損益線')
plt.legend()#legend() 會收集前面所有設定過 label 的繪圖物件,並顯示圖例。
plt.show()


投資組合1.買進一口履約價 25400 的買權
投資組合2.賣出一口履約價 25400 的買權-到期損益曲線

投資組合3.買進一口履約價 25400 的賣權-到期損益曲線
投資組合4.賣出一口履約價 25400 的賣權-到期損益曲線











Ref:
台指期是什麼?大台/小台/微台有什麼差異?(附小台期貨教學)
期貨合約怎麼看?重點項目有哪些/如何查詢/範例(海外/國內)
台灣期貨交易所官網
臺灣證券交易所發行量加權股價指數

底下3篇是更好懂得補充課外學習資源
快速搞懂期貨是什麼(上)
快速搞懂期貨是什麼(下)
選擇權教學:選擇權4種策略實戰解析(買進買權、賣出賣權、賣僅賣權、賣出賣權解析)

日本釋儲備米解米荒 零售商自由申購加速上市
「令和米荒」是什麼?在日本還吃得到米嗎?日本國內米價漲幅創新高原因解析
永豐金證券-原物料行情表
期权牛市价差策略Bull Spread:Call构建和Put构建牛市价差有何区别?何时入场何时离场?以AAPL为例|小白学期权策略




留言

這個網誌中的熱門文章

SAP物料主數據(Material Master Data)

何謂淨重(Net Weight)、皮重(Tare Weight)與毛重(Gross Weight)

外貿Payment Term 付款條件(方式)常見的英文縮寫與定義