導入必要的模塊
首先,我們導入numpy、pandas和用於作圖的matplotlib庫:
從雅虎財經獲取特斯拉、通用和福特的每日收盤價數據
可視化數據,並對有趣的事件進行可視化檢查,並畫蠟燭圖
在同一張圖中畫出特斯拉、通用和福特股票的開盤價曲線:
每支股票的最大成交量是發生在哪一天?
從開盤價格的時間序列可視化來看,似乎特斯拉的股價一直都要比通用和福特的股價更有高。但至於為什么特斯拉的股價一直高於其他兩支股票,這個問題的答案不是單由股價決定,我們還需要考慮公司的總市值。盡管我們目前的數據並沒有關於目前股票總單位的信息。但是,我們可以做一個簡單的計算,在這里我們假設總的交易金額將是成交量列乘以開盤價格。這只是對市值的粗略估計而不是真實的市場價值,我們只是使用時間序列來直觀地表示交易的總金額。(例如,100股,每股10美元,而100000股,每股1美元)
為每個dataframe創建一個名為“總交易量”新的一列,即開盤價格與成交量的乘積。
從上圖可以看出:在2018年初,特斯拉交易了巨額資金。我們很自然的想知道那是什么日子,發生了什么事:
特斯拉股價暴漲10%,此前埃隆•馬斯克(Elon Musk)在推特上發布了一條關於特斯拉私有化的消息,令市場震驚,特斯拉股價在停牌一個多小時后飆升逾10%。馬斯克發布了一系列推文,稱可能以每股420美元的價格將公司私有化。
接下來,我們畫出一些移動平均線(MA):分別為通用股票的50日均線(MA50)和200日均線(MA200)。
為了探尋這三支股票之間的關系,我們使用pandas.plotting庫中的scatter_matrix函數來創建三支股票收盤價的散點矩陣圖。將列重新排列為新的單個股票的收盤價格。
接下來,我們來繪制福特的蠟燭圖:
通過計算和比較每日收益來進行基本財務分析,並繪制每支股票的每日收益分布圖來識別三者之間的關系。
每日百分比變化可以通過下面的公式計算所得:
從“收盤價”列計算收益。
同時,我們用一些box plot來比較三支股票的收益范圍。
比較股票的日收益:
我們繪制散點矩陣圖,以查看每個股票日收益率之間的相關性。
從上面的scatter矩陣圖,我們可以看出只有通用和特斯拉回報率關系圖和其他4對關系圖看起來不一樣(其他對關系圖為正交,即兩支股票回報率沒有明顯相關性),所以我們可以推斷特斯拉和通用確實有某種可能的關系。
累計日收益
日收益:日收益是指股票價格相對於前一日的損益。
累積回報:累積回報是相對於投資計算的。如果累計回報超過一,你就是在盈利,否則就是虧損。
累積日收益的公式為:
df[daily_cumulative_return] = ( 1+df[pct_daily_return] ).cumprod()
假設我們從2012年1月3日開始買入這三支股票並一直持有,則我們的累計日均收益為:
下面,我們來可視化一下三支股票的累計收益率,可以發現購入特斯拉后,它的價格漲了14倍!
以上就是一個簡單的python數據分析股票市場的入門項目