從零開始設計證券公司核心系統(6):設計交易結算系統(Trade Settlement)
證券核心系統(Core System)

從零開始設計證券公司核心系統(6):設計交易結算系統(Trade Settlement)

在前面幾篇文章中,我們設計了證券公司核心系統中的接單與下單轉送系統、風控系統、成交回報系統等。 在這篇文章中,我們將專注於設計 交易結算系統(Trade Settlement),該系統負責處理所有完成交易後的資金交割、資產交割和結算過程。 交易結算系統是證券公司運營的基石之一,它不僅確保交易雙方資金和資產的正確交割,還必須遵循監管要求。 交易結算系統的基本功能 交易結算系統的主要功能是管理交易後的資金與資產交割。具體功能包括: 1. 資金結算(Funds Settlement): * 確保買賣雙方的資金在交易後得到正確的結算。 * 包括確認資金的轉移、銀行賬戶的更新等。 2. 資產交割(Securities Delivery): * 確保買方獲得相應的證券,賣方完成證券交割。 * 資產交割通常通過中央證券存管機構(CSD)或其他托管機構進行。 3. 結算金額計算(Settlement Amount Calculation): * 計算每筆交易的結算金額,根據成交價格、數量和其他費用進行結算。 * 包括手續費、印花稅等。
5 min read
從零開始設計證券公司核心系統(5):設計成交回報系統(Trade Reporting)
證券核心系統(Core System)

從零開始設計證券公司核心系統(5):設計成交回報系統(Trade Reporting)

在前幾篇文章中,我們已經設計了證券公司核心系統的各個關鍵模組,包括接單與下單轉送系統、風控系統等。 這篇文章將專注於設計 成交回報系統(Trade Reporting),該系統負責處理交易所返回的成交結果並回報給客戶。 成交回報系統對於證券公司的運營至關重要,它不僅需要即時回報成交結果,還必須符合監管機構的要求。 成交回報系統的基本功能 成交回報系統的主要功能是根據交易所的回報,將交易結果告知客戶並進行內部記錄。具體包括以下功能: 1. 接收成交回報(Trade Execution Report): * 從交易所或流動性提供者接收訂單的成交回報。 * 包括成交價格、成交量、時間戳等信息。 2. 回報客戶(Trade Confirmation): * 根據成交回報生成確認訊息,並及時發送給客戶。 * 確認訊息包括成交價格、數量、交易所等詳情。 3. 處理撤單(Cancelation): * 當訂單被撤銷或取消時,系統需要接收交易所的撤單回報,並即時通知客戶。 4. 訂單狀態更新(Order Status Update):
5 min read
從零開始設計證券公司核心系統(4):設計風控系統(Risk Management)
證券核心系統(Core System)

從零開始設計證券公司核心系統(4):設計風控系統(Risk Management)

