技术 | 如何用Python分析股票-附源代码!

之前,我们分享过许多python在金融领域的实战项目,例如数据分析和机器学习模型,但是许多小伙伴向我们反应能不能出一期对新手友好的python数据分析的入门的项目。今天我们就分享一个基本的股市分析项目,旨在了解金融市场中Python编程的一些基本知识,让你5分钟上手股票可视化分析!下面跟着我的步骤开始吧:

第零部分:导入必要的模块

首先,我们导入numpy、pandas和用于作图的matplotlib库:

第一部分:从雅虎财经获取特斯拉、通用和福特的每日收盘价数据。

第二部分:可视化数据,并对有趣的事件进行可视化检查。在本节中,我们还将从头开始教你怎样画蜡烛图(candle chart)。

在同一张图中画出特斯拉、通用和福特股票的开盘价曲线:

每支股票的最大成交量是发生在哪一天?

从开盘价格的时间序列可视化来看,似乎特斯拉的股价一直都要比通用和福特的股价更有高。但至于为什么特斯拉的股价一直高于其他两支股票,这个问题的答案不是单由股价决定,我们还需要考虑公司的总市值。 尽管我们目前的数据并没有关于目前股票总单位的信息。但是,我们可以做一个简单的计算,在这里我们假设总的交易金额将是成交量列乘以开盘价格。这只是对市值的粗略估计而不是真实的市场价值,我们只是使用时间序列来直观地表示交易的总金额。(例如,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数据分析股票市场的入门项目,有没有很快上手呢?


 

近期热招:(点击标题,即可了解详情)

1.招聘 | DevOps Engineer- 40-60万+奖金-北京-AI量化投资公司

2.招聘 | Risk Analyst- 薪资高于BAT-对冲基金

3.招聘 | Data Engineer-AI量化投资公司- 薪资高于 BAT-北京

4.招聘 | 基金经理(A股定向增发) -上海-对冲基金

5.招聘 | 机器学习(博士)-上海-知名期权做市商