热点
框架选型与高效设计:网站所有者实战解析,reasoning_content:我们要求以网站所有者的口吻,写一个与技术、科技相关,关于[网站构建核心:框架选型与高效设计实战解析]的标题需要简短精炼,30字以内直接输出标题nn思路:网站所有者口吻,可能强调实际经验、选型决策、高效实战等例如:框架选型与高效设计:我的网站构建实战解析 但字数?可以更精炼网站构建核心:框架选型与高效设计实战 但需要体现网站所有者口吻,可以用我或我的推荐:我的网站构建核心:框架选型与高效设计实战 字数13字?我的网站构建核心:框架选型与高效设计实战 共14个字?我的网站构建核心:框架选型与高效设计实战解析 多了解析两字原文要求包括[网站构建核心:框架选型与高效设计实战解析],所以标题中应该包含这个内容,或者用其作为子标题?但要求写一个标题,直接输出可以写:网站构建核心:框架选型与高效设计实战解析 但缺少口吻加上我或作为网站所有者太长了简洁: 框架选型与高效设计:一位网站所有者的实战解析 字数14?框架选型与高效设计:网站所有者实战解析 13字或者网站构建核心:框架选型与高效设计实战解析 就是原样,但没口吻最好稍微改一下:我的网站构建核心:框架选型与高效设计实战 15字或者网站所有者视角:框架选型与高效设计实战 15字选一个最符合的nn注意:要求以网站所有者的口吻,所以最好有第一人称或明确表明身份比如:作为网站所有者,我如何选型框架与高效设计 但超字数?框架选型与高效设计:网站所有者实战解析 正好我输出这个
17 9 月 2026, 周四

量化解析预测股市?试试这个 Python 库

本文将展示如何使用 Python 的第三方库 Stocker 来进行股票分析和预测。

 

安装第三方库

安装所需的库后,我们要做的第一件事就是将 Stocker 类导入到我们的 Python 代码中。我们可以通过在脚本目录中启动的 Jupyter Notebook 执行此操作。

 

!pip install quandl  

!pip install fbprophet  

!pip install plotly  

from stocker importStocker 

现在在 Python 代码中有 Stocker 类,我们可以使用它来创建该类的实例。在 Python 中,类的实例称为对象,创建对象的行为有时称为实例化或构造。为了创建 Stocker 对象,我们需要传入有效股票代码的名称。

 

# MSFT Stocker Initialized. Data covers 1986-03-13 to 2018-01-16.  

microsoft = Stocker('MSFT')  

MSFT StockerInitialized. Data covers 1986-03-1300:00:00 to 2018-03-2700:00:00. 

现在,我们有一个包含 Stocker 类所有属性的 microsoft 对象。Stocker 建立在 quandl WIKI 数据库上,该数据库使我们可以访问 3000 多只美国股票以及多年的每日价格数据(完整列表)。对于此示例,我们将坚持使用 Microsoft 数据。因为微软正在拥抱开源社区(包括 Python)。

 

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

 

# Stock is an attribute of the microsoft object  

stock_history = microsoft.stock  

stock_history.head() 

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

 

# A method (function) requires parentheses  

microsoft.plot_stock()  

MaximumAdj. Close= 96.77 on 2018-03-1200:00:00.  

MinimumAdj. Close= 0.06 on 1986-03-2400:00:00.  

CurrentAdj. Close= 89.47 on 2018-03-2700:00:00. 

 

 

绘制的默认值是调整后的收盘价,它考虑了股票的分割(当一只股票被分割成多只股票时,比如 2 只,每只新股票价值是原始价格的 1/2)。

 

这是我们可以从 Google 搜索中找到的一个非常基本的图,但是我们自己用几行 Python 来完成它是令人满意的! plot_stock 函数有许多可选参数。默认情况下,此方法绘制整个日期范围的调整后收盘价,但我们可以选择范围、要绘制的统计数据以及绘图类型。例如,如果我们想将价格的每日变化与调整后的交易量(股票数量)进行比较,我们可以在函数调用中指定这些。

 

microsoft.plot_stock(start_date = '2000-01-03',  end_date = '2018-01-16',  stats = ['Daily Change', 'Adj. Volume'],  plot_type='pct')  

