帳號層級控管¶
帳號層級控管是 Tapio 風控的第一道關卡。在保證金、部位這些數值型檢查之前,系統先問一個更基本的問題:
這個帳號現在允不允許做這件事?
有些情境不是「錢夠不夠、部位超不超」可以解釋的:
- 該帳號被主管機關或券商風控主管臨時凍結
- 該帳號尚未簽署市價單風險告知書,禁止下市價單
- 該帳號有異常交易嫌疑,被限定只能平倉出場、不能再加倉
這些場景都以帳號旗標來描述。旗標可以盤前一次載入,也可以在盤中由風控主管即時調整、立即生效。
五個帳號旗標¶
每個期貨帳號(7 碼數字)都帶有以下五個旗標。多個旗標可同時啟用。
| 旗標名稱 | 預設 | 啟用後的效果 | 盤中可修改 |
|---|---|---|---|
| 凍結帳號(DenyTrading) | 關 | 所有委託(含平倉、改價、減量、刪單)一律拒絕 | ✓ |
| 禁市價單(DenyMarketOrder) | 關 | 市價單與範圍市價單被拒;限價單放行 | — |
| 禁開倉(DenyOpenPosition) | 關 | 新開倉位被拒,但平倉放行——用於「鼓勵出場」情境 | ✓ |
| 專業投資人(IsProfessionalTrader) | 關 | 忽略帳戶與個人保證金額度限制(僅影響額度上限,不影響實際可用資金檢查) | — |
| 強制套用帳戶額度(ForceUseAccountLimit) | 關 | 保證金額度上限直接採用帳戶額度,忽略交易額度 | — |
「凍結帳號」會擋下平倉
「凍結帳號」與「禁開倉」是兩個不同層級的控管。凍結帳號擋下所有動作,包含平倉出場——適用於需要立即終止該帳號一切交易活動的情境(例如疑似盜用、主管機關要求)。禁開倉則只擋新開倉、放行平倉,適用於「引導出場」情境。
專業投資人資格不是保證金豁免
「專業投資人」資格只影響額度上限的計算——亦即「可以佔用多少保證金」的天花板。它不豁免「帳戶內可用資金必須足以涵蓋所需保證金」的檢查。可用資金不足時仍會被拒絕,詳見「餘額與可用資金」。
範例情境¶
情境 A|開啟「禁市價單」¶
期貨商依規定須確認投資人已簽署市價單風險告知書,方可開放市價單功能。帳號預設關閉市價單,完成簽署後由期貨商解除限制。
| 委託類型 | 系統反應 |
|---|---|
| 限價買單 TXF 1 口 @ 20000 | 通過(後續進入保證金、部位檢查) |
| 市價買單 TXF 1 口 | 拒絕:帳號禁止市價單 |
| 範圍市價賣單 | 拒絕:帳號禁止市價單 |
情境 B|法人帳號開啟「禁開倉」¶
某法人帳號因風控事件被主管要求暫停新開倉;已持有多方 TXF 3 口。
| 委託 | 系統判定 | 系統反應 |
|---|---|---|
| 賣 TXF 3 口(平倉) | 平倉 | 通過(平倉通路優先,不檢查禁開倉) |
| 賣 TXF 5 口(平倉 3 口 + 反手空 2 口) | 被視為「超過既有部位的新開倉」 | 拒絕:帳號禁止開倉 |
| 買 TXF 1 口 | 新開倉 | 拒絕:帳號禁止開倉 |
為何平倉 5 口的第二種情境也會被擋
平倉通路僅在同方向「有效委託單口數不超過現有淨部位」時適用。系統判斷同方向目前有效委託單的總口數(開倉與平倉合計)是否超過現有淨部位。當賣出 5 口,但現有多頭淨部位僅 3 口且無其他掛單,5 > 3,超出的 2 口不符合純平倉條件,被視為新開空頭倉位,立即觸發禁開倉旗標。詳見「部位限制」。
情境 C|帳號被凍結¶
某帳號因疑似異常登入被啟用「凍結帳號」。
| 委託 | 系統反應 |
|---|---|
| 任何下單、改價、減量、刪單 | 一律拒絕:帳號禁止交易 |
凍結狀態不會自動解除,需由風控主管手動關閉旗標。
旗標由誰設定、何時生效¶
盤前批次載入¶
每日開盤前,期貨商依照期交所規格(含投資人類別代碼)與自身業務設定,將各帳號的旗標與保證金額度批次載入 Tapio。此階段設定的旗標在系統啟動時即生效。
每筆設定記錄必須包含帳號識別與投資人類別代碼,缺少任一項該筆記錄將被略過。所有旗標若未設定,預設為關閉。
保證金額度缺失的特殊行為
保證金額度並非旗標,其行為不同於布林旗標。若帳戶額度與交易額度均未設定,系統預設兩者皆為 0,有效保證金上限即為 0——這等同於禁止任何新開倉(刪單、改價、減量等不消耗保證金的操作不受影響)。若僅設定其中一項額度,系統會以該額度的值補齊另一個缺失的額度,確保兩者一致。
盤中即時覆寫¶
盤中發現異常或需要即時調整時,風控主管可透過維運工具對指定帳號變更旗標。
僅限兩個旗標可盤中修改
盤中即時覆寫只支援「凍結帳號」(DenyTrading)和「禁開倉」(DenyOpenPosition)這兩個旗標。其餘三個旗標(DenyMarketOrder、IsProfessionalTrader、ForceUseAccountLimit)只能在盤前設定,盤中無法即時變更。這是系統刻意的設計限制,確保盤中可即時生效的旗標範圍可預期、可控。
流程如下:
flowchart LR
A[風控主管<br/>下達指令] --> B[維運工具送出<br/>變更請求]
B --> C[系統寫入<br/>覆寫紀錄檔]
C --> D[持久化完成<br/>才套用]
D --> E[下一筆委託<br/>即受新旗標約束]
C -->|寫檔失敗| F[整筆指令拒絕<br/>旗標維持原狀]
先落檔、再生效
系統保證「變更紀錄確認寫入磁碟」之後才套用新旗標。這避免「變更已生效、但系統重啟後遺失」的資料不一致情況。
系統重啟後的復原¶
當日系統重啟(例如盤中事故或日結)時,會依序載入:
- 盤前批次檔(當日基準值)
- 盤中覆寫紀錄(覆蓋至當下最新狀態)
因此風控主管的所有盤中調整在重啟後仍然有效。
客戶端是否可查詢自己的旗標¶
否。目前 Tapio 不提供查詢個人帳號旗標的 API;客戶端僅能從被拒絕時回傳的錯誤訊息得知某項動作不被允許。對應的錯誤說明請參閱「常見錯誤對照」。
若客戶端需要知道帳號目前的可交易狀態,應向所屬期貨商後台查詢,而非向 Tapio 風控中台查詢。
帳號鎖死:異常狀態的 sticky 保護¶
除了上述五個旗標以外,系統還有一個「隱性」的帳號層級保護:
當某些嚴重錯誤發生時,帳號會被鎖定為異常狀態,該帳號當日後續所有委託一律拒絕,直到次日開盤重新載入資料才解除。
觸發場景¶
盤前載入階段:
- 投資人類別代碼不符合期交所規範
- 盤前部位資料中商品代碼無法解析,原因包括:選擇權商品、雙腿商品、合約狀態非正常、保證金類型為百分比而非金額、非 NTD 幣種、缺少稅率設定、缺少部位限制資料等
- 同商品的保證金上限設定不一致——系統拒絕在不一致的保證金基礎上為帳號服務
盤中收報回報階段:
- 收到交易所成交或拒絕回報時,若該帳號尚未建立對應商品的計算結構,而補建過程中出現商品解析錯誤或保證金設定不一致,同樣會觸發鎖死
解除方式¶
鎖死狀態是 sticky 的:寫入後當日不會自動清零,也不受盤中覆寫旗標指令影響。唯一解除方式為次日系統重啟——重啟時重新載入盤前批次檔,若資料已修正則帳號恢復正常。
此機制屬於保守防禦:當系統發現該帳號的資料本身已經不可信,寧可鎖住該帳號,也不冒險繼續服務。若遇到此類情況,應依「常見錯誤對照」診斷資料來源,並確認次日盤前批次檔已修正。
投資人類別¶
每個帳號另帶有一個投資人身份碼,用於決定該帳號適用哪一組部位上限。身份碼定義依期交所《檔案傳輸格式》v1.11.0 規範如下;如需查詢個別帳號歸屬之身份碼,請洽所屬期貨商業務窗口。
| 投資人身份碼 | 投資人類別 |
|---|---|
0 |
自然人 |
1 |
法人 |
2 |
期貨自營商(期貨商自有資金操作專戶) |
3 |
造市者 |
投資人身份碼由盤前批次檔決定,盤中不可變更。