如何去使用Python分析股票資料?學到就是賺到

千鋒武漢發表於2021-04-02

      對於炒股的同學來說,必須會看懂資料才能避免入坑。今天小千就來教大家如何去使用Python分析股票資料,學到就是賺到。(小千提醒,股市有風險,請謹慎投資)

      這次的美股例子就選擇了美國顯示卡製造商英偉達,其股票程式碼是NVDA,熟悉英偉達的人都知道他們的CEO老黃(Jensen Huang),老黃有兩樣東西很出名,一是那件能穿4個季度的皮衣,二是精湛的顯示卡刀法。英偉達在老黃帶領下飛速發展,其股價也是一直飆升,所以選擇這個股票也是在近幾年美股中具有代表性的。

1

      首先還是匯入各種庫。

2

      這裡有一個不太常見的庫是yfinance,這是從Yahoo網站獲取資料的一個庫,其使用非常簡單,不需要相關api,同時也是免費的,而市場上其他不少庫都要api,很多還是收費的,同時還有很多限制,所以我們選用了yfinance作為資料來源。yfinance直接用pip安裝即可,筆者用的是anaconda,但用了conda安裝會失敗,最好還是用pip安裝。接下來是獲取資料。

3

      yfinance下載的資料直接是pandas的dataframe格式,這裡我們只要輸入股票程式碼以及起止時間就可以了,後面的progress是進度條選項,最好關閉,否則下載好之後結果中會有一個進度條(影響也不大)。這裡我們下載英偉達過去5年的股票資料,從2015年1月1日到2019年12月31日。這裡有一個問題要注意,就是yfinance的資料獲取時間是提前1天的,比如設定起始時間start='2015-01-02',但最終得到的股票資料時間是從2015年1月1日開始的, 同樣截止時間end='2020-01-01'也就意味著資料的截止時間是2019年12月31日。下載之後的資料如下圖所示。

4

      然後是資料處理。

5

      上面這些步驟內容較多,在這裡詳細說明一下。從下載得到的資料中,我們選取Adj Close這一列,其全稱是adjusted close,意思是調整收盤價,這就是我們要用到的資料,將其改名為adj_close,然後用adj_close計算會計收益率(也稱簡單收益率),即simple returns,將其命名為s_r,方法是用後一天資料除以前一天資料,再減一,當然這裡用dataframe的pct_change方法也可以,得到的結果是一樣的。從前面圖2中我們可以看到得到的資料的時間是以天為單位的,但這些日期並不連續,中間有部分間斷,這是因為股票市場在週末等節假日不開盤,而這裡我們為了利用cpi來計算會計收益率,要設計一個連續時間範圍,所以這裡生成了一個名為df_dates的變數,其時間範圍是連續的,從2015年1月1日到2019年12月31日,讓其和df合併,得到的資料如下圖所示。這裡面NaN(not a number)都是節假日不開盤的日期。

6

      因為要計算實際收益率,其中使用的cpi(onsumer price index,消費者物價指數)是以月為單位的,所以我們也要把df轉換成以月為單位,為了避免在每月最後一天是非開盤日,所以首先用了fillna方法,方式是'ffill',即按照前一日資料來填充,然後用asfreq('M')方法來得出每月最後一日的資料。很多人會問,這個每月最後一日的資料有什麼用,因為我們用到的cpi資料都是按月份來公佈的,每月只有一個cpi資料,所以我們計算會計收益率時也要按照月份來算,而每月會計收益率就是用這個月的最後一個交易日的調整收盤價除以上個月的最後一個交易日的調整收盤價,然後再減一,和前面每日會計收益率的計算方法一樣。然後用月份會計收益率和cpi來計算實際收益率。而我們這次所用到的cpi資料,其時間範圍從2015年1月至2019年12月,總共5年,這個資料可以從很多網站下載,直接到網上搜尋就行了。

7

      讀取cpi資料之後透過cpi資料計算通貨膨脹率,即inflation rate,我們把這一列命名為inf_rate,方法和會計收益率一樣,接著再用通貨膨脹率計算實際收益率(Real Rate of Return),方法是(1+會計收益率)/(1+通貨膨脹率)-1,我們將其命名為r_r。最後得到的df資料如下圖所示。

8

      最後就是資料視覺化。

9

      這裡我們只要4列資料,即除了cpi之外的其他4列資料。將其置於4個子圖中,繪圖直接用dataframe的plot方法即可,在這裡我們選用了ggplot的繪圖主題。得到的結果如下圖所示。

10

      從這裡我們也可以看到用pandas分析美股資料非常方便,但是隻掌握pandas的使用方法還是不夠的,我們還要具備相關的金融基礎知識,尤其是計量經濟學的相關基礎,因此在分析股票資料時最好還要有一定的經濟學基礎。所以在我們平時的業務工作當中,除了必要的程式設計技能以外,掌握相關的理論知識也是很重要的。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31548651/viewspace-2766288/,如需轉載,請註明出處,否則將追究法律責任。

相關文章