標籤:

Python在Finance上的應用:獲取股票價格

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

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

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

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

好吧,讓我們開始吧。首先,我正在使用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 dtnimport matplotlib.pyplot as pltnfrom matplotlib import stylenimport pandas as pdnimport pandas_datareader.data as webn

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

2. 參數設置:

style.use(ggplot)nstart = dt.datetime(2000,1, 1)nend = dt.datetime(2016,12, 31)n

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

3. 創建dataframe:

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

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

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

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

print(df.head())n

Date Open High Low Close Volume Adj Closen2010-06-29 19.000000 25.00 17.540001 23.889999 18766300 23.889999n2010-06-30 25.790001 30.42 23.299999 23.830000 17187100 23.830000n2010-07-01 25.000000 25.92 20.270000 21.959999 8218800 21.959999n2010-07-02 23.000000 23.10 18.709999 19.200001 5139800 19.200001n2010-07-06 20.000000 20.00 15.830000 16.110001 6866900 16.110001n

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

  1. 4. 數據可視化

import matplotlib.pyplot as pltnfrom matplotlib import stylennstyle.use(fivethirtyeight)nndf[High].plot()nplt.legend()nplt.show()n

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


推薦閱讀:

TAG:Python | stock |