琴子 [財經程式設計] 學習的思維

Facebook Twitter LinkedIn LINE Skype EverNote GMail Yahoo Email

說明

在這裡,我們先不急著寫程式,而是來談談「學習財經程式設計」應具備的思維。

本文假設讀者是從未寫過程式,或僅有少量程式經驗的財經從業者或愛好者。若你已具備較深的程式設計背景,可略過此篇。

實例:追蹤特定台股的千張大戶持股變化

我們以一個實際案例說明財經程式設計的基本思維。

假設我們想追蹤某檔台股中千張大戶的持股變化。由於大戶通常掌握較早的公司內部資訊,觀察他們的進出有助於判斷股價可能的走勢。

例如,若大戶明顯減持,可能代表該股票潛藏利空,跟著賣出或許能避開風險;反之,若大戶積極加碼,則可能代表利多訊息提前流出,此時跟進買進通常風險不高。簡單說,就是盡可能與大戶「站在同一邊」。

若想用電腦程式解決這項任務,首先要定期收集千張大戶的持股比率,再觀察該比率的變化方向。這個任務可拆解為兩部分:

  1. 資料收集:用網路爬蟲(web crawler)取得每週的大戶持股數據。
  2. 變化判斷:可以人工觀察折線圖(line chart)趨勢,也可以用程式自動分析比率是上升或下降。

值得一提的是,神秘金字塔這個網站已經實作出這樣的圖表網頁,對一般使用者來說已相當方便。但若你需要進一步分析或保留原始數據,仍需自行撰寫爬蟲來取得資料。

先有目標,再學知識

寫程式不再是工程師的專利。即使是一般使用者,也能為了解決財經問題而撰寫小型程式。

因為我們的目標多為簡單任務,其實不需要一開始就深入資料結構、演算法、電腦架構等理論。這些繞遠路的知識很可能還沒學會,熱情就先被磨掉了。

相對地,我們建議採用「目標導向學習法」:先設定明確的任務,再針對該任務補足必要的知識。這樣能在較短時間內取得實用成果。

回到前面的例子,如果我們想追蹤持股變化,最需要掌握的是爬蟲技術與圖表繪製。這兩者的實作語言可以選擇 Python 或 Groovy,只需學會任務所需的部分即可,暫時不必深入底層知識。

先求有,再求好

剛開始寫程式時,不必急著打造「系統級」應用。即使只是單一的命令稿(script),只要能完成任務,就是成功。

等有了基本成品後,再逐步重構(refactor)成模組化、可重用的工具也不遲。

此外,若資料量不大,就不必太執著於效能或最佳化。即使用 Python、Groovy 等速度不快的語言,在實務上也多半足夠。

簡單勝於複雜

圖形介面與網頁程式雖然美觀,但設計起來相對複雜。相比之下,命令列(CLI)程式雖然外觀陽春,但簡單好寫、維護容易。

程式的核心價值在於正確執行邏輯流程,使用者介面只是外殼。並非所有財經應用都需要漂亮的介面,應視任務性質選擇最合適的形式。

善用現成工具:站在巨人的肩膀上

現代程式語言都有豐富的函式庫、模組與套件,能幫助我們快速完成任務,而不必每次都從零開始。

建議選擇有成熟社群與豐富資源的語言,如 Python、Groovy、JavaScript 等,可大幅節省開發時間。

註:雖然 Groovy 原生函式庫較少,但它可無縫使用 Java 生態系的物件庫,實用性依然很高。

模組化:打造自己的工具箱

當你寫多了財經程式後,會發現有不少任務會重複出現,例如抓取歷史股價、統計成交量等。

這時可以將重複部分獨立出來,寫成模組。其他程式只需「呼叫」這些模組即可。這樣一來,維護與擴充也更方便。

隨著模組增加,你便擁有了屬於自己的工具箱(toolkit),未來遇到類似任務,只需串接既有模組,或稍作修改,就能快速完成。

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

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

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