...

自建資料庫的三個優點

資料庫


這個問題也是我在研發課程時一直被問到的問題,其他人的課都沒有弄到資料庫,為什麼你的要弄到資料庫,這樣學習門檻會很高,潛在的受眾群就會比較少,但是要建立一個資料驅動(Data-Driven)的金融研究與交易平台,資料庫是標配而不是選配,很多線上課程還在把歷史資料放在Excel或是CSV,我只能說實在TMD有夠業餘,根本只是為了降低授課門檻及多賣一點課程做設計。

自建資料庫需要學會一些資料庫的知識,入手需要花一些時間,但是相信我這個投資一定值得,以下花一些篇幅講述一些建立資料庫的優點:


輕易的進行雲端化

相信大家都會有一個想像,操作雲端的Server來進行任何你想做的事情,不論是交易或是研究等應用,使用Python與MySQL可以輕鬆的將本機端的應用佈署到Server上,在Server上執行撰寫好的程式交易、資料擷取應用或Chatbot等應用,唯有使用Python搭配資料庫的應用才能真正的執行雲端化,相信你不希望租了Server,還弄了一堆資料夾來放xlsx與csv檔吧?

 

SQL指令的完美搭配

透過一些基礎的SQL指令加上Python的套件Pandas就可以處理90%以上的問題,相信有略懂Python這塊的朋友都對於Pandas不陌生,Pandas的作者自己經營一家避險基金公司,所以對於時間序列等資料分析方法算是著墨相當深的,我自己是習慣簡單的SELECT、INSERT、GROUP BY、WHERE及SORT等指令在SQL做,其他的都丟到Pandas裡面去做,多少要給SQL做多少要給Pandas做就看個人對兩個語言的熟悉度了。

從Pandas接上DB也相當方便,Pandas都有相對應的函數可以讓我們很方便地進行存取,我相信很多人會留在Python,應該都跟Pandas超讚的實用性拖不了關係,後續會有比較完整的文章或教學帶大家來好好地玩轉一下Pandas套件,實在是大推!

真正保有資料自主權

看過有些教學是直接把分析與爬蟲一氣呵成,以技術層面來說一次交會學生兩個技術當然很好,但是在網路斷線或對方網站改版時卻無法進行存取,更不用說有一些一天只能存一個資料點的資料,還是建議大家可將抓取下來的資料,按照自己想要的格式存在自己的資料庫裡,短時間的爬蟲掛掉或網站停止並不會影響當下的分析作業,雖然多一個存與取的動作,但是只需要寫一次,後續指令均相同。

也可以將抓取下來的資料先轉化分析為有用的資訊,再存到資料庫中,這個絕對是相當方便的,像是做一些回測最佳化或是機器學習訓練的模型參數都可以存入資料庫,在未來有需要做類似的分析時,即可方便的透過資料庫來抓取以前跑的參數與結果。

結論

就如前面所說的「資料庫是標配而不是選配」,記得向MultiCharts這種套裝軟體就沒有支援SQL的存取,看到很多人都把它放在無限多個csv中,這個就如同前面文章【程式交易】為什麼你應該用Python做程式交易? 所提到的問題,這些在完全自建的Python + SQL上都可以獲得解決,甚至還有人先利用Pyhon爬蟲,再將資料存成csv或txt檔後,再透過MultiCharts進行分析,平台跨太多總是比較容易出問題,尤其是到後期海量的歷史資料進來的時候。