本日餘額與可動用保證金¶
期交所和期貨商 App 圍繞三個核心數字:本日餘額、權益數、可動用(出金)保證金。Tapio 以這三個官方定義為基礎運作,並在保證金比對上採取保守設計:未實現損失立即縮減比對基準、未實現利潤不先計入。
術語來源
本頁公式與項目編號依據期交所公開文件「風險有關專有名詞名詞解釋與公式計算」名詞彙整表。
各項定義與公式¶
本日餘額¶
本日餘額是帳戶當日已確定的資金數,不含浮動損益:
這是一個確定值——每筆成交後加入已實現損益與扣除手續費/稅;客戶盤中存入或提出的資金也反映在這裡。
選擇權相關項目不納入
期交所官方本日餘額公式另含「到期履約損益」及「權利金收入與支出」兩項;Tapio 目前不支援選擇權交易,兩項恆為零,故不列入。
權益數¶
權益數把尚未平倉的浮動損益也算進去:
未沖銷期貨浮動損益以即時行情計算:
正值為未實現利潤,負值為未實現損失。
有價證券抵繳不適用
期交所官方權益數公式另含「有價證券抵繳總額」;Tapio 不支援有價證券抵繳,故不納入。
可動用(出金)保證金¶
這是帳戶可委託下單或出金的金額。期交所盤中公式展開後、移除 Tapio 不支援的項目(有價證券抵繳、選擇權委託權利金、加收保證金指標)後為:
Tapio 的保守設計¶
Tapio 的風控比對基準為上式的前段(本日餘額 − 未實現損失),保證金扣除另以比較步驟實現:
風控通過條件:本日餘額 − 未實現損失 ≥ 總所需保證金
未實現利潤不計入、未實現損失立扣
這是 Tapio 風控最核心的保守設計:
- 未實現損失立扣:浮動虧損立即縮減比對基準,不讓客戶在餘額虛胖的錯覺下繼續下單
- 未實現利潤不計入:浮動獲利不列入比對基準,避免客戶在行情有利時過度加倉
可動用額度(帳號層級限制)¶
最終風控使用的比對基準還要套上帳號的保證金額度上限(見帳號層級控管):
風控檢查¶
每筆新單觸發兩個基本檢查:
| 檢查 | 失敗原因 |
|---|---|
| 權益數 < 0,或可動用額度 < 0 | 餘額為負 |
| 可動用額度 < 總所需保證金 | 保證金不足 |
其中「總所需保證金」包含:現有持倉保證金、本次新單保證金、以及有效委託單的預估保證金。
負餘額檢查為何兩條都要
即使持倉大量未實現利潤讓權益數為正,若可動用額度已為負(代表「本日餘額扣掉未實現損失後已透支」),系統仍會以負餘額擋下。這避免了「靠著另一邊的未實現利潤支撐」的虛假健康。
示意圖¶
flowchart LR
A[前日餘額] --> CB[本日餘額]
B[本日期貨平倉損益] --> CB
C[手續費 + 期交稅] -->|扣除| CB
D[存提款] --> CB
CB --> EQ[權益數]
UP[未沖銷期貨浮動損益] --> EQ
CB --> Base[風控比對基準<br/>本日餘額 − 未實現損失]
UPNeg[未沖銷期貨浮動損益<br/>僅取負值部分] -->|扣除| Base
Base --> LFB[可動用額度]
ML[帳號保證金額度上限] -->|取較小| LFB
範例:一個完整帳戶的計算¶
假設參數
- 前日餘額:1,000,000 NTD
- 今日已實現損益:+5,000 NTD
- 今日手續費:200 NTD
- 今日期交稅:50 NTD
- 盤中無存提款
- 現持有 TXF 多方 2 口,平均成本 19,950
- 現價 20,030,每點價值 200 NTD(示意)
- 帳號保證金額度上限:無限制(專業投資人)
計算步驟
- 本日餘額 = 1,000,000 + 5,000 − 200 − 50 = 1,004,750 NTD
- 未沖銷期貨浮動損益 = (20,030 − 19,950) × 2 × 200 = 80 × 400 = +32,000 NTD(未實現利潤)
- 權益數 = 1,004,750 + 32,000 = 1,036,750 NTD
- 風控比對基準 = 1,004,750 + min(32,000, 0) = 1,004,750 NTD(未實現利潤不計入)
- 可動用額度 = 1,004,750 NTD
若此時欲下買 TXF 1 口,所需保證金約 184,000 NTD → 1,004,750 ≥ 184,000 → 通過。
行情反轉會怎樣¶
同一帳戶,若現價從 20,030 跌到 19,900:
- 未沖銷期貨浮動損益 = (19,900 − 19,950) × 2 × 200 = −20,000 NTD(未實現損失)
- 權益數 = 1,004,750 − 20,000 = 984,750 NTD
- 風控比對基準 = 1,004,750 + min(−20,000, 0) = 1,004,750 − 20,000 = 984,750 NTD(未實現損失立扣)
此時可動用額度下降為 984,750,若客戶再下買單,系統會以新的、較小的基準比對保證金。
多幣別換算¶
系統以 NTD 為基礎貨幣。每個帳戶的餘額可能分散在多個幣別中(例如 NTD、USD),各幣別獨立維護前日餘額與當日變動。下單前計算時,每個幣別的當前餘額會乘以當下即時匯率換算成 NTD,再加總:
換算使用查詢當下的即時匯率,非成交時匯率
各幣別的原始餘額在系統內不變,但每次計算 NTD 總額時,均使用當下即時匯率重新換算。這意味著:即使帳戶沒有任何交易,若匯率相對成交時發生變動,帳戶的 NTD 本日餘額數字也會隨之異動。
目前實務上僅支援 NTD 計價商品
雖然系統結構已支援多幣別,目前 Tapio 僅開放 NTD 計價的台指期系列商品(TXF / MXF / TMF),詳見「功能規格」。換算邏輯對當前商品集合不會產生實際影響,但為未來擴充保留空間。
匯率來源¶
匯率表由交易所行情資料供應,盤中異動時系統立即更新;在下單風控檢查路徑上,匯率查詢全程在本地完成,不需跨網路。
一致性快照¶
同一筆委託驗證期間,系統會對行情價格建立一致性快照:
flowchart LR
A[新單抵達] --> B[鎖定行情價格快照]
B --> C1[行情價格快照<br/>(鎖定)]
B --> C2[帳戶餘額<br/>(直接讀記憶體狀態)]
B --> C3[部位與委託中<br/>(直接讀記憶體狀態)]
C1 & C2 & C3 --> D[整個風控檢查路徑<br/>使用同一套資料]
D --> E[通過 / 拒絕]
E --> F[下一筆新單<br/>讀取最新狀態]
行情價格在委託驗證期間保持鎖定,確保同一筆委託的保證金計算使用一致的行情資料。帳戶餘額、持倉部位、在途委託數量在同一筆委託的處理過程中不會被其他下單打斷,因此同樣保持一致。
稽查重現的實際限制
風控拒單時,系統會記錄當下的關鍵數值(權益數、可動用額度、所需保證金等),可供事後還原決策結果。若需完整重算,須對照當時的成交紀錄與餘額歷程。
盤前與盤中餘額更新¶
盤前載入¶
每日開盤前由期貨商批次載入前日餘額與當日基底。此基底是一個確定值:
當日基底是期貨商在盤前提供的起始金額,已包含跨日結算後的各類調整(保證金追繳、權利金等)。盤中的成交損益與存提款則以增量方式另行疊加,兩者加總即為本文件前述的本日餘額。
盤中餘額調整¶
盤中若發生存提款、保證金追繳或特殊調整,期貨商可即時通知 Tapio 更新帳號的餘額基底,更新後下一筆新單即依新基底檢查。盤中成交所產生的已實現損益、手續費、交易稅作為獨立增量另行記錄,與餘額基底分開維護,兩者在計算本日餘額時加總。這個設計允許重複套用餘額更新而不累加。
盤中成交的餘額變動是獨立增量
每筆成交後,系統將已實現損益、手續費、交易稅以增量方式記錄,與存提款等餘額基底調整分開維護;兩者在讀取時加總得出本日餘額。
flowchart LR
A[客戶入金通知] --> B[券商後台]
B --> C[產生餘額異動]
C --> D[Tapio 套用異動]
D --> E[新的當日基底]
E --> F[下一筆新單<br/>即依新基底檢查]
詳細維運流程請參閱「臨時操作」。
平倉通路的餘額豁免¶
前面提到的所有檢查(負餘額、可動用額度 < 所需保證金),在純平倉委託時一律跳過:
當客戶想出場,即使本日餘額扣除未實現損失後為負也應允許平倉。
這是保守設計的另一面:寧可不擋平倉,也不讓客戶在已經透支的帳戶上再加倉。
平倉豁免的判定邏輯¶
「純平倉」的判定條件是:
- 系統判定此委託屬平倉
- 本方向有效委託單口數 ≤ 淨部位絕對值
條件二的意義是:若該方向已有太多有效平倉委託單(超過淨部位),再送就變成超倉平倉,應視為加倉,不得豁免。
平倉通路的完整規則見「風控機制總覽」。
API 欄位與官方術語對照¶
SDK(QueryEquityReply)¶
SDK 公開三個欄位:
| 欄位 | 對應官方術語 | 計算方式 |
|---|---|---|
equity |
權益數(官方項目 11) | 本日餘額 + 未沖銷期貨浮動損益 |
availableBalance |
可動用(出金)保證金(官方項目 20,簡化版) | 本日餘額 − 未實現損失 − 所需保證金 |
requiredMargin |
原始保證金 + 委託保證金(官方項目 15+17) | 持倉及有效委託單的總保證金需求 |
availableBalance 與風控可動用額度不同
availableBalance 已扣除所需保證金,反映「扣掉現有部位保證金後還剩多少」,方便客戶判斷還能再開多少倉。忽略 Tapio 不支援的有價證券抵繳及選擇權相關項目後,availableBalance 近似期交所官方「可動用(出金)保證金」定義。
風控下單路徑實際比對的是可動用額度:
風控判斷的不等式是:可動用額度 ≥ 新單後的總所需保證金。兩者相差一個「所需保證金」項:availableBalance ≈ 可動用額度 − 現有所需保證金(忽略額度上限)。若客戶用 availableBalance 估算是否能再開倉,方向是對的,但精確數字會受保證金額度上限影響。
實例:帳號保證金額度上限為 500,000 NTD,目前無持倉、本日餘額 900,000 NTD。availableBalance 顯示 900,000,但風控可動用額度為 min(900,000, 500,000) = 500,000。任何所需保證金超過 500,000 的新單都會被拒絕,即使帳面顯示仍有餘額。
Admin gRPC(QueryBalance)¶
Admin gRPC 提供更細的分項,每個幣別各一筆,另附 NTD 總計:
| 欄位 | 對應官方術語 | 說明 |
|---|---|---|
yesterday_balance |
前日餘額(官方項目 1) | 昨日結餘 |
balance |
本日餘額(官方項目 8) | 確定的已結算資金 |
equity |
權益數(官方項目 11) | 本日餘額 + 未沖銷期貨浮動損益 |
available_balance |
可動用(出金)保證金(官方項目 20,簡化版) | 同 SDK availableBalance |
required_margin |
所需保證金(官方項目 15+17) | 同 SDK requiredMargin |
unrealized_profit |
未沖銷期貨浮動損益(官方項目 9a−9b) | 正為未實現利潤,負為未實現損失 |
realized_profit |
本日期貨平倉損益淨額(官方項目 5) | 當日已實現損益 |
commission |
手續費(官方項目 6) | 當日手續費累計 |
tax |
期交稅(官方項目 7) | 當日期交稅累計 |
查詢時系統對行情價格建立一致性快照,確保同一次查詢中不同商品的未沖銷期貨浮動損益使用同一時刻的行情計算。