琴子 [財經程式設計] 常見的任務

Facebook Twitter LinkedIn LINE Skype EverNote GMail Yahoo Email

說明

本文介紹撰寫財經程式設計時常見的幾項任務,提供初學者一些基本概念作為起點。

收集資料(Data Collection)

無論是做運算、視覺化、技術分析,還是其他功能,所有任務的基礎都是財經資料。因此,資料收集是財經程式設計的第一步。

常見的收集方式包括:

  • 直接下載資料
  • 透過網站 API 取得資料
  • 使用網路爬蟲抓取資料內容

除了直接下載可以手動操作外,其他方式多半需要透過程式自動化流程。

此外,將資料儲存於 SQLite、MySQL 等資料庫中,可以避免每次都從頭抓取資料,有助於日後重複使用。

這部分主要需要學習如何撰寫 HTTP 客戶端程式、製作網路爬蟲,若能進一步操作資料庫,也會是一項加分技能。

進行代數運算(Algebraic Operation)

使用程式進行財經數據的數學計算,是財經程式設計的基本任務。現代程式語言大多內建代數功能,也有許多標準函式庫或開源套件提供常見數學公式的實作,實際上很少需要從零手刻公式。

資料視覺化(Data Visualization)

與其直接閱讀表格,不如將資料視覺化為圖表,通常更容易判讀。例如某些依賴圖形辨識的技術分析方法(如形態學),難以直接用程式處理,但圖表可輔助人工辨識。

雖然現在許多財經網站已提供漂亮的互動式圖表,但仍會遇到現成圖表無法滿足需求的情況。這時候自己製作圖表就成為一種補足方式。

部分套件已內建常見圖表類型,只要將資料餵入即可產生視覺化結果。若沒有現成套件可用,則需要使用低階繪圖功能自行組合成所需圖表。

技術分析(Technical Analysis)

技術分析是另一種常見的資產評估方式,除了圖表判讀,也常應用在程式策略中。技術分析相關書籍眾多,本文不再贅述基本理論。

目前已有許多套件提供預寫好的技術分析指標,只要將資料帶入即可。除非有特殊需求,否則實際上很少需要自行實作指標。對初學者而言,先從熟悉現有套件開始是較安全的做法,能避免早期因寫錯公式而誤判行情。

策略設計(Strategy)

在掌握技術指標後,就能進一步設計自己的選股與交易策略。由於每位投資者的風格不同,策略設計其實是一件非常個人化的事情。

策略設計的目的並非學術研究,而是要能在市場中實際獲利。也就是說,重點不在寫出一套理論上完美的系統,而是能夠執行、可持續的策略。

任何策略都有可能失敗,因此技術分析經常強調「停損」(stop loss)的重要性。同時,也應進行策略的「回測」(見下一節),以確認其基本可行性。

回測(Backtesting)

當策略寫好,且手上有歷史資料時,就能進行回測。回測的目的不是預測未來、保證獲利,而是檢驗策略的合理性。

例如:

  • 某些策略需要高頻交易,可能因手續費過高而無法實施
  • 某些策略雖然看似會賺錢,但實際出手機會太少,實用性也就大打折扣

即使是回測表現不錯的策略,也不能保證獲利;但如果連回測都不通過,就沒必要拿去市場上測試了。

程式交易(Algorithmic Trading)

所謂程式交易,就是將整個交易流程全自動化。這可說是通往被動收入的最後一哩路。不過,自動交易程式並非「寫完就能放著賺錢」,仍需持續監控與調整。

例如:在市場發生「閃崩」(flash crash)時,一般投資者若沒手動停損,反而可能撐過波動;但程式交易可能因觸發停損條件而提早出場,造成不必要的虧損。

因此,如果覺得全自動交易讓你睡不安穩,也可以改為設計成輔助型工具,例如自動提醒或策略篩選,讓投資者在確認後再手動下單。

關於作者 琴子喜歡觀察市場邏輯,也喜歡沉靜地彈鋼琴。旅行時總習慣記錄風景背後的脈絡,投資時則偏好慢慢思考而非追高殺低。

現實中關注全球經濟與資產配置,虛擬世界則熱衷於在《黑色沙漠》裡操作漁業與貿易鏈,研究市場機制與角色配置的效率極限。

「理性投資」是琴子整理思緒、檢視決策的地方。不是為了給建議,而是希望留下清楚的腳印,提醒自己:判斷永遠比預測重要。