題目1:設計一個量化策略的程式,程式會去擷取第三方的價格資訊,做出買入賣出的決策;若你現在要做一個單機版的自動化交易你會怎麼設計你的架構。為什麼?量化交易系統概觀量化交易系統 7大模組題目2:承上題,如果要增加一個回測系統,測試設計的策略年化報酬率,你會如何設計。為什麼?題目3:承上題,如果要將上述的系統從單機版變成一個公開的服務,你會怎麼設計及建構整個服務。為什麼?附錄:量化交易系統架構圖 (全)GUI Mockup (ongoing)
題目1:設計一個量化策略的程式,程式會去擷取第三方的價格資訊,做出買入賣出的決策;若你現在要做一個單機版的自動化交易你會怎麼設計你的架構。為什麼?
- 根據定義好的交易策略進行自動化交易,稱作量化交易(Qualitative Trading); 以我個人目前對交易的認知,設計了一版量化交易系統架構,規劃有以下7種模組,依序分別說明:
- 若有不清楚的部分,歡迎面試時來討論,如有觀念錯誤之處也歡迎不吝指正
量化交易系統概觀
量化交易系統 7大模組
- 資訊蒐集模組 (Crawler Module)
主要功能:蒐集價格資訊、市場情緒指標等資訊。
- 交易策略模組 (Strategy Module)
- 策略類型
- 39 best Python Algorithmic Trading libraries in 2022 | kandi
- Benson 市場情緒指標、Rose 等等訊息來源、補鯨流
- 網格交易策略
- 海龜交易策略
- Bobo 自己也還在揣摩學習中,附上簡易的心智圖
交易獲利的秘訣 ⇒ 低買高賣 XDD
其實最重要的是擬定停損策略、停利策略
主要功能:根據數據即時計算策略,並產生交易訊號
- 交易模組 (Trading Module)
- 下單至哪個交易所
- 幣安
- FTX
- 其他
- 安控機制
主要功能:根據信號執行停損/停利操作
- Log Module
- Auditing
- 避免像業內知名的 Kronos Research 的內鬼事件發生
主要功能:任何操作皆須留下紀錄
- 訊息佇列模組 (Message Module)
- Channels:Slack、Line、Telegram、Discord
主要功能:Queue Jobs 非同步處理任務,並派發訊息通知
- Auth Module
- 身份驗證、權限授權、交易所 API Token 管理
主要功能:認證、權限操作
- 回測模組 (Backtesting Module)
- 回測之後會取得一些評估指標(evaluation metric)來幫助我們判斷這個策略的優劣。
- 通常也會聽到有人將回測稱作覆盤。
主要功能:回測模組就是在歷史資料中處於上帝視角,因此可以模擬出所有狀況,把各種參數都嘗試過一遍,找出最好跟最差的情況
其實系統要讓使用者操作,就還會有系統編號為 0. User Interface (使用者操作介面) 要考慮,不過這邊比較常見就就不特別描述。
- 若有不清楚的部分,歡迎面試時來討論,如有觀念錯誤之處也歡迎不吝指正
題目2:承上題,如果要增加一個回測系統,測試設計的策略年化報酬率,你會如何設計。為什麼?
- 回測是一種 offline evaluation ,也就是根據歷史資料去計算我們策略的表現。因為使用的是歷史資料,這個時候我們像是從上帝視角在看交易,因此我們可以嘗試調整不同的參數來讓獲利最大化。
- 回測之後我們會取得一些評估指標(evaluation metric) 來幫助我們判斷這個策略的優劣。
- 這個回測系統,可以考慮自建、串接第三方回測平台 (ex. Tradingview),或是兩者混搭。
自建的話,系統架構預計需要處理的部分有:
- 需要有第三方價格資訊來源:
- 幣安交易所
- 但最多只到 2016年左右
- 如果是要更早以前,可以用爬蟲去抓「非小號」資料
- 回測所需的運算資源考慮建立在公有雲(AWS、GCP) 方便擴充
題目3:承上題,如果要將上述的系統從單機版變成一個公開的服務,你會怎麼設計及建構整個服務。為什麼?
- 可能會需要先了解區分單機版和公開版的主要原因是?安裝 vs SaaS 網站服務這兩者差異嗎?
- 還有這邊指的公開服務是指
- 讓一般人可以透過這個系統下單嗎?像是 FinLab 台股/加密貨幣回測平台
- 那就夠上這個服務就需要考慮到大流量的狀況
- 或是像 Steaker 那樣,只有申購 是對外公開?但背後的交易系統是這次設計的服務。
有機會可以在面試時當面多聊一些
Loading Comments...