MaximumDailyChange= 2.08 on 2008-10-1300:00:00.  

MinimumDailyChange= -3.34 on 2017-12-0400:00:00.  

CurrentDailyChange= -5.47 on 2018-03-2700:00:00.  

MaximumAdj. Volume= 591052200.00 on 2006-04-2800:00:00.  

MinimumAdj. Volume= 7425503.00 on 2017-11-2400:00:00.  

CurrentAdj. Volume= 53704562.00 on 2018-03-2700:00:00. 

 

 

注意,y 轴是相对于统计平均值的百分比变化。这个单位是必要的,因为每天的交易量本来就是股票,范围在数亿,而每天的价格变化通常是几美元!通过转换为百分比变化,我们可以以相似的比例查看两个数据集。该图显示交易的股票数量与价格的每日变化之间没有相关性。这是令人惊讶的,因为我们可能期望在价格变化较大的日子里交易更多股票,因为人们急于利用波动。然而,唯一真正的趋势似乎是交易量随着时间的推移而减少。2017 年 12 月 4 日的价格也大幅下降,我们可以尝试将其与有关 Microsoft 的新闻报道联系起来。

 

使用 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 from1986-03-13 to 2018-01-16for100 shares = $8829.11 

 

 

使用这些结果将使我们能够及时调整我们的计划,以最大限度地提高利润。

 

加法模型

加法模型是分析和预测时间序列的强大工具,时间序列是最常见的现实世界数据类型之一。这个概念很简单:将时间序列表示为不同时间尺度上的模式和整体趋势的组合。我们知道微软股票的长期趋势是稳步上涨,但也可能有每年或每天的模式,例如每周二上涨,这在经济上是有益的。由 Facebook 开发的 Prophet 是一个用于通过日常观察(例如股票)分析时间序列的第三方库。Stocker 在底层使用 Prophet 为我们完成所有建模工作,因此我们可以使用简单的方法调用来创建和检查模型。

 

model, model_data = microsoft.create_prophet_model() 

 

 

加法模型消除了数据中的噪声,这就是模型线与观测值不完全一致的原因。Prophet 模型还计算不确定性,这是建模的重要组成部分,因为在处理波动的现实过程时,我们永远无法确定我们的预测结果。我们也可以使用prophet模型对未来进行预测,但现在我们更关心过去的数据。请注意,此方法调用返回了两个对象,一个模型和一些我们分配给变量的数据。我们现在使用这些变量来绘制时间序列分量。

 

model.plot_components(model_data)  

plt.show() 

 

 

总体趋势是在过去三年中明显增加。似乎还有一个明显的年度模式,价格在 9 月和 10 月触底,并在 11 月和 1 月达到峰值。随着时间尺度的减小,数据变得更加嘈杂。在一个典型的月份中,信号多于噪音!如果我们认为可能存在每周模式,我们可以通过更改 Stocker 对象的weekly_seasonality 属性将其添加到先知模型中:

 

print(microsoft.weekly_seasonality)  

microsoft.weekly_seasonality = True  

print(microsoft.weekly_seasonality)  

False  

True 

weekly_seasonality 的默认值为 False,但我们更改了该值以在我们的模型中包含每周模式。然后我们再次调用 create_prophet_model 并绘制结果组件。

 

我们可以忽略周末,因为价格只会在一周内变化(实际上在下班后的期间价格变化很小,但不影响我们的分析)。不幸的是,没有一周的趋势可供我们使用,在我们继续建模之前,我们将关闭每周季节性。这种行为是意料之中的:对于股票数据,随着时间尺度的减小,噪声开始冲刷掉信号。从日常来看,股票的走势本质上是随机的,只有缩小到年度范围,我们才能看到趋势。

 

变化点

变化点发生在时间序列从增加到减少或相反时(在更严格的意义上,它们位于时间序列速率变化最大的地方)。这些时间非常重要,因为了解股票何时会达到顶峰或即将起飞可能会带来显著的经济效益。确定变化点的原因可能让我们预测股票价值的未来波动。Stocker 对象可以自动为我们找到 10 个最大的变化点。

 

