股票價格數據分析

專欄相關文章:

數據分析項目--如何選擇你的航班

數據科學--numpy的基本使用

數據科學--Pandas基本使用

簡單的時間序列數據採樣和模擬股票折線圖

Pandas之數據分箱/分組/聚合/透視表

數據可視化--Matplotlib

數據可視化--Seaborn

No. 1 數據來源

No. 2 股票市場分析之數據獲取

No. 3 股票市場分析之歷史趨勢分析

No. 4 股票市場分析之風險分析

No. 1 數據來源

對於數據獲取基本上分為2種,第一種就是我們主動去獲取,可以通過很多方式去網上獲取我們需要的數據。第二種是別人提供給我們一些介面,通過這些介面可以獲取他提供給我們的數據,這是兩種方式。

對於第一種比較常見的方法就是爬蟲,python又是寫爬蟲的利器!所以學好python很有用。

對於第二種比較常見的就是一些API,比如我們的微博或者國外的像twitter都會提供有API供我們使用來獲取他們提供給我們的數據,當然也可以做一些簡單的過濾。

這個項目比較權威的就是Yahoo做的API,通過這個API幾乎可以獲取所有公司的歷史股票信息,當然Google也有提供這些類似的API。

除了API之外也有很多網站本身就提供了很多public的data,那接下來看一下知乎上的這個問答。

數據分析和挖掘有哪些公開的數據來源?

@肖智博 的回答裡面,有哪些網站可以獲取數據,這裡面有一個補充,有一個英文版的問答。

Where can I find large datasets open to the public?

這裡面其實有更多一些國外的做數據分析可能會用到的數據來源的網站,這個還是比較好的。

這裡面有大量網站提供public data。這裡著重要說一下這個網站。

Datasets | Kaggle

這個是數據分析或者機器學習都會光顧的一個網站,這個網站提供了很多很多的數據,包括一些教程,就是誰拿了什麼數據做了什麼分析怎麼做的都有的。

他有很多別人寫的數據分析。

還有其實Google也有提供這樣的數據,直接在Google搜索Google public data,第一個就是

這裡面也有數據源,其實亞馬遜也有類似的服務。

這個裡面也有一些數據可以供我們使用。

No. 2 股票市場分析之數據獲取

既然是股票數據,那麼就先獲取數據,這裡選擇從Yahoo的API來獲取數據。

Yahoo Finance - Business Finance, Stock Market, Quotes, News

這個finance網站比較權威,大部分金融領域的數據分析都會用到這個網站。

我們現在網站裡面搜索阿里巴巴的信息。

我們看看大圖。

從阿里14年上市以來股票總體是攀升的,到現在為止已經漲了要有一倍了,那麼Yahoo這個finance提供了一些API的介面,我們可以通過一些工具很容易的抓取股票信息,我們要用的這個工具叫pandas-datareader這個工具。

pandas-datareader - pandas-datareader 0.1 documentation

這個需要我們安裝一下,安裝也很簡單。

conda install pandas_datareadern

現在我們進入notebook來操作一下。

使用起來是很方便的,那我們就看一下數據,這是阿里巴巴上市以來的股票數據,他會自動生成一個DataFrame,看看列名都是什麼。

Open:開市價格nHigh:最高價格nLow:最低價格nClose:關市價格nAdj Close:關市價格nVolume:當天交易量(就是交易了多少股)n

看看阿里巴巴從上市到現在一共有多少條記錄。

從上市到昨天一共有800條數據。這是關於數據的一些基本情況。

我們通過describe和info看看基本的統計信息。

既然數據獲取以及基本情況都知道了,那麼下面就開始進行歷史趨勢分析。

No. 3 股票市場分析之歷史趨勢分析

這裡讀進阿里巴巴和amazon的股票數據。

來看看這兩份數據。

OK,數據已經進來了。選擇的時間是以阿里巴巴上市時間為起點的。

針對阿里看看這三年股票走勢,這裡傳入閉市價格。

可以看出這個價格是非常的迅猛的,到昨天阿里股價幾乎要到$200了,這個是股價走勢,那麼表格中還有一個Volume,就是交易量的走勢,做圖來看看。

這張圖其實有異常值,不過這個異常值也在意料之中,上市那天交易量非常的驚人。

這個就是阿里巴巴上市開始每天的交易量的一個情況,那麼除了剛上市,其他時間交易量還是比較平穩的一個狀態。偶爾會出現一些高峰。

那麼還有amazon的數據,可以把兩者數據放到一起對比看看。

看這張圖,其實amazon從阿里上市到現在股價也翻了一番,兩家公司股票都在漲。

下面我們再看一下關於變化的圖。這個變化關於每天最高價和最低價的價差。

那麼其實只要在表格中追加一列就可以了。

