干货丨 用 Python 进行股票分析

这篇具有很好参考价值的文章主要介绍了干货丨 用 Python 进行股票分析。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

人们很容易被丰富的数据和各种免费开源工具所吸引。在研究了quandl financial library和prophet modeling library之后,我打算试着探究简单的股票数据。我花了几天的时间,前后写了1000多行Python代码,最终得出了一个完整的股票分析预测工具。虽然我没有自信用这个来投资某些个股,但在整个过程中我学到了很多Python的知识。秉承开源的精神,在这里我打算分享这些代码,让更多的人受益。

python股票预测,python,开发语言,学习,爬虫,学习方法

本文将展示如何使用Stocker,这是基于Python的股票分析预测工具。我看过一些对象导向的Python编程书籍,但就像大多数编程书籍一样,当我阅读这些书时,我并没有真正理解当中的内容。只有当我在深入一个项目,且遇到从未解决问题时,我才会终于理解那些概念,这也再次证明了实践比理论更重要。除了探索Stocker之外,我们还会涉及一些重要的内容,包括Python的基础知识和加性模型(additive model)。如果你想使用Stocker,可以在GitHub上找到完整的代码以及使用文档。Stocker很简单易用,即使是Python初学者也能学会,我建议每个人都试试。下面让我们一起看看Stocker的分析能力!

python股票预测,python,开发语言,学习,爬虫,学习方法

Stocker入门

在安装完需要的库之后,我们首先要将Stocker类导入到Python会话中。这里可以使用交互式Python会话或者在脚本目录中启动Jupyter Notebook。

from stocker import Stocker

现在,我们的Python会话中有了Stocker类,接着可以用它来创建类的实例。在Python中,类的实例称为对象,创建对象有时称为实例化或构造。为了创建一个Stocker对象,我们需要传递一个有效的股票代码。

microsoft = Stocker('MSFT')
MSFT Stocker Initialized. Data covers 1986-03-13 to 2018-01-16.

现在,我们有了具有Stocker类属性的microsoft 对象。Stocker建立在quandl WIKI数据库上,因此我们可以访问3000多只美国股票,并且可以查看多年的每日价格数据。这里我建议使用微软的数据。尽管微软被认为是开源的对立面,但他们最近做了一些改变,因此我认为他们正在接受开源社区(包括Python)。

Python中的类由两个主要部分组成:属性和方法。没有太多的细节,属性是与类相关的值或数据,或者是类的特定实例(对象)。方法是类中可用于数据的函数。Stocker对象的一个属性是特定公司的股票数据,当我们进行构造时,属性与该对象相关联。我们可以访问该属性,并将其分配给另一变量进行检查:

# Stock is an attribute of the microsoft object
stock_history = microsoft.stock
stock_history.head()

python股票预测,python,开发语言,学习,爬虫,学习方法

微软股票数据

Python类的好处是方法(函数)和所操作的数据与同一个对象相关联。我们可以使用Stocker对象的方法来绘制股票的历史股价。

# A method (function) requires parentheses
microsoft.plot_stock()
Maximum Adj. Close = 89.58 on 2018-01-12.
Minimum Adj. Close = 0.06 on 1986-03-24.
Current Adj. Close = 88.35.

python股票预测,python,开发语言,学习,爬虫,学习方法

默认值是调整后的收盘价格,这解释了股票拆分的原因(当一只股票被拆分成多只股票,比如2,每个新股票的价值是原始价格的1/2)。

这个图可以在谷歌搜索中轻松找到,但是这里我们可以用Python代码完成。plot_stock函数有许多可选的参数。默认情况下,这种方法会绘制整个日期范围的调整收盘价格,但我们还可以选择范围、统计数据和绘图类型。例如,如果我们想比较每日价格变化与交易量(股票数量),我们可以在函数指定那些变量。

microsoft.plot_stock(start_date = '2000-01-03',  end_date = '2018-01-16',  stats = ['Daily Change', 'Adj. Volume'],  plot_type='pct')
Maximum Daily Change = 2.08 on 2008-10-13.
Minimum Daily Change = -3.34 on 2017-12-04.
Current Daily Change = -1.75.

Maximum Adj. Volume = 591052200.00 on 2006-04-28.
Minimum Adj. Volume = 7425503.00 on 2017-11-24.
Current Adj. Volume = 35945428.00.