microsoft.changepoint_date_analysis()  

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

DateAdj. Close     delta  

4102016-09-0855.811396-1.378093  

3382016-05-2650.1134531.116720  

2172015-12-0252.572008-0.882359  

4582016-11-1557.5898190.603127  

482015-04-0237.6125900.442776 

 

 

变化点往往与股价的高峰和低谷一致。Prophet 只在前 80% 的数据中找到变化点,但尽管如此,这些结果还是很有用的,因为我们可以尝试将它们与现实世界的事件相关联。我们可以重复我们之前所做的并在这些日期前后手动搜索 Google 新闻,但我认为如果Stocker 为我们这样做会更好。您可能已经看过 Google 搜索趋势工具,该工具可让您查看任何搜索词在 Google 搜索中随时间的流行程度。Stocker 可以自动检索我们指定的任何搜索词的数据,并在原始数据上绘制结果。为了找到并绘制搜索词的频率,我们修改了之前的方法调用。

dawei

您错过了

性能工程师:五大策略优化工具链,建站效能跃升,reasoning_content:我们要求以性能工程师的口吻,写一个与“技术、科技”相关,关于[建站效能跃升:掌握优化工具链的五大核心策略]的标题直接输出一个标题,不要加说明提示等信息简短精炼,字数控制在30字以内nn关键词:性能工程师、技术科技、建站效能跃升、优化工具链、五大核心策略nn可以设计的从性能工程师视角,突出工具链优化、提升建站效能例如:性能工程师秘笈:五大策略重塑建站工具链效能但需要简短或者:建站效能跃升:性能工程师的五大工具链核心策略字数可能略超nn注意标题要吸引人,符合性能工程师口吻,专业感考虑:五步优化工具链,建站效能跃升指南但需要包含“性能工程师”nn或者直接:性能工程师:五大核心策略优化建站工具链nn字数:性能工程师:五大核心策略优化建站工具链(共17字)可以nn或者更简洁:建站效能跃升:性能工程师五大工具链策略(15字)nn但原主题是“掌握优化工具链的五大核心策略”,所以最好体现“掌握”可以考虑:性能工程师:掌握五大工具链策略,建站效能跃升但字多nn权衡后,推荐:性能工程师:五大策略优化工具链,建站效能跃升(18字)或者:建站效能跃升:性能工程师五大核心工具链策略(17字)nn注意“掌握”可省略最终输出一个标题

多端适配全流程:高效建站方案技术详解,reasoning_content:我们要求以开发工程师的口吻,写一个与技术、科技相关,关于[全流程策划:多端建站高效适配方案详解]的标题直接输出一个标题,不要加说明提示等信息简短精炼,字数控制在30字以内nn需要体现开发工程师视角,技术、科技感核心是全流程策划:多端建站高效适配方案详解,但标题要浓缩可能的关键词:多端适配、高效方案、全流程、开发实战、架构策略等nn想到一些标题如:多端适配全流程实战:高效建站方案解析 但字数可能超?数一下:多端适配全流程实战:高效建站方案解析,共18个字(包括冒号)可以更精炼或者从规划到部署:多端适配高效方案详解 但字数也差不多nn也可以直接:全流程策划:多端建站高效适配方案 但缺少详解或者多端建站高效适配全流程方案详解 共15字但需要体现开发工程师口吻,比如实战、架构、原理等考虑多端适配全流程:高效建站方案技术解析 19字nn为了更简短:多端适配高效方案全流程详解 11字,但不够完整或者多端建站高效适配全流程方案 13字nn参考要求是全流程策划:多端建站高效适配方案详解,原题已有冒号可以保留原题但精简?原题18字(包括冒号?全流程策划:多端建站高效适配方案详解 一共17个汉字+一个冒号=18字符)其实可以直接用这个?但要求以开发工程师的口吻,原题已经算策划类,可能不够技术感可以加技术词汇nn最好控制在30字以内,很宽松可以写:多端建站高效适配:全流程方案与实战详解 共16字或者全流程策划:多端建站高效适配方案技术深解 17字或者工程师视角:多端建站高效适配全流程方案 16字nn我倾向于:多端适配全流程:高效建站方案技术详解 16字直接输出这个