琴子 [財經程式設計] 在電腦中處理財經資料

Facebook Twitter LinkedIn LINE Skype EverNote GMail Yahoo Email

前言

本文將介紹如何使用電腦程式處理財經資料(financial data)。

當程式執行時,財經資料會以特定的資料型態(data type)存在於記憶體中;程式結束後,這些資料會隨之消失。若需持久保存,通常會將資料儲存在檔案(file)中,並採用特定的檔案格式(file format),以便日後再次讀取與處理。

在電腦中呈現財經資料

整數(Integer)

某些財經數據,如交易量(volume),通常以整數表示。整數在電腦中有不同的寬度限制,常見的型態如下:

  • short:16 位元
  • int:32 位元
  • long:32 位元(在部分語言中可能為 64 位元)
  • long long:64 位元

部分語言如 Python 與 Groovy 原生支援大數(big number)運算,因此不需擔心整數位數溢位的問題。

浮點數(Floating-Point Number)

價格(price)通常以浮點數表示。例如,2020 年初時 0050 的收盤價約為 97.30,在電腦中會儲存為 97.3

依精確度不同,常見的浮點數型態如下:

  • float:約 7 位數精確度
  • double:約 15 位數精確度
  • long double:約 24 位數精確度

一般建議使用 double 型態。現代電腦運算資源充足,無需過度節省記憶體空間。本文探討的主題是資料估算而非金融機構級系統,因此不需過度考慮小數點精度問題。

日期或時間物件(Date or Time Object)

日期與時間屬於特殊的資料型態,自行實作容易出錯。大多數高階語言皆提供標準函式庫來簡化處理流程。

舉例來說:

在分析具有時序性的交易資料時,處理時間物件是不可避免的步驟。

表格物件(Table Object)

一連串交易紀錄常以表格形式儲存。除了 R 等統計語言,絕大多數程式語言並未內建表格資料型態,因此需要額外函式庫輔助。

由於篇幅有限,本文不詳述各函式庫的使用方式。

繪圖板(Canvas)

繪圖板是一種可放置圖形元件並與其互動的容器,常見於 GUI 函式庫或 HTML5 環境中。

在財經應用上,繪圖板可用來製作互動式圖表。不過撰寫互動繪圖程式較費工,若互動性需求不高,輸出靜態圖檔反而簡單許多。

常見的財經資料檔案格式

CSV

CSV 是純文字的表格格式,可儲存字串、數字等純量數據,但不支援公式與圖表。

由於使用程式處理 CSV 比處理試算表更簡單,若資料無需使用試算表專有功能,建議以 CSV 儲存。

JSON

JSON 是輕量級、跨平台的文字檔案格式,幾乎所有主流程式語言都提供相關處理函式庫。

許多 Web API 使用 JSON 回傳資料。然而,JSON 並不適合儲存結構化表格資料,實務上常將 JSON 資料轉換為其他格式後再分析。

XML

XML 是通用資料格式,與 HTML 類似,使用標籤(tag)組織資料。但與呈現為目的的 HTML 不同,XML 用於儲存資料與其元資料(metadata),並設計給電腦讀取,不適合人工檢閱。

在 JSON 普及前,XML 是 Web API 常用的傳輸格式,部分應用仍在使用。

試算表(Spreadsheet)

試算表以儲存格(cell)為單位,能儲存文字、數字、公式等資料,常用於財經資料記錄。

由於其設計著重於互動與動態更新,程式處理試算表會比處理純文字表格(如 CSV)複雜。若不需公式或圖表功能,建議先將試算表轉為 CSV,再進行處理。

圖檔(Image)

在財經程式設計中,圖檔主要用於資料視覺化輸出。圖檔分為:

  • 點陣圖(raster graphics)
  • 向量圖(vector graphics)

一般建議使用 PNG 格式,因其具備無損壓縮與適中檔案大小的特性。需注意的是,圖檔一旦生成,即失去原始數據,因此應同時保留原始資料。

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

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

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