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位操作系统,那么我感到抱歉,不过在本节中应该没什么问题。
必须安装的模块
- Numpy
- Matplotlib
- Pandas
- Pandas-datareader
- BeautifulSoup4
- 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。
- 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!