利用人工智能深入研究影响股价方向的力量

[

Nikhil Adithyan

](https://nikhiladithyan..com/?source=post_page-----0c1b735a48a9--------------------------------)[

Level Up Coding

](https://levelup.gitconnected.com/?source=post_page-----0c1b735a48a9--------------------------------)

照片由 Unsplash 上的 Markus Spiske 拍摄

 介绍

随着人工智能 (AI) 和机器学习 (ML) 的兴起,分析大量经济数据的任务不仅变得可行,而且越来越高效。

在本文中,我们将深入探讨利用人工智能的领域,特别是通过使用 GPT-3.5 模型,结合来自 EODHD 经济事件数据 API 的经济事件数据。

因此,言归正传,让我们开始对 OpenAI 和经济事件的交叉点进行有趣的探索,以预测股市的走势。

了解经济事件数据

经济事件数据是理解和预测经济趋势的基础。将其想象为一个由许多部分组成的巨大拼图,每个部分都代表一个重大的经济事件。

通过将这些部分整合在一起,我们可以更清楚地了解整体经济健康状况。

包括哪些经济事件?

经济事件数据包含广泛的重要指标,例如:

  • 国内生产总值 (GDP) 增长率:衡量经济的整体增长或下降。
  • 失业率:表示失业劳动力的百分比。
  • 消费者信心指数:反映消费者对经济的信心程度,影响消费习惯。
  • 制造业产出:跟踪一个国家的商品生产,表明经济活动。
  • 利率:银行贷款的利率,影响企业和消费者的借贷成本。

每个数据点包含哪些详细信息?

每条经济事件数据通常都包含提供背景信息的具体细节:

  • 事件类型:标识正在测量的经济指标(例如 GDP 增长率、失业率)。
  • 国家或地区:指定事件发生的地理位置。
  • 日期和时间:表示事件发生的时间。
  • 实际值:经济指标记录的实际数字。
  • 上一个值:当前事件之前的指标值。
  • 预估:该指标在实际数据发布前的预测值。
  • 变化:实际值与之前值之间的差异。
  • 变化百分比:以前一值的百分比计算的变化。

经济事件数据格式示例

以下是您可以从 EODHD 的经济事件数据 API 获取的经济事件数据示例,以 JSON 格式呈现:

EODHD 经济事件数据 API 示例输出(作者提供的图片)

在此示例中,数据点显示 2023 年 10 月 25 日美国 Markit 制造业采购经理人指数 (PMI)。PMI 表示制造业活动,值高于 50 表明扩张,值低于 50 表明收缩。

其中,实际PMI(52.3)略高于前值(52.0)和预估(51.8),表明制造业持续增长,但增速有所放缓。

通过分析大量经济事件数据,我们可以识别趋势、预测未来事件并在各个领域做出更明智的决策。现在,让我们探索如何将人工智能和机器学习与经济事件数据结合使用,以进行强大的经济预测!

获取和清理数据:预处理经济事件数据

在我们可以使用经济事件数据进行分析或人工智能模型之前,我们需要使其处于最佳状态!这个过程称为数据预处理。想象一下,你有一个杂乱的工具箱,里面装满了工具——有些生锈了,有些零件丢失了。

预处理就像清理和整理你的工具箱,这样你就可以有效地使用这些工具。

为什么预处理很重要?

  • 缺失值:某些数据点可能缺少信息(例如“更改”为空)。我们需要决定如何处理这些缺失的部分。
  • 数据类型:数据可能以不同的格式存储(例如,日期作为文本,数字作为字符串)。我们需要将它们转换为一致的格式以进行分析。
  • 缩放和标准化:值可以用不同的单位来衡量(例如,GDP 以万亿为单位,失业率以百分比为单位)。我们可能需要将它们调整到类似的比例以便更好地进行比较。
  • 分类变量:某些数据点可能是类别(例如事件的“类型”)。我们需要将它们转换为人工智能模型可以使用的格式。

逐步预处理:

 1. 导入包

将所需的包导入Python环境是一个不可跳过的步骤。我们要使用的包是:

  • Pandas — 用于数据格式化、清除、操作和其他相关目的
  • NumPy — 用于数值函数
  • eodhd — 用于提取经济事件数据

以下代码将所有三个包导入到我们的 Python 环境中:

<span id="97f5" data-selectable-paragraph=""><span>from</span> eodhd <span>import</span> APIClient<br><span>import</span> pandas <span>as</span> pd<br><span>import</span> numpy <span>as</span> np</span>

现在我们已经将所有必需的包导入到我们的环境中,让我们继续激活 API 密钥。

 2.API密钥激活

我们将使用 EODHD API 提供的数据。要访问数据,您需要在 EODHD 上注册(免费),之后您将收到有效的 API 密钥。

要将 API 密钥实施到我们的项目中,请使用:

<span id="9d55" data-selectable-paragraph="">api_key = <span>'&lt;YOUR API KEY&gt;'</span><br>client = APIClient(api_key)</span>

<YOUR API KEY> 替换为您的 EODHD API 密钥。

除了直接将 API 密钥存储为文本之外,还有其他方法可以增强安全性,例如利用环境变量等。

 3. 获取数据:

我们将使用 EODHD 的官方 Python 库来访问经济事件数据 API。以下代码使用该库提取经济事件数据:

<span id="cd79" data-selectable-paragraph=""><br><span>def</span> <span>fetch_data</span>(<span>start_date, end_date</span>):<br>    data = client.get_economic_events_data(date_from = start_date, date_to = end_date, offset = <span>1000</span>, limit = <span>1000</span>)<br>    <span>return</span> data<br><br>df = pd.DataFrame(fetch_data(<span>'2021-01-01'</span>, <span>'2023-12-31'</span>))<br>df.tail()</span>

 4.提取特征:

我们从每个数据点中提取相关特征:

  • event_type:经济事件的类型(例如 PMI)
  • 国家:事件发生的国家
  • 日期:活动日期
  • 实际:经济指标的实际值
  • previous:指标的前一个值
  • 估计:发布前的估计值
  • 变化:实际值与先前值之间的差异
  • change_percentage:变化百分比

5. 特征工程(可选):

我们可以在现有功能的基础上创建新功能。例如,我们可能会计算估计值与实际值之间的差异。

6. 编码分类变量:

event_type 是一个类别。我们可以将其转换为人工智能模型可以理解的数字格式(例如,使用 one-hot 编码)。

 把它们放在一起:

通过遵循这些步骤,我们将原始经济事件数据转换为干净可用的格式,以供进一步分析或输入人工智能模型。这使我们能够识别模式、做出预测并从经济形势中获得有价值的见解。

<span id="ee50" data-selectable-paragraph=""><span>from</span> sklearn.preprocessing <span>import</span> LabelEncoder<br><br><span>def</span> <span>preprocess_data</span>(<span>data</span>):<br>    processed_data = []<br>    <span>for</span> item <span>in</span> data:<br>        <span>if</span> item[<span>'change'</span>] <span>is</span> <span>not</span> <span>None</span>:  <br>            event_type = item[<span>'type'</span>]<br>            country = item[<span>'country'</span>]<br>            <br>            actual = item[<span>'actual'</span>]<br>            previous = item[<span>'previous'</span>]<br>            estimate = item[<span>'estimate'</span>]<br>            change = item[<span>'change'</span>]<br>            change_percentage = item[<span>'change_percentage'</span>]<br>           <br>            <br>            label_encoder = LabelEncoder()<br>            event_type_encoded = label_encoder.fit_transform([event_type])[<span>0</span>]<br>            country_encoded = label_encoder.fit_transform([country])[<span>0</span>]<br><br>            <br>            processed_data.append([event_type_encoded, country_encoded, actual, previous, estimate, change, change_percentage])<br>    <br>    <span>return</span> processed_data</span>

名为 preprocess_data 的函数旨在预处理数据集。它首先迭代数据集中的每个项目,仅关注那些具有可用“更改”值的项目。

然后,它提取相关特征,例如事件类型、国家/地区、实际值、先前值、估计、变化和变化百分比。

在进一步处理之前,事件类型和国家/地区等分类变量使用 scikit-learn 的 LabelEncoder 类进行标签编码,将其转换为数值。

然后将编码后的特征编译到名为processed_data的新列表中以供后续分析。

利用 GPT-3.5 的力量

想象一下,有一个写作助手不仅可以完成你的句子,还可以根据大量信息预测未来事件!这就是 OpenAI 强大的语言模型 GPT-3.5 的潜力。

 什么是 GPT-3.5?

GPT-3.5 是一种在海量文本和代码数据集上训练的尖端人工智能模型。它可以生成人类质量的文本、翻译语言、编写不同类型的创意内容,并以翔实的方式回答您的问题。

GPT-3.5如何帮助经济预测?

通过提供包含历史经济数据和相关背景的 GPT-3.5 精心设计的提示,我们可以利用该模型来生成对未来经济事件的预测。

 提示示例:

这是我们可以用于 GPT-3.5 的简化示例提示:

<span id="4eaf" data-selectable-paragraph="">Based on historical data and current trends, predict the change in the Markit Manufacturing PMI for Australia in the next quarter. <br><br><span>**Context:**</span><br><br><span>*</span> Recent economic reports suggest a slowdown in global manufacturing activity.<br><span>*</span> Australia's central bank recently raised interest rates.<br><br><span>**Data:**</span><br><br><span>*</span> Include historical PMI data for Australia and other developed economies.<br><span>*</span> Include recent economic indicators for Australia (e.g., inflation rate, consumer spending).</span>

 重要的提示:

虽然 GPT-3.5 的预测可能很有趣,但重要的是要记住它们不能保证准确。必须将它们作为进一步分析的起点,并将其与其他预测技术结合起来。

 生成预测:

在本节中,我将引导您完成设置必要工具,然后使用 GPT-3.5 模型生成特定经济事件预测的过程。

我们首先安装 OpenAI Python 库,它提供了与 OpenAI 语言模型(包括 GPT-3.5)交互的接口。安装库后,我们可以导入所需的模块并使用 API 密钥创建客户端实例以进行身份验证。

接下来,我们将定义要生成预测的经济事件的详细信息。我们将这些详细信息存储在变量中,例如 event_type、country 和 date_str。

掌握事件详细信息后,我们将为 GPT-3.5 模型生成提示。此提示可能包括事件详细信息,以及可能与预测任务相关的任何其他上下文或历史数据。

提示的质量和完整性可以显着影响模型响应的准确性和有用性。

为了与 GPT-3.5 模型交互,我们将定义一个名为 get_completion 的函数。该函数将提示和模型名称作为参数,将提示格式化为适合模型的消息,并将其发送到 OpenAI API 以生成响应。

然后检索 GPT-3.5 模型的响应,并将最可能的响应(第一个选择)的内容打印到控制台。

 示例#1:

<span id="8fc4" data-selectable-paragraph=""><span>import</span> openai<br><br><br><span>def</span> <span>generate_prompt</span>(<span>event_type, country, date_str</span>):<br>    prompt = <span>f"You are a financial expert and have a great knowledge about predicting the movement of the stock market after a certain economic event. A new economic event has occurred. It is an '<span>{event_type}</span>' event in <span>{country}</span> on <span>{date_str}</span>. Predict the change after this event."</span><br>    <span>return</span> prompt<br><br><br><span>from</span> openai <span>import</span> OpenAI<br>client = OpenAI(api_key =<span>"YOUR OPENAI API KEY"</span>)<br><br><span>def</span> <span>get_completion</span>(<span>prompt, model=<span>"gpt-3.5-turbo"</span></span>):<br>    messages = [{<span>"role"</span>: <span>"user"</span>, <span>"content"</span>: prompt}]<br>    response = client.chat.completions.create(<br>        model = model,<br>        messages = messages,<br>        temperature = <span>0</span>, <br>    )<br>    <span>return</span> response<br><br><br>event_type = df[<span>'type'</span>][<span>0</span>]<br>country = df[<span>'country'</span>][<span>0</span>]<br>date_str = df[<span>'date'</span>][<span>0</span>]<br>prompt = generate_prompt(event_type, country, date_str)<br>r = get_completion(prompt)<br><span>print</span>(r.choices[<span>0</span>].message.content)</span>

 输出:

考虑的示例是预测将在美国发生的与通货膨胀率相关的事件的影响。我们的模型利用这些输入来预测和解释股票市场的走势。

如上图所示,我们的模型在评估经济事件并对股市走势做出可能的预测方面做得很好。

 示例#2:

<span id="689b" data-selectable-paragraph=""><br><br>event_type = df[<span>'type'</span>][<span>1</span>]<br>country = df[<span>'country'</span>][<span>1</span>]<br>date_str = df[<span>'date'</span>][<span>1</span>]<br>prompt = generate_prompt(event_type, country, date_str)<br>r = get_completion(prompt)<br><span>print</span>(r.choices[<span>0</span>].message.content)</span>

 输出:

这些预测为我们提供了非常有用的想法,让我们了解当经济中的重要事情发生变化时可能会发生什么,比如物品的成本是多少或工厂的运转情况如何。

例如,如果发生了有关澳大利亚工厂表现如何或美国价格如何变化的重大事件,该模型会研究不同的可能性以及它们对经济可能意味着什么,以及它如何影响股市。

它在很大程度上帮助我们根据这些事件了解接下来会发生什么。

 结论

经济事件数据 API(例如 EODHD 提供的 API)与 GPT-3.5 等人工智能模型的结合为更准确、更有洞察力的经济预测和市场预测提供了令人兴奋的机会。

这一探索是LLMs经济事件预测这一重大任务的一个很好的起点。从长远来看,投资者和经济学家可以利用该模型生成的解释和解释来做出经过深思熟虑的、明智的决策。

说到可以进行的改进,还有很大的空间。可以使用各种 RAG 技术、改进的提示、微调数据集上的 LLM 以及大型语言模型使用中的各种其他演变方法来提高性能。

综上所述,通过这篇文章,我们只是进入了LLMs和市场预测的世界,还有很多东西需要探索和研究。

这个充满前景的领域不仅令开发商兴奋,也让交易者和投资者兴奋不已,他们现在有很好的机会利用这些新兴技术。

话虽如此,您已经到达了本文的结尾。希望您今天学到了一些新的有用的东西。非常感谢您的宝贵时间。