python股票预测,python,开发语言,学习,爬虫,学习方法

注意,y轴的百分比变化对应统计的平均值。这个规模是有必要的,因为股票的日常交易量数以亿计,而每日价格变化通常是几美元!通过转换为百分比的变化,我们可以用类似的规模查看这两个数据集。该图表显示,交易的股票数量和每日价格变化之间没有相关性,这很令人惊讶。我们通常认为,在股价变动大的时候股票交易更多。然而,真正的情况是交易量随着时间而下降。2017年12月4日,价格大幅度下降,我们可以联系相关微软新闻。12月3日的新闻如下:

python股票预测,python,开发语言,学习,爬虫,学习方法

不确定这些新闻来源是否可靠

当然,没有任何迹象表明微软股票将在第二天出现十年来最大的下跌。

使用plot_stock,我们可以查看任何日期的数据,并查找与现实事件(如果有的话)的相关性。接下来,我们看到Stocker当中很有意思的部分。

假设我们很有远见的在公司首次公开募股(IPO)中投资了100股微软股票。那如今我们肯定赚翻了!

microsoft.buy_and_hold(start_date='1986-03-13', 
                       end_date='2018-01-16', nshares=100)
MSFT Total buy and hold profit from 1986-03-13 to 2018-01-16 for 100 shares = $8829.11

python股票预测,python,开发语言,学习,爬虫,学习方法

除了让我们感觉更好,使用这些结果能让我们对之后进行规划,实现利润最大化。

microsoft.buy_and_hold(start_date='1999-01-05', 
                      end_date='2002-01-03', nshares=100)
MSFT Total buy and hold profit from 1999-01-05 to 2002-01-03 for 100 shares = $-56.92

加性模型

加性模型是分析和预测时间序列的强大工具,而且是最常见的数据类型之一。这个概念很简单:将时间序列表示为不同时间范围和整体趋势的组合。众所周知,微软股票的长期趋势是稳步增长的,但也可能会有每年、每天的增长模式,比如每个星期二增长一次。由Facebook开发的Prophet是通过日常观察,从而分析时间序列的库。Stocker用Prophet完成了所有建模的工作,因此我们可以用简单的方法创建、检查模型。

model, model_data = microsoft.create_prophet_model()

python股票预测,python,开发语言,学习,爬虫,学习方法

加性模型可以消除数据中的噪音,这就是为什么建模线与观测结果不完全一致的原因。Prophet模型能够计算不确定性,这是建模的一个重要部分。我们也可以用Prophet模式来预测未来,但现在我们更关注过去的数据。注意,这个方法调用返回了两个对象,模型和一些数据,我们将它们分配给变量。现在我们用用这些变量绘制时间序列组件。

# model and model_data are from previous method call
model.plot_components(model_data)
plt.show()

python股票预测,python,开发语言,学习,爬虫,学习方法

总体趋势是过去三年来的明显增长。此外,还有一个值得注意的年度模式(下图),股价在9月份和10月份触底,11月份和1月份达到峰值。随着时间范围的缩短,数据中变化幅度越来越大。如果我们认为可能存在周模式,那么可以更改Stocker对象的weekly_seasonality属性,并将其添加到prophet 模型中:

print(microsoft.weekly_seasonality)
microsoft.weekly_seasonality = True
print(microsoft.weekly_seasonality)
False 
True

weekly_seasonality的默认值是False,但我们改变该值,从而让模型包含周模式。然后,我们再次调用create_prophet_model并绘制结果组件。以下是新模式的每周模式。

python股票预测,python,开发语言,学习,爬虫,学习方法

我们可以忽略周末,因为价格只会在一周内发生变化。在继续建模之前,我们将关闭每周的季节性。股票的走势基本是随机的,只能从每年的大范围才能看到趋势。

变点 (Change points)

当时间序列从递增到递减或相反情况时,会出现变点(严格地说,变点位于时间序列变化率最大的地方)。这是非常重要的,因为知道什么时候股票将上涨或达到顶峰会带来显著的经济效益。识别变点能够让我们预测股票价格的未来波动。Stocker对象能够自动为我们找到10个最大的变点。

microsoft.changepoint_date_analysis()
Changepoints sorted by slope rate of change (2nd derivative):

          Date  Adj. Close     delta