在前面幾篇文章中,我們深入探討了證券公司核心系統的高階架構設計、接單與下單轉送系統的設計。 在這篇文章中,我們將聚焦於風控系統(Risk Management System),它是保證證券交易合規性和風險可控的核心模組。 風控系統的設計是證券公司核心系統中至關重要的一環,它不僅能保護公司免受風險損失,還能保證交易操作符合相關監管要求。 風控系統的基本功能 風控系統主要負責在訂單流轉過程中進行風險檢查,確保每一筆交易都在合規範圍內。具體來說,它主要執行以下功能: 1. 資金檢查(Funds Check): * 檢查客戶是否有足夠的資金進行交易。 * 包括檢查保證金要求、可用資金餘額等。 2. 倉位檢查(Position Check): * 檢查客戶的當前倉位,防止過度槓桿或超過頭寸限制。 * 例如:檢查是否超過某股票的持有量或是否達到最大開倉限制。 3. 信用檢查(Credit Check): * 檢查客戶的信用狀況,防止風險過高的客戶進行交易。 * 這可能涉及查詢客戶的信用額度、保證金比例等。 4. 風險指標檢查(Ris
5 min read
從零開始設計證券公司核心系統(3):設計接單與下單轉送系統(Order Entry & Gateway)
證券核心系統(Core System)

從零開始設計證券公司核心系統(3):設計接單與下單轉送系統(Order Entry & Gateway)

在前兩篇文章中,我們已經了解了證券公司核心系統的高階架構設計,並且描繪了各模組之間的互動關係。 這篇文章,我們將深入討論「接單系統」與「下單轉送系統」,這是核心系統中的關鍵部分,負責接收來自客戶的交易指令並將其轉送至交易所。 接單系統(Order Entry System) 接單系統是證券公司核心系統中的第一道防線,負責接收客戶的交易指令並進行初步處理。它的主要功能包括: 1. 接收指令: * 接收來自客戶端的訂單(買、賣、撤單等)。 * 支援多種介面,如網頁端、手機 App 或 API 接口。 2. 指令格式檢查: * 確保客戶指令符合交易規則(例如:股票代碼格式、交易數量範圍等)。 3. 風控檢查前傳遞: * 若訂單符合格式要求,將訂單轉送至風控系統進行風險評估。 下單轉送系統(Order Gateway) 下單轉送系統是負責將接收到的有效指令轉送到交易所或流動性提供者(Liquidity Provider)的關鍵模組。這個系統通常需要具備以下功能: 1. 指令轉送:
4 min read
從零開始設計證券公司核心系統(2):高階架構設計
證券核心系統(Core System)

從零開始設計證券公司核心系統(2):高階架構設計

在上一篇文章中,我們了解了證券公司核心系統的基本概念與模組。 這次,我們將深入探討如何設計一個 高階架構圖,並了解各個模組如何協同工作,達成無縫的交易體驗。 設計證券公司核心系統的高階架構 證券公司的核心系統設計,涉及多個模組的協作, 每個模組都需要精確地互動來確保交易的準確性與即時性。 以下是我們的系統高階架構設計: 系統架構總覽 1. 客戶端(Client):客戶通過交易平台(如手機 App 或桌面端)提交交易指令。 2. 下單系統(Order Entry System):負責接收來自客戶的交易指令,進行初步檢查與風控校驗。 3. 風控系統(Risk Management):在指令發送之前,進行資金與風險檢查。 4. 下單轉送系統(Order Gateway):將有效的委託單送到交易所或流動性提供者。 5. 交易所/流動性提供者(Exchange/Liquidity Provider):外部交易所處理委託單,並進行撮合。 6. 成交回報系統(Trade
4 min read
從零開始設計證券公司核心系統(1):什麼是核心系統?
證券核心系統(Core System)

從零開始設計證券公司核心系統(1):什麼是核心系統?

你知道嗎? 當你在股票交易 App 上點下「買進」或「賣出」時,這個指令並不會直接成交,而是透過一套複雜而穩定的系統,送到外部的交易所進行撮合。 這套負責接收、管理、轉送客戶委託單的關鍵系統,就是證券公司的「核心系統」。 從今天開始,我將帶你從零開始,一步步了解證券公司核心系統的設計與運作方式。 無論你是工程師、金融從業者,或只是單純對金融科技有興趣,都可以一起來學! 什麼是證券公司的核心系統? 簡單來說,證券公司的核心系統,是一套負責處理「客戶交易指令」到「下單至交易所」的關鍵基礎設施。 在這個模式中,證券公司本身不撮合交易,而是將訂單送到: * 國內交易所(如台灣證交所、上交所、深交所) * 海外交易所(如 NYSE、NASDAQ、HKEX) * 其他第三方流動性提供者(Liquidity Provider) 核心系統必須保證: * 客戶下單正確無誤 * 委託單能即時轉送至交易所 * 能追蹤訂單的各種狀態(
3 min read
使用 Python + FastAPI,並透過 Docker Compose 部署應用教學

使用 Python + FastAPI,並透過 Docker Compose 部署應用教學

目錄 1. 前言 2. 開發 FastAPI 專案 3. 建立 Dockerfile 4. 撰寫 docker-compose.yml 5. 建立 .env 檔案(可選) 6. 部署與測試 7. 總結 1. 前言 FastAPI 是一個高效能、現代化的 Python Web 框架,特別適合開發 API。 搭配 Docker + Docker Compose,可以讓部署快速且穩定。 這篇教學將帶你一步步從開發到容器化部署。 2. 開發 FastAPI 專案 2.1 建立專案結構 mkdir fastapi-docker-demo cd fastapi-docker-demo
3 min read
使用 Docker Compose 快速部署 Redis 與 RedisInsight 視覺化管理工具

使用 Docker Compose 快速部署 Redis 與 RedisInsight 視覺化管理工具

在現代應用開發中,Redis 已成為不可或缺的記憶體型資料儲存系統。本文將手把手教你,如何透過 Docker Compose 快速部署一個帶有基本安全性設定(密碼與使用者權限)的 Redis 服務,並使用 RedisInsight 來做可視化管理! 目錄 1. 專案結構概覽 2. 撰寫 docker-compose.yml 3. 設定 redis.conf 4. 啟動服務 5. 透過 RedisInsight 連接 Redis 6. 小結 1. 專案結構概覽 首先,建立一個新的資料夾,例如 redis-docker,裡面放置以下檔案: bash複製編輯redis-docker/ │ ├── docker-compose.yml └── redis.conf 2. 撰寫 docker-compose.
3 min read
如何自架VPN服務?
Expat Life

如何自架VPN服務?

這篇不是來業配各種在Youtube上廣告到爆炸的VPN,在胡志明工作常常都會想要到處拜訪咖啡廳,轉換一下環境工作,當個類數位遊牧民族(加班),而如果使用手機流量來分享,雖然較為安全,但是通常流量絕對撐不了多少時間,勢必需要連結咖啡店的WiFi啦! 在我抵達第一週的時間中,連結公共WiFi的就是國際跨國飯店與星巴克,如果這兩個地方不行,應該整個東南亞都不行了吧?但好死不死,Microsoft通知說同時間下有三個不同地方的人想要嘗試登入我的帳號,分別是越南、埃及與印尼,實在是嚇到滴尿...... 只好發揮客家工程師的精神,研究看看能不能自己架設VPS,再裝上OpenVPN,實在是有夠簡單且方便,就一步一步分享給大家。 Step 1:創建Linode(Akamai)帳戶 請先自行申請一個Linode帳號 Cloud Computing & Linux Servers | Alternative to AWS | LinodeSimplify your infrastructure with Linode’s cloud computing and hosting solution
4 min read
如何申請尼泊爾旅遊簽證?(中華民國/台灣)
Travel

如何申請尼泊爾旅遊簽證?(中華民國/台灣)

尼泊爾採取落地簽,可以於抵達機場時填寫,但可以先行線上申請以節省時間。 因資料僅保留「兩週」時間,出發前再申請即可。 Step 1:尼泊爾移民局簽證入口 尼泊爾移民局簽證:https://nepaliport.immigration.gov.np/ Step 2:點選Visa On-arrival 大部分國際航班都還是在加德滿都的特里布萬國際機場(Tribhuvan International Airport, TIA),由下方選單選擇 Tribhuvan International Airport (TIA)。 Step 3:基本資料填寫 1. 介面語言:有英文與中文可選擇 2. 國家:選擇 Taiwan(China) 😭 3. 簽證類型:一般觀光選擇 Tourist Visa 4. 護照號碼 5. 生日
3 min read
Python加速技巧|異步處理(Asynchronous)
Python

Python加速技巧|異步處理(Asynchronous)

在一開始開發程式時,「自動」執行批次任務相對比「手動」下,怎麼樣都覺得很有效率,但當程式開發到一定程度時,某些專案就會開始要求速度,例如我近幾個月都在開發選擇權造市程式,這個時候執行速度就是相當重要啦! 一般正常狀態撰寫的程式是由上而下的線性執行,當執行無誤完成第一步後,才會接著執行下一步。如果任務之間沒有相依性,我們可以如何增加效率呢? 我們先舉一個生活上的例子——「煮飯」,近期作為外派菜鳥的我正在學習如何自己煮飯,畢竟在台灣的都會區生活實在太方便了,到了異國只能自己來才吃得到想吃的味道。而我目前的階段屬於煮飯菜鳥,一次不能做太多事,免得手忙腳亂全部搞砸,所以一次只能做一件事情,因為很多事情都沒做過也不知道時間處理會如何。 Lv 1 廚房菜鳥:(Single thread) * 一次處理一件任務:例如先洗菜,再煮一鍋水,再把菜放下去燙;洗米、泡米、再放入電鍋煮。 * 假設每件任務都是獨立且依序執行 Lv 2 廚房進階菜鳥:(Asynchronous) * 區別什麼任務會花比較久的時間,但又不用自己實際盯場,例如電鍋煮飯。 * 當在執行等待任務完成的時間,就可以先去
5 min read