發佈日期: 發佈留言

市售回測軟體與自己開發的差異

現在市面上已經充斥著很多現成的回測或量化系統了,像是以外匯為主的MT4、以股票為主的XQ、以期貨為主的Multicharts,這些系統雖然有其優點,最主要的原因是使用上輕鬆簡單,然而大部分是必須要付費的,所以不一定會使用。

以下分成三個點分析自己開發的優勢

  1. 市售的軟體會受到功能擴展上的限制

因為程式都是已經包裝過的,無法獨立出內部的功能使用,導致在機器學習上無法發揮優勢,另外在做資金或部位管理時,未必能滿足自己的需求,若是要將各個策略組合起來會相當困難,如此一來自行開發的優勢就會大幅體現。

  1. Python的語法簡單且功能強大

相對C語言以及Java而言,Python上已有許多現有的函式庫,尤其是針對數據處理的功能,可用幾行程式碼就解決在C語言需要用幾百行才能完成的問題。

  1. Python是免費而且開源的

在Github可以搜尋到不少回測相關的專案而且都是免費的,且Python有不少機器學習的功能可以使用,而且多數券商也有提供Python的API接口,想怎麼玩就怎麼玩。

發佈日期: 發佈留言

進行回測常被提到的套件們

常被提到的回測套件們

目前從事數據分析和數據科學的金融專業人士會使用R,Python和其程式語言對各種數據集進行分析,而Python引起了人們的極大興趣,並且正在成為數據分析的首選語言,這也歸功於Python有一個非常活躍的社群,他們毫不吝嗇地為python函式庫的發展做出了貢獻,並且多數都是開源的項目。

如果在Github上搜索,你將會發現有python套件可以執行幾乎所有你想做的事情,那本篇文章就來說分享一下有哪些套件是比較熱門的吧。

數學運算及資料結構:

Numpy – NumPy能支援高階大量的維度陣列與矩陣運算,此外也針對陣列運算提供大量的數學函式函式庫。

Scipy – SciPy包含的模組有最佳化、線性代數、積分、插值、特殊函數、快速傅立葉變換、訊號處理和圖像處理、常微分方程式求解和其他科學與工程中常用的計算。

Pandas – pandas是用於數據操縱和分析的軟體庫。特別是,它提供操縱數值表格和時間序列的資料結構和運算操作。

交易及回測:

TA-Lib – TA-Lib,在一兩秒的時間內快速計算超過一百種的技術指標!指標的選擇眾多以外,還可以微調每個技術指標參數值的設定,非常好用!

Zipline – zipline是一個量化交易的回測框架,提供相當多實用功能,以及擁有事件驅動回測引擎。

Pybacktest – 是一個基於pandas的vectorized回測框架,這個框架可能不太適合更專業的回測需求,但適合練習需求。

發佈日期: 發佈留言

什麼是回測

今天在這邊簡單介紹一下。回測是指自己將自己的投資策略透過歷史資料驗證,模擬在過去的時間中實際交易股票,確認這個投資策略在過往的歷史數據中所能獲得的績效。

有些人可能會覺得,為什麼要這麼麻煩的去做回測?理由很簡單:確認自己的策略是否真的有效、以及找出更有效的策略。雖然說過去有效的策略在未來未必持續有效,但是如果一個策略沒辦法通過歷史考驗,那不是更不能信任了嗎?而且很多策略看似合理,但是回測後才會發現原來績效並沒有比較好,例如連續漲多少天就做多或是連續跌多少天就做空的策略,理論上順著趨勢在進場,但實際上經過回測後可能會發現事實未必是如此容易。

而回測上也會遇到種種問題,程式邏輯錯誤導致整張報表誤算,沒有考慮交易成本,或是錯誤的資料內容等等的情形。

因此要做出正確且有效的回測本身所具備的條件至少要有基本的程式能力、基本的金融知識、以及高品質的數據來源。