48  2015-03-30   38.238066  2.580296
337 2016-05-20   48.886934  2.231580
409 2016-09-01   55.966886 -2.053965
72  2015-05-04   45.034285 -2.040387
313 2016-04-18   54.141111 -1.936257

python股票预测,python,开发语言,学习,爬虫,学习方法

变点往往与股价的高峰和低谷一致。Prophet只能在前80%的数据中找到变点,但是这些结果是有用的,因为我们可以尝试将其与真实事件相关联。我们可以重复之前的做法,比如在这些日期手动搜索相关新闻资讯,但是如果能让Stocker完成就更好了。你也许知道搜索趋势工具,该工具可让你随时查看谷歌搜索中的关键字的流行度。Stocker可以自动检索任何搜索内容,并将结果绘制在原始数据上。为了查找和绘制搜索词的频率,我们修改了之前的方法调用。

# same method but with a search term
microsoft.changepoint_date_analysis(search = 'Microsoft profit')
Top Related Queries: 

                  query  value
0  microsoft non profit    100
1      microsoft office     55
2                 apple     30
3         microsoft 365     30
4  microsoft office 365     20

 Rising Related Queries: 

                   query  value
0          microsoft 365    120
1   microsoft office 365     90
2  microsoft profit 2014     70

python股票预测,python,开发语言,学习,爬虫,学习方法

除了绘制相关的搜索频率外,Stocker还会显示图表日期范围内的热门搜索词。通过将值除以最大值将y轴的值控制在0和1之间,从而让我们比较两个不同比例的变量。从图中可以看出,搜索“微软利润”和微软股价之间没有任何联系。

即使找到了相关性,还是存在因果关系的问题。我们不知道新闻是否导致价格变化,或价格变化导致搜索。可能有会找到一些有用信息,但也可能是偶然的。你可以试试不同的词,看看能否找到相关趋势。

microsoft.changepoint_date_analysis(search = 'Microsoft Office')

python股票预测,python,开发语言,学习,爬虫,学习方法

预测

到目前为止,我们只探索了Stocker一半的作用,另一半可以用来预测未来股价。虽然这可不会带来收益,但在这个过程中能够学到很多东西。

# specify number of days in future to make a prediction
model, future = microsoft.create_prophet_model(days=180)
Predicted Price on 2018-07-15 = $97.67

python股票预测,python,开发语言,学习,爬虫,学习方法

尽管Stocker的所有功能已经公开可用,但是创建这个工具的过程很有趣。重要的是相比大学课程,这能让我学到更多的数据科学、Python和股票市场的知识。如今在大数据的时代,每个人都能学习编程、机器学习。如果你有项目创意,但不确定自己有能力去完成,不要让它阻止你。你可能会得出更好的解决方案,即使没有成功你也在过程中学到很多知识。

-END-


学好 Python 不论是就业还是做副业赚钱都不错,但要学会 Python 还是要有一个学习规划。最后给大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!

包括:Python激活码+安装包、Python web开发,Python爬虫,Python数据分析,人工智能、机器学习、自动化测试带你从零基础系统性的学好Python!

👉[CSDN大礼包:《python安装工具&全套学习资料》免费分享]安全链接,放心点击

👉Python学习大礼包👈

python股票预测,python,开发语言,学习,爬虫,学习方法

👉Python学习路线汇总👈

Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。(全套教程文末领取哈)
python股票预测,python,开发语言,学习,爬虫,学习方法

👉Python必备开发工具👈

python股票预测,python,开发语言,学习,爬虫,学习方法

温馨提示:篇幅有限,已打包文件夹,获取方式在:文末

👉Python实战案例👈

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

python股票预测,python,开发语言,学习,爬虫,学习方法

👉Python书籍和视频合集👈

观看零基础学习书籍和视频,看书籍和视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。

python股票预测,python,开发语言,学习,爬虫,学习方法

👉Python面试刷题👈

python股票预测,python,开发语言,学习,爬虫,学习方法

👉Python副业兼职路线👈

python股票预测,python,开发语言,学习,爬虫,学习方法
python股票预测,python,开发语言,学习,爬虫,学习方法
这份完整版的Python全套学习资料已经上传CSDN,朋友们如果需要可以点击链接免费领取或者保存图片到wx扫描二v码免费领取保证100%免费

