10行代码带你抓取股票信息帮你分析预测,Python就这么强大!

  • A+
所属分类:python网络爬虫

10行代码带你抓取股票信息帮你分析预测,Python就这么强大!

Python的支持者较喜欢称它为一种高级动态编程语言,原因是“脚本语言”泛指仅作简单编程任务的语言,如shell script、JavaScript等只能处理简单任务的编程语言,并不能与Python相提并论。 此外,由于Python对于C和其他语言的良好支持,很多人还把Python作为一种“胶水语言”。对数据科学家来说,怎么预测证券市场走势是一项非常有诱惑力的工作,当然,他们这样做的目的很大程度上并不是为了获取物质回报,而是为了挑战自己。证券市场起起伏伏、变幻莫测,试想一下,如果在这个市场里存在一些我们或者我们的模型可以学习到的既定模式,让我们可以打败那些商科毕业的操盘手,将是多么美妙。当然,当我一开始使用加性模型(additive model)来做时间序列预测时,我不得不先用模拟盘来验证我的模型在股票市场上的表现。

一众挑战者们都希望在每日收益率上能够跑赢市场,但是大多数都失败了,我也未能幸免。不过,在这个过程中也学到了大量Python相关知识,包括面向对象编程、数据处理、建模、以及可视化等等。同时,我也认清了一个道理,不要在每日收益率上锱铢必较,学会容忍适当的短期亏损,放长线才能钓大鱼。

10行代码带你抓取股票信息帮你分析预测,Python就这么强大!

10行代码带你抓取股票信息帮你分析预测,Python就这么强大!

一天与三十年对比结果:你宁愿把钱投在哪里?

在任何任务中(不只是数据科学),当我们没有取得立竿见影的成效时,我们都有三个选择:

1. 调整结果,让我们看起来像是成功了

2. 隐藏结果,所以没有人会注意到

3. 公开我们所有的结果和方法,以便其他人(以及我们自己)可以从中吸取经验和教训

显然,不管站在个人还是社会层面,方案三都是最佳选择,但它同时也是最需要勇气去实践的。我可以选择性地公布结果,比如当我的模型能够带来丰厚的利润回报时,我也可以掩盖失败的事实,假装自己从来没有在这项工作上花过时间。这似乎是很天真的想法!我们之所以能够进步是因为不断重复失败——学习这个过程,而不仅仅是之前的成功。而且,为有难度的任务编写Python代码而付出的努力也并不应该白费!

这篇文章记录了我使用Python开发的“stock explorer”工具——Stocker的预测功能。此前,我曾展示了如何使用Stocker进行分析,并且将完整的代码贴在GitHub上,以方便大家。

10行代码带你抓取股票信息帮你分析预测,Python就这么强大!

Github代码地址:

https://github.com/WillKoehrsen/Data-Analysis/tree/master/stocker

▌实现预测的Stocker工具

Stocker是一款用于探索股票情况的Python工具。一旦我们安装了所需的库(查看文档),我们可以在脚本的同一文件夹中启动一个Jupyter Notebook,并导入Stocker类:

10行代码带你抓取股票信息帮你分析预测,Python就这么强大!

现在可以访问这个类了。我们通过传递任一有效的股票代码(粗体是输出)来创建一个Stocker类的对象:

10行代码带你抓取股票信息帮你分析预测,Python就这么强大!

根据上面的输出结果,我们有20年的亚马逊每日股票数据可以用来探索! Stocker对象是建立在Quandl金融库上,而且拥有3000多只股票可以使用。我们可以使用plot_stock函数来绘制一个简单的历史股价图:

10行代码带你抓取股票信息帮你分析预测,Python就这么强大!

10行代码带你抓取股票信息帮你分析预测,Python就这么强大!

