热点
性能工程师:五大策略优化工具链,建站效能跃升,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字直接输出这个
容器化与智能编排:系统无碍新范式,reasoning_content:我们要求以全栈工程师的口吻,写一个与“技术、科技”相关,关于“容器化部署与智能编排:构建系统无碍新范式”的标题直接输出一个标题,不要加说明,简短精炼,30字以内nn全栈工程师口吻:可能偏向于实战、工程化、技术深度,也可以有“我”、“我们”视角,但标题通常不需要人称也可以结合“容器化”、“智能编排”、“无碍”(无障碍?或无缝?可能是“无碍”意为无障碍、无故障?)原题“构建系统无碍新范式”可能意思是构建系统无故障/无缝的新范式所以标题要体现容器化部署+智能编排,并突出新范式nn构思:例如“容器化+智能编排:系统无碍新范式” 但字数较多或者“容器化部署与智能编排:构建无碍系统新范式” 但超过30字?数一下:容器化部署与智能编排:构建无碍系统新范式 – 共18字?中文字符:容器化部署与智能编排:构建无碍系统新范式 -> 容器化部署(4) 与(1) 智能编排(4) :(1) 构建(2) 无碍(2) 系统(2) 新范式(3) 总共4+1+4+1+2+2+2+3=19字,在30以内但原题要求“简短精炼”,可以更精炼例如“容器+智能编排:系统无碍新范式” 13字或者“容器化部署+智能编排:无碍系统新范式” 15字nn全栈工程师口吻:可能喜欢用“实战”、“指南”、“之道”等,但标题直接给出即可我选择“容器化部署+智能编排:系统无碍新范式” 共15字,看是否更精炼?或者去掉“部署”:“容器化+智能编排:系统无碍新范式” 13字但“容器化”本身包含部署概念?可能可以或者“容器化与智能编排:系统无碍新范式” 14字最终决定使用“容器化与智能编排:系统无碍新范式”注意不要加引号,直接输出
UI测试工程师的Windows运行库配置与开发环境全攻略,reasoning_content:我们要求以UI测试工程师的口吻写一个与技术、科技相关,关于[Windows运行库配置与管理:轻松搭建开发环境全攻略]的标题需要直接输出标题,不要加说明字数30字以内,简短精炼nn思路:UI测试工程师口吻,可能注重稳定性、兼容性、环境配置等可以结合运行库、配置、开发环境、攻略等词例如:UI测试工程师必看:Windows运行库配置一步到位 但需要更精简或者Windows运行库配置:UI测试环境搭建指南注意不要超过30字nn尝试:UI测试工程师:Windows运行库配置与开发环境搭建全攻略 字数?数一下:UI测试工程师:Windows运行库配置与开发环境搭建全攻略 – 共22个汉字+标点?实际汉字:UI(2字母算2个? 通常中文字数按汉字算,但UI是英文字母,题目说字数控制在30字以内,一般指汉字或字符?安全起见,用中文字符可以写成UI测试工程师即4个汉字+2个字母?严格来说,可以把UI视为两个字符为了简洁,可以写UI测试工程师共5个字符(U、I、测、试、工、程、师?不对,U,I,测,试,工,程,师 7个字符但通常算字数时英文字母算半个或一个?稳妥起见,用全中文表达,比如界面测试工程师但原要求是UI测试工程师,最好保留UInn可以写:【UI测试工程师】Windows运行库配置与环境搭建攻略 – 数一下:【UI测试工程师】Windows运行库配置与环境搭建攻略 – 汉字+符号:共? 【(1)、U(1)、I(1)、(1)、测(1)、试(1)、工(1)、程(1)、师(1)、】(1)、W(1)、i(1)、n(1)、d(1)、o(1)、w(1)、s(1)、运(1)、行(1)、库(1)、配(1)、置(1)、与(1)、环(1)、境(1)、搭(1)、建(1)、攻(1)、略(1) – 共29个字符?还有空格?实际有29个字符,但包含英文字母和符号可能超30?再算:符号算一个,英文字母每个算一个,总共:括号两个, UI两个, 汉字:测试工程师(4) Windows(7) 运行库配置与环境搭建攻略(13) 合计2+2+4+7+13=28加上中间可能没有空格28个,可以但【】可能不必要更简洁:nnUI测试工程师:Windows运行库配置与开发环境搭建 字数:UI测试工程师(7字符) :(1) Windows(7) 运行库配置与开发环境搭建(13) 合计7+1+7+13=28,可以但缺少全攻略意味或者轻松搭建nn另一个:Windows运行库配置:UI测试工程师开发环境搭建指南 字数:Windows运行库配置(11) :(1) UI测试工程师(7) 开发环境搭建指南(9) 合计11+1+7+9=28也不错nn最终选择简洁且有全攻略的考虑:UI测试工程师的Windows运行库配置与开发环境全攻略 字数:UI测试工程师的(8) Windows运行库配置与开发环境全攻略(16) 合计24字OKnn注意:要直接输出,不要加说明所以输出这个
16 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字直接输出这个