👉[CSDN大礼包:《python安装工具&全套学习资料》免费分享]安全链接,放心点击
python股票预测,python,开发语言,学习,爬虫,学习方法文章来源地址https://www.toymoban.com/news/detail-728818.html

到了这里,关于干货丨 用 Python 进行股票分析的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Python爬取天气数据并进行分析与预测

    随着全球气候的不断变化,对于天气数据的获取、分析和预测显得越来越重要。本文将介绍如何使用Python编写一个简单而强大的天气数据爬虫,并结合相关库实现对历史和当前天气数据进行分析以及未来趋势预测。 1 、数据源选择 选择可靠丰富的公开API或网站作为我们所需的

    2024年02月09日
    浏览(49)
  • Python探索金融数据进行时间序列分析和预测

    大家好,时间序列分析是一种基于历史数据和趋势分析进行预测的统计技术。它在金融和经济领域非常普遍,因为它可以准确预测趋势并做出明智的决策。本文将使用Python来探索经济和金融数据,执行统计分析,并创建时间序列预测。 我们将在本教程中使用NumPy、Pandas和Mat

    2024年02月16日
    浏览(54)
  • Python基于机器学习实现的股票价格预测、股票预测源码+数据集,机器学习大作业

    选择的feature: 开盘价 最高成交价 最低成交价 成交量 选择的预测目标: 收盘价 因为股票价格的影响因素太多,通过k线数据预测未来的价格变化基本不可行,只有当天之内的数据还有一定的关联,故feature与target都选择的是当天的数据。 为了加快数据的处理速度,提前将maria

    2023年04月19日
    浏览(56)
  • Transformer预测 | Python实现基于Transformer的股票价格预测(tensorflow)

    效果一览 文章概述 Transformer预测 | Python实现基于Transformer的股票价格预测(tensorflow) 程序设计

    2024年02月07日
    浏览(39)
  • 软件杯 深度学习 大数据 股票预测系统 - python lstm

    🔥 优质竞赛项目系列,今天要分享的是 🚩 深度学习 大数据 股票预测系统 该项目较为新颖,适合作为竞赛课题方向,学长非常推荐! 🥇学长这里给一个题目综合评分(每项满分5分) 难度系数:3分 工作量:3分 创新点:4分 🧿 更多资料, 项目分享: https://gitee.com/dancheng-se

    2024年04月12日
    浏览(61)
  • 【Python数据分析】实践编写篇3:在Python中使用三阶指数平滑模型对金融数据集进行拟合与预测

    目录 一、前期准备 二、数据来源与样式  三、数据的预处理 (一)表格处理 (二)数据导入 (三)数据处理  四、模型构建(指数平滑) (一)数据作图 (二)观察季节性与趋势 (三)一阶指数平滑 (四)二阶指数平滑 (五)三阶指数平滑 (六)均方误(MSE)比较  

    2024年02月17日
    浏览(50)
  • 用Python语言进行时间序列ARIMA模型分析

    应用时间序列 时间序列分析是一种重要的数据分析方法,应用广泛。以下列举了几个时间序列分析的应用场景: 1.经济预测:时间序列分析可以用来分析经济数据,预测未来经济趋势和走向。例如,利用历史股市数据和经济指标进行时间序列分析,可以预测未来股市的走向。

    2024年02月03日
    浏览(66)
  • 【视频】Python用LSTM长短期记忆神经网络对不稳定降雨量时间序列进行预测分析|数据分享...

    在本文中,长短期记忆网络——通常称为“LSTM”——是一种特殊的RNN递归神经网络,能够学习长期依赖关系 ( 点击文末“阅读原文”获取完整 代码数据 ) 。 视频:LSTM 神经网络架构和工作原理及其在Python中的预测应用 什么是依赖关系? 假设您在观看视频时记得前一个场

    2024年02月11日
    浏览(51)
  • chatgpt赋能python:用Python做股票分析

    在当今的股市中,数据分析和预测已经变得十分重要。Python作为最流行的编程语言之一,不仅易于学习,还有非常强大的数据处理和分析能力。在本文中,我们将探讨如何用Python进行股票分析。 要进行股票分析,我们首先需要收集数据。有许多金融网站可提供免费的股票数据

    2024年02月07日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包