好用Package:用ffn分析時間序列

Pandas 的 DataFrame 可以很方變得幫我們處理時間序列,只需要短短幾行,就能達到在其他程式語言要寫數十行的功能

但是DataFrame就夠了嗎?

當我們在處理財務金融時,常常會需要分析時間序列(例如股價),雖然我們可能都知道什麼是maximum dropdown、什麼是sharp ratio,什麼是daily
return,但是有時候用dataframe來計算,還是免不了寫一些數學計算,增加程式碼的複雜度,讓閱讀程式碼變得比較辛苦。

救星:ffn (Financial Functions for Python)

所以這時候,你的救星就出現了,叫做ffn,ffn是一個分析時間序列的package,只要一import ffn,你的dataframe就會瞬間多了很多能力!接下來我們就來看看是什麼能力吧!

這次的程式碼都會在google colab上,大家可以直接打開網頁就開始跟我們一起玩耍吧!

首先,我們必須要先安裝ffn,安裝的方式非常的直覺:

1
!pip install ffn

這樣就安裝好囉!上式中的驚嘆號代表我們將這段command line語法,輸入在jupyter來安裝,這又就不需要額外再開啟terminal了!

安裝好了之後我們就可以開始寫程式囉!

利用ffn取得股價

有了ffn我們可以很輕易的取得多檔股票的股價,ffn的底層是使用yahoo api,所以同樣也可以抓台股或其他國際股市喔!

1
2
3
4
import ffn

prices = ffn.get('2330.TW, 1101.TW')
prices.head()

可以發現這個股價的格是就是我們熟悉的dataframe耶!所以我們一樣可以使用一些dataframe既有的功能,例如「.plot」來繪圖:

1
prices.plot()

繪完圖後發現,雖然我們可以比較「2330」台積電,跟「1101」台泥的股價,但是他們的起始股價是不一樣的,所以無從比較報酬率。

想要比較報酬率,我們可以用「ffn」新增的額外功能「rebase」:

ffn提供的functions

1
prices.rebase().plot()

這樣就可以讓股價的起始值相同囉!這是ffn提供的眾多功能之一,但你不用額外學一個新的資料表示法,而是直接對dataframe操作就可以了!所以說ffn有點像是dataframe的補充包,讓我們來看看還有哪些好用的功能吧!

下跌幅度

我們可以藉由ffn來計算並比較dropdown,也就是比較虧損的幅度:

1
prices.to_drawdown_series().plot()

或是我們之前教過的heatmap,也一行就搞定了

1
prices.plot_corr_heatmap()

最後我們也可以來計算這兩檔股票的歷史數據分析:

1
2
stats = prices.calc_stats()
stats.display()

這個輕量級的package有很多簡單的語法,可以快速幫助我們進行報酬率的分析
而且所有的功能都是使用dataframe擴增,所以不用擔心要學新的結構,滿小巧可愛的!
大家可以安裝起來玩玩看喔!

文章不錯,影音課程更讚:


或我們按個 鼓勵一下吧!