這對這張表也可以畫一張圖。

這個其實和股票價格了歷史趨勢那張圖基本上是比較吻合的,因為進入2017之後,阿里股票一直在猛增,所以價差比較大,圖中2017的那部分波動也很大,畢竟人家都翻一倍了。

那麼這是看的每天的最高最低價差的變化,下面再從另外一個角度來看,什麼角度呢?就是每一天之間的變化。剛剛是每一天之內最高最低價差,現在是每一天之間交易的閉市的價格價差,就是天與天之間的變化,這個有個名詞叫做daily return

這個在pandas裡面可以通過一個函數去實現。

那麼這個方法會返回一個array,這個就是每天關閉價格的變化數據,首先把這個數據加到原來的數據中。

然後我們就可以畫出來一張關於daily return的變化圖。

這個看股票的漲跌也是很明顯的。

除了這樣的圖來看每一天的變化,其實還有一種圖就是直方圖,可以看它變化的具體分布是什麼,比如說他變化是不是比較穩定,比如每天變化漲跌在百分之0.2還是0.5,當然這個是比較大的變化了。那麼我們想看一下分布,那就需要直方圖去看。這裡可以通過seaborn來畫。

這張圖說明阿里股票變化算是比較穩定的。

No. 4 股票市場分析之風險分析

為了做風險分析呢,這次把數據源改一下,改成美國科技公司排名前5名的公司,時間從2014年到今天,這段時間裡面關於股票市場的一個情況,這5家公司分別是Apple、Google、Microsoft、Facebook、Amazon

為了風險分析,需要一個很重要的參數,就是上面說到的daily return。

首先來了解一下這五家公司過去這幾年股票的走勢。

這張圖說明這5家公司這些年股價總體是上漲的,大概分兩個梯隊,一個是紫色和綠色就是Google和Amazon,還有剩下的是Apple、Microsoft、facebook是第二梯隊。

這個圖上還有一個現象,大體上只要Google股價上漲Amazon就會上漲,基本上比較吻合。

再把第二梯隊單獨拿出來。

這張圖呢,Apple和Facebook也有一點點吻合的感覺,微軟就比較平穩了,沒有明顯的漲也沒有明顯的跌,一路平穩。

平時買股票的人肯定看日均線,那這裡就以Google為例子,做這個圖。

首先讀數據進來。

繪製平均線。這個平均線意思需要解釋一下:均線準確說是以每日成交均價(而不是收盤價)為基準,在一定時間內進行統計平均得出的移動平均線,如5日均線就是先把1-5日的每天成交均價加和再除以5,得到第五天的數,第6天再把第2-6天的每天成交均價加和再除以5,得到第六天的數,依此類推畫出的線就可以得到5日移動平均線,也叫5日均線。其它10日均線等道理一樣。

這個10日均線,30日均線這些都是可以更改的,比如。

剛剛說到Google和Amazon比較吻合,那這裡可以有另外一種展示形式,通過散點圖來看。

這張圖也說明google和Amazon股價走勢很吻合,散點圖上面整體中心在原點,一條45度直線貫穿,而且圖形很緊密,還是比較吻合的,也就是說明Amazon和Google的股票具有相關性,這個也可以作為購買股票的一個參考,那其實除了看這兩個公司對比,其實還可以把所有的公司放到一起對比。下面就畫一個矩陣形式的散點圖。

還可以把這個圖再換一種。

下面主要說風險這一部分了,比如推測股票虧損。首先看看平均值和標準差

以平均值標準差為坐標軸畫圖。

衡量股票波動程度的工具就是標準差(Standard Deviation)。標準差是指股票可能的變動程度。標準差越大,股票未來可能變動的程度就越大,穩定度就越小,風險就越高

標準差應用於投資上,可作為量度回報穩定性的指標。標準差數值越大,代表回報遠離過去平均數值,回報較不穩定故風險越高。相反,標準差數值越小,代表回報較為穩定,風險亦較小。

由上面我們可以看出AMZN亞馬遜的預計收益要高於其他三家公司,但是風險值也要高於其他三家公司。

pandas還有quantile方法,用來計算風險。

這個什麼意思呢,就拿google來說,這個結果意思是在95%(1-0.05)的置信區間內損失不超過1.95%,在通俗點就是我有95%的把握我的損失不超過1.95%

再來看一個反面教材,唯品會。

有95%的把握損失不會超過4.84%,這個和前面幾個公司相比就差多了,而且股票走勢也不穩定,近兩年一直在跌。

---------------------------------------------------------------------------------

關於股票數據分析就到這裡了,謝謝


推薦閱讀:

名校不是門檻,吳恩達:培養一百萬個AI人才 | 數據周報
快訊 |2017年8月R新包推薦
閃電約會數據

TAG:数据分析 | 股票 | Python |