­

python 在Finance上的應用1- 獲取股票價格

  • 2020 年 2 月 10 日
  • 筆記

從大二開始接觸A股,有幸見證了15年瘋牛,最後落荒而逃,現在工作了又開始買入,可惜大A真是專治各種不服。。。現在的行情真是越來越難做了,所以還是想多多利用手頭上的Python來換一套投資理念。接下來的文章,是我從Google上看到的,個人翻譯給國內的好友們,希望大家喜歡。

您好,歡迎來到Python for Finance系列教程。在本系列中,我們將使用Pandas框架來介紹將金融(股票)數據導入Python的基礎知識。從這裡開始,我們將分析數據,利用機器學習(MachineLearning),甚至是深度學習(DeepLearning ),然後學會回測(Back-test)策略,從而試圖想出一些投資公司的理念。假設你知道Python的基本原理。如果您不確定,請點擊 fundamentals,查看系列中的一些內容來進行判斷。在任何時候您對某個主題或概念感到困惑,請隨時尋求幫助,我將盡我所能提供幫助。

經常被問道,「是否通過這些技術獲利投資或交易?」我主要是 play with finance data for fun and practice my data analysis skills,但實際上這也影響了我今天的投資理念。在寫這篇文章的時候,我並沒有用編程來進行算法交易,但是已經有了實際的盈利,況且在算法交易方面還有很多工作要做。最終,通過如何分析財務數據以及回測交易數據修正模型的方式已經為我省了很多錢。

這裡提出的策略並不會使你成為一個超富有的人。如果可能的話,我肯定會把它們留給自己用!然而,掌握這些卻可以為你省錢,甚至可以使你賺錢。

好吧,讓我們開始吧。首先,我正在使用Python 3.5,但你應該能夠下載安裝更高版本。假設你已經安裝了Python。並且是64位的操作系統。如果你使用的是32位操作系統,那麼我感到抱歉,不過在本節中應該沒什麼問題。

必須安裝的模塊

  1. Numpy
  2. Matplotlib
  3. Pandas
  4. Pandas-datareader
  5. BeautifulSoup4
  6. scikit-learn / sklearn

如果你想進一步了解Matplotlib模塊,請點擊 DataVisualization with Matplotlib tutorial series.

如果你想進一步了解Pandas模塊, 請點擊 the Data Analysis with Pandas tutorial series.

1. 首先,導入下述模塊:

import datetime as dtimport matplotlib.pyplot as pltfrom matplotlib import styleimport pandas as pdimport pandas_datareader.data as web

Datetime讓我們很便捷的使用日期函數,matplotlib用來繪製圖形,pandas來分析數據,pandas_datareader是寫這篇文章時最新的pandas io庫。

2. 參數設置:

style.use('ggplot')start = dt.datetime(2000,1, 1)end = dt.datetime(2016,12, 31)

通過設定style,使得圖形看起來美觀。在金融領域,即使你虧本,好看的圖表也非常重要的(作者註:賠本賺吆喝)。接下來,設置一個開始和結束的日期時間對象,這將是我們要獲取股票價格信息的日期範圍。

3. 創建dataframe:

df = web.DataReader('TSLA',"yahoo", start, end)

如果您目前不熟悉DataFrame對象,可以通過查看Pandas,,可以將其想像為電子表格或者存儲器/ RAM中的數據庫表。這是一個table,並且存在索引及列名。在本文里,索引是日期。是與所有列相關的東西。

web.DataReader('TSLA','yahoo',start,end)這行調用了pandas_datareader包,從yahoo上查找股票代碼TSLA(Tesla),以start表示的起始日期,以end 為結束日期的數據。股票是公司所有權的一部分,股票代碼是公司在證券交易所上的「符號」。大多數代號是1-4個字母。

因此現在我們有一個Pandas.DataFrame對象,它包含特斯拉的股票定價信息。讓我們看看裏面的內容:

print(df.head())
Date              Open        High      Low          Close       Volume      Adj Close2010-06-29 19.000000  25.00  17.540001 23.889999  18766300  23.8899992010-06-30 25.790001  30.42  23.299999 23.830000  17187100  23.8300002010-07-01 25.000000  25.92  20.270000 21.959999   8218800  21.9599992010-07-02 23.000000  23.10  18.709999 19.200001   5139800  19.2000012010-07-06 20.000000  20.00  15.830000 16.110001   6866900  16.110001

.head()方法是來查看PandasDataFrames對象,它會輸出前n行,其中n是你傳遞的可選參數。如果不傳遞參數,則默認值為5。

  1. 4. 數據可視化
import matplotlib.pyplot as pltfrom matplotlib import style  style.use('fivethirtyeight')  df['High'].plot()plt.legend()plt.show()

Pyplot是matplotlib基礎畫圖模塊. Style可以快速的美化圖表, style.use使我們選擇使用哪種style. 如果您想更進一步了解Matplotlib? 請點擊in-depthMatplotlib tutorial series!