任何投資行為均有其風險,作為一名投資者,應為自己任何投資決策行為承擔所有風險。
本網站當盡力提供正確之資訊,所載資料均來自或本諸我們相信可靠之來源,但對其完整性、即時性和正確性不做任何擔保,如有錯誤或疏漏,本網站所有人及關係人,並不負任何法律責任。
本文非任何形式之投資建議,不保證所提供之資訊可以創造獲利、減少投資損失,亦不會鼓吹任何具體之投資行動。本網站所有人及關係人,對於本網站資訊使用者直接或間接依賴並參考相關資訊後,採取任何投資行為所導致之直接或間接損失,或因此產生之一切責任,均不負任何損害賠償及其他法律上之責任。
前言
本文將介紹如何使用電腦程式處理財經資料(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)
日期與時間屬於特殊的資料型態,自行實作容易出錯。大多數高階語言皆提供標準函式庫來簡化處理流程。
舉例來說:
- Python 使用
datetime
模組 - Java 與 Groovy 使用
java.util.Date
類別
在分析具有時序性的交易資料時,處理時間物件是不可避免的步驟。
表格物件(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 格式,因其具備無損壓縮與適中檔案大小的特性。需注意的是,圖檔一旦生成,即失去原始數據,因此應同時保留原始資料。