作者:老余捞鱼
原创不易,转载请标明出处及原作者。
写在前面的话:
本文提供了一个分步指南,指导大家如何利用 OpenAI GPT-4 模型和雅虎财经 yfinance 库比较不同股票的投资价值,并通过异步请求加快处理速度,最终构建一个基于 Gradio 的 Web UI 应用程序。
在本教程中,我将介绍如何利用 GPT-4 比较潜在的股票购买。它基于 Matt Shumer 使用Claude 进行金融分析的代码。本教程介绍了对该策略的修改,以便与 OpenAI API 配合使用。我们还实现了异步请求,这一改动大大加快了处理速度。我们使用的主要 python 库是:
- yfinance: Yahoo finance 是一个 python 库,提供线程和 Pythonic 方式从雅虎财经下载市场数据。
首先,为了安装所需的库,我们创建一个 requirements.txt 文件:
yfinance
requests
beautifulsoup4
openai
python-dotenv
gradio
然后,我们就可以创建一个新的 conda 环境并安装库:
conda create --name gptinvestor python=3.10
conda activate gptinvestor
pip install -r requirements.txt
程序包括几个连续的函数调用,首先通过 yfinance 库获取股票代码数据(例如微软的 MSFT)。数据检索完成后,程序会将这些信息转发给 OpenAI API 进行分析。以下是该程序的工作流程概览:
1. 基础代码
我们首先导入所需的 python 库:
from dataclasses import dataclass, field
from typing import List, Dict, Optional
import pandas as pd
import asyncio
import requests
from bs4 import BeautifulSoup
from datetime import datetime, timedelta
from openai import OpenAI, AsyncOpenAI
from dotenv import load_dotenv
import yfinance as yf
接下来,我们创建两个 OpenAI 客户端,一个用于异步调用,另一个用于最后的同步调用,在同步调用中,我们希望 GPT 为我们对股票进行排名。
load_dotenv("env_variables.env")
syncclient = OpenAI()
asyncclient = AsyncOpenAI()
注意:您必须在运行代码的同一目录下创建名为 env_variables.env 的文件,并在其中放入 OpenAI API 密钥:
OPENAI_API_KEY=abcdefghijk12345
load_dotenv(“env_variables.env”)
会将你的 OpenAI API 密钥作为环境变量即时加载。
接下来,我们为每个股票代码定义一个数据类,并将该类命名为 TickerClass。该数据类用于存储每个股票代码(4 个字母的股票表示法)的不同信息。
我们引入了一个名为 TickerClass
的数据类,用于保存每个股票代码的不同详细信息,这些代码由四个字母组成(如 MSFT 表示 Microsoft)。该类作为一个结构化容器,用于存储每只股票的相关信息,包括历史数据、资产负债表、分析师评级和价格等。此外,它还包