Stocker的分析功能可以用来发现数据中的整体趋势和模式,但我们将重点关注预测股票未来的价格上。Stocker中的预测功能是使用一个加性模型来实现的,该模型将时间序列视为季节性(如每日、每周和每月)的整体趋势组合。Stocker使用Facebook开发的智能软件包进行加性建模,用一行代码就可以创建模型并进行预测:

10行代码带你抓取股票信息帮你分析预测,Python就这么强大!

10行代码带你抓取股票信息帮你分析预测,Python就这么强大!

注意,表示预测结果的绿线包含了相对应的置信区间,这代表在模型预测的不确定性。在这种情况下,如果将置信区间宽度设置为80%,这意味着我们预计这个范围将包含实际值的可能性为80%。置信区间将随着时间进一步扩大,这是因为随着预测时间距离现有数据的时间越来越远,预测值将面临更多的不确定性。任何时候我们做这样的预测,都必须包含一个置信区间。尽管大多数人倾向于一个确定的值,但我们的预测结果必须反映出我们生活在一个充满不确定性的世界!

10行代码带你抓取股票信息帮你分析预测,Python就这么强大!

任何人都可以做股票预测:简单地选择一个数字,而这就是你的估测(我可能是错的,但我敢肯定,这是华尔街所有人都会做的)。为了让我们的模型具有可信度,我们需要评估它的准确性。Stocker工具中有许多用于评估模型准确度的方法。

▌评估预测结果

为了计算准确率,我们需要一个测试集和一个训练集。我们需要知道测试集的答案,也就是实际的股价,所以我们将使用过去一年的历史数据(本例中为2017年)。训练时,我们不选用2014-2016的数据来作为训练集。监督学习的基本思想是模型从训练集中学习到数据中的模式和关系,然后能够在测试数据上正确地重现结果。

我们需要量化我们的准确率,所以我们使用了测试集的预测结果和实际值,我们计算的指标包括测试集和训练集的美元平均误差、正确预测价格变化趋势的时间百分比、以及实际价格落在预测结果80%置信区间内的时间百分比。所有这些计算都由Stocker自动完成,而且可视化效果很好:

10行代码带你抓取股票信息帮你分析预测,Python就这么强大!

10行代码带你抓取股票信息帮你分析预测,Python就这么强大!

可以看到,预测结果真是糟糕透了,还不如直接抛硬币。如果我们根据这个预测结果来投资,那么我们最好是买买彩票,这样比较明智。但是,不要放弃这个模型,第一个模型通常比较糟糕,因为我们使用的是默认参数(称为超参数)。如果我们最初的尝试不成功,那么我们可以调整这些参数来获得一个更好的模型。在Prophet模型中有许多不同的参数设置需要调整,最重要的是变点先验尺度(changepoint prior scale),它控制着模型在数据趋势上的偏移量。下面给大家带点福利了!推荐python小白入门的一些书籍:

第一本

个人认为《Python学习手册:第3版》是学习语言基础比较好的书了.

《Python学习手册(第3版)》讲述了:Python可移植、功能强大、易于使用,是编写独立应用程序和脚本应用程序的理想选择。无论你是刚接触编程或者刚接触Python,通过学习《Python学习手册(第3版)》,你可以迅速高效地精通核心Python语言基础。读完《Python学习手册(第3版)》,你会对这门语言有足够的了解,从而可以在你所从事的任何应用领域中使用它。

10行代码带你抓取股票信息帮你分析预测,Python就这么强大!

《Python学习手册(第3版)》是作者根据过去10年用于教学而广为人知的培训课程的材料编写而成的。除了有许多详实说明和每章小结之外,每章还包括一个头脑风暴:这是《Python学习手册(第3版)》独特的一部分,配合以实用的练习题和复习题,让读者练习新学的技巧并测试自己的理解程度。

《Python学习手册(第3版)》包括:

类型和操作——深入讨论Python主要的内置对象类型:数字、列表和字典等。

语句和语法——在Python中输入代码来建立并处理对象,以及Python一般的语法模型。

函数——Python基本的面向过程工具,用于组织代码和重用。

模块——封装语句、函数以及其他工具,从而可以组织成较大的组件。

类和OOP——Python可选的面向对象编程工具,可用于组织程序代码从而实现定制和重用。

异常和工具——异常处理模型和语句,并介绍编写更大程序的开发工具。

讨论Python 3.0。

10行代码带你抓取股票信息帮你分析预测,Python就这么强大!

《Python学习手册(第3版)》让你对Python语言有深入而完整的了解,从而帮助你理解今后遇到的任何Python应用程序实例。如果你准备探索Google和YouTube为什么选中了Python,《Python学习手册(第3版)》就是你入门的最佳指南。

第二本

《“笨办法”学Python(第3版)》是一本Python入门书籍,适合对计算机了解不多,没有学过编程,但对编程感兴趣的初学者使用。这本书结构非常简单,其中覆盖了输入/输出、变量和函数三个主题,以及一些比较高级的话题,如条件判断、循环、类和对象、代码测试及项目的实现等。每一章的格式基本相同,以代码习题开始,按照说明编写代码,运行并检查结果,然后再做附加练习。这本书以习题的方式引导读者一步一步学习编程,从简单的打印一直讲授到完整项目的实现,让初学者从基础的编程技术入手,最终体验到软件开发的基本过程。

【大牛评价】hardway(笨办法)比较适合起步编程,作为Python的入门挺不错。

10行代码带你抓取股票信息帮你分析预测,Python就这么强大!

第三本

在这里给大家推荐最后一本《集体智慧编程》

本书以机器学习与计算统计为主题背景,专门讲述如何挖掘和分析Web上的数据和资源,如何分析用户体验、市场营销、个人品味等诸多信息,并得出有用的结论,通过复杂的算法来从Web网站获取、收集并分析用户的数据和反馈信息,以便创造新的用户价值和商业价值。

全书内容翔实,包括协作过滤技术(实现关联产品推荐功能)、集群数据分析(在大规模数据集中发掘相似的数据子集)、搜索引擎核心技术(爬虫、索引、查询引擎、PageRank算法等)、搜索海量信息并进行分析统计得出结论的优化算法、贝叶斯过滤技术(垃圾邮件过滤、文本过滤)、用决策树技术实现预测和决策建模功能、社交网络的信息匹配技术、机器学习和人工智能应用等。

本书是Web开发者、架构师、应用工程师等的绝佳选择。

“太棒了!对于初学这些算法的开发者而言,我想不出有比这本书更好的选择了,而对于像我这样学过Al的老朽而言,我也想不出还有什么更好的办法能够让自己重温这些知识的细节。”

——Dan Russell,资深技术经理,Google

“Toby的这本书非常成功地将机器学习算法这一复杂的议题拆分成了一个个既实用又易懂的例子,我们可以直接利用这些例子来分析当前网络上的社会化交互作用。假如我早两年读过这本书,就会省去许多宝贵的时间,也不至于走那么多的弯路了。”

——Tim Wolters,CTO,Collective Intellect

第四本

《Python基础教程(第2版·修订版)》也是经典的Python入门教程,层次鲜明,结构严谨,内容翔实,特别是最后几章,作者将前面讲述的内容应用到10个引人入胜的项目中,并以模板的形式介绍了项目的开发过程,手把手教授Python开发,让读者从项目中领略Python的真正魅力。这本书既适合初学者夯实基础,又能帮助Python程序员提升技能,即使是Python方面的技术专家,也能从书里找到耳目一新的内容。

好了,今天的知识就分享到这里,想学习python的欢迎关注爱编程的南风,私信关键词:学习资料,获取更多学习资源,如果文章对你有有帮助,请收藏关注转发,在今后与你分享更多学习python的文章。同时欢迎在下面评论区留言如何学习python。

weinxin
我的微信公众号
爱真理,得永生!          爱在灵灵久博客,网罗天下,福利大家!

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: