当前位置: 首页 > news >正文

在 Windows 系统部署对冲基金分析工具 ai-hedge-fund 的笔记

#工作记录

一、环境准备

在部署对冲基金分析工具ai-hedge-fund前,需提前安装好必备软件,为后续工作搭建好基础环境。

1. 安装 Anaconda

Anaconda 集成了 Python 及众多科学计算库,是项目运行的重要基础。从Anaconda 官方网站下载适合 Windows 系统的安装包,下载完成后,双击安装包,按照安装向导的提示进行操作,注意在安装过程中可选择将 Anaconda 添加到系统环境变量,方便后续使用。安装完成后,打开 Anaconda Prompt,可通过输入conda --version命令来验证是否安装成功。

conda --version

2. 安装 Poetry

Poetry 用于项目的依赖管理和环境配置。在 Anaconda Prompt 中执行pip install poetry命令进行安装。安装成功后,输入poetry --version,若显示出版本信息,则说明安装成功。Poetry 安装路径通常为D:\ProgramData\anaconda3\Scripts\poetry.exe,在后续配置 PyCharm 时会用到此路径。

pip install poetry
poetry --version

 【笔记】快速安装Poetry-CSDN博客

 poetry 的路径:

D:\ProgramData\anaconda3\Scripts\poetry.exe 

 

3. 安装 Node.js 和 npm

Node.js 和 npm 是前端项目运行的必要环境。从Node.js 官方网站下载 Windows 版本的安装包,安装过程中保持默认设置即可。安装完成后,打开命令提示符或 PowerShell,分别输入node -v和npm -v,若能显示出版本号,表明安装成功。

node -v
npm -v

4. 安装 GitHub Desktop

GitHub Desktop 方便我们进行代码的克隆与管理。

从GitHub Desktop 官方网站下载安装包,安装完成后,打开软件并登录自己的 GitHub 账号。

5. 安装 Ollama

Ollama 用于本地大语言模型推理。从Ollama 官方网站下载 Windows 版本的安装包,安装完成后,在命令提示符中执行ollama serve启动服务。

若提示Error: listen tcp 127.0.0.1:11434: bind: Only one usage of each socket address (protocol/network address/port) is normally permitted.,表示端口 11434 被占用,可通过以下方法解决:

  • 查找占用端口的进程:在命令提示符或 PowerShell 中执行netstat -ano | findstr :11434,找到对应进程 ID(PID)。
  • 终止进程:执行taskkill /F /PID [PID] (将[PID]替换为实际进程 ID) 。
  • 更换端口:执行ollama serve --port 12345 (将12345替换为其他未被占用端口),同时需在后续使用中修改代码中 Ollama API 地址 。

二、克隆项目

使用 GitHub Desktop 克隆项目代码到本地,方便后续进行项目的部署与调试。

  1. 打开 GitHub Desktop,点击File -> Clone repository。
  2. 在弹出窗口的URL选项卡中,输入项目 GitHub 地址https://github.com/virattt/ai-hedge-fund.git。
  3. 选择本地存储路径,点击Clone按钮开始克隆项目。
  4. 克隆完成后,进入项目文件夹,空白处右键用PyCharm打开,后续的依赖安装、命令执行等操作都可在PyCharm中进行。

三、在 PyCharm 中配置 Poetry 解释器

【笔记】PyCharm 中创建Poetry解释器-CSDN博客

PyCharm 是常用的 Python 开发集成环境,正确配置 Poetry 解释器有助于项目的开发与运行。

  1. 打开 PyCharm,新建项目或打开已克隆的ai-hedge-fund项目。
  2. 依次点击File -> Settings(Windows/Linux)或PyCharm -> Preferences(Mac)。
  3. 在弹出的窗口中,选择Project: [项目名称] -> Python Interpreter。
  4. 点击右上角的齿轮图标,选择Add。
  5. 在弹出的窗口中,选择Poetry Environment,确保Use existing environment被选中,点击...按钮,在文件浏览窗口中找到并选择D:\ProgramData\anaconda3\Scripts\poetry.exe。
  6. 点击OK保存配置,完成 Poetry 解释器的配置。

 

    四、配置环境变量

    环境变量的配置是为项目提供必要的 API 密钥等信息,确保项目能够正常运行。

    1. 创建.env 文件

    在项目根目录下,打开命令提示符或 PowerShell,执行copy .env.example .env命令,复制.env.example文件为.env文件。

    cp .env.example .env

     

    2. 编辑.env 文件

    使用文本编辑器(如 Notepad++、VS Code 等)打开.env文件,添加以下 API 密钥:

    # For running LLMs hosted by openai (gpt-4o, gpt-4o-mini, etc.)
    # Get your OpenAI API key from https://platform.openai.com/
    OPENAI_API_KEY=your-openai-api-key# For running LLMs hosted by groq (deepseek, llama3, etc.)
    # Get your Groq API key from https://groq.com/
    GROQ_API_KEY=your-groq-api-key# For getting financial data to power the hedge fund
    # Get your Financial Datasets API key from https://financialdatasets.ai/
    FINANCIAL_DATASETS_API_KEY=your-financial-datasets-api-key
    

     

      API 密钥获取(有限的免费额度,完整功能API密钥可能要收费)

    openai-api-key获取网址:

    https://platform.openai.com/welcome?step=try

     

    groq-api-key获取网址:

    https://console.groq.com/home

     

    financial-datasets-api-key获取网址:

    Financial Datasets | Stock Market API

     

     

    五、安装项目依赖

    项目依赖的安装是确保项目各功能模块正常运行的关键步骤,需分别安装根项目依赖、后端应用依赖和前端应用依赖。

    安装根项目依赖

    在项目根目录的终端中,执行poetry install命令,Poetry 会根据项目的pyproject.toml文件自动安装所需的依赖包。

    poetry install

     

    六、运行项目

    完成上述步骤后,即可运行项目进行对冲基金分析。

    • 1、在项目根目录的终端中,执行poetry run python src/main.py --ticker AAPL --ollama命令(其中--ticker AAPL可根据需求修改为其他股票代码,--ollama表示使用 Ollama 进行本地 LLM 推理)。
    poetry run python src/main.py --ticker AAPL --ollama
    ​

     

    • 2、执行命令后,会提示选择 AI 分析师,通过按 箭头移动光标,按空格键选择分析师,按回车键确认选择。

    • 3、接着会提示选择 Ollama 模型,通过按 箭头移动光标,按回车键确认选择。

    • 常见问题及解决:
      • LLM 调用失败(状态码 502 等)

    【笔记】排查并解决Error in LLM call after 3 attempts: (status code: 502)-CSDN博客

        • 尝试使用更小的模型,如gemma3:4b、llama3:7b 。
        • 修改src/tools/llm.py增加超时时间和重试次数,并在重试时尝试重启 Ollama 服务 。具体可在call_ollama函数中增加相关逻辑,例如:
    def call_ollama(prompt, model="gemma3:4b", max_retries=10, timeout=300):​url = "http://localhost:11434/api/generate"​payload = {​"model": model,​"prompt": prompt,​"stream": False,​"temperature": 0.1,​"max_tokens": 1500,​"top_p": 0.9,​"frequency_penalty": 0.2​}​​for attempt in range(max_retries):​try:​logger.info(f"LLM call attempt {attempt+1}/{max_retries}")​response = requests.post(url, json=payload, timeout=timeout)​response.raise_for_status()​return response.json()["response"]​except Exception as e:​logger.warning(f"LLM call failed: {e}")​# 每3次重试重启一次服务​if attempt % 3 == 0: ​try:​subprocess.run(["taskkill", "/F", "/IM", "ollama.exe"], check=True)​time.sleep(2)​subprocess.Popen(["ollama", "serve"], stdout=subprocess.PIPE, stderr=subprocess.PIPE)​time.sleep(5) ​except Exception as restart_e:​logger.warning(f"Failed to restart Ollama: {restart_e}")​time.sleep(5 * (attempt + 1)) ​​raise Exception("Failed to get response from LLM after multiple attempts")

    • 优化 Ollama 配置,在~/.ollama/config.toml中设置cache_size、threads等参数 。例如:
    [models]​
    cache_size = 8  # 减少缓存大小,单位为 GB​
    threads = 4     # 减少线程数,根据 CPU 核心数调整​
    ​
    [server]​
    timeout = 300   # 增加超时时间,避免请求过早失败

    • OpenAI API 配额不足(错误代码 429)
      • 检查 OpenAI 账户配额,升级付费计划或切换到本地 Ollama 模型 。
    • 金融数据 API 请求被限流(错误代码 429)
      • 在src/tools/api.py中添加指数退避重试机制,避免频繁请求 。例如:
    import time
    import requests
    from requests.exceptions import RequestExceptiondef search_line_items(ticker, items, api_key=None):url = f"https://financialdatasets.ai/api/financials/{ticker}"headers = {"Authorization": f"Bearer {api_key}"} if api_key else {}params = {"items": ",".join(items)}max_retries = 5for attempt in range(max_retries):try:response = requests.get(url, headers=headers, params=params, timeout=30)response.raise_for_status()return response.json()except RequestException as e:if response.status_code == 429:retry_after = int(response.headers.get('Retry-After', 2 ** attempt))print(f"Rate limited. Retrying in {retry_after} seconds...")time.sleep(retry_after)continueraise Exception(f"Error fetching data: {ticker} - {response.status_code} - {response.text}")raise Exception(f"Failed after {max_retries} attempts: {ticker}")
    • 减少并发请求,一次只分析一只股票并减少启用的分析师数量 。

    运行成功后,可在终端查看各分析师对股票的评估、交易决策及投资组合总结等分析结果。

     

     

     

    七、注意事项

    1. 密钥准确性:确保.env文件中的 API 密钥正确,否则项目可能无法正常获取数据或调用模型。
    2. 网络连接:运行项目时需保证网络正常,因为部分数据需从网络获取。
    3. 权限问题:确保对项目文件夹有足够的读写权限,避免因权限不足导致项目运行出错。
    4. 免责声明:该项目仅作教育和研究用途,不可用于实际交易或投资,不提供投资建议,使用前务必咨询财务顾问。
    5. 代理设置:确保在运行程序时,代理设置为规则模式,避免本地ollama通过代理被调用。

    【笔记】排查并解决Error in LLM call after 3 attempts: (status code: 502)-CSDN博客

    这份笔记涵盖了从环境搭建到项目运行及问题解决的全流程。若在部署过程中还有疑问,或遇到其他状况,欢迎随时一起交流。

    http://www.xdnf.cn/news/569341.html

    相关文章:

  1. 科普: 天然气蓝牙卡充值流程
  2. CST软件基础四:电场和电导的设置
  3. Unity基础学习(五)Mono中的重要内容(1)延时函数
  4. Model 是 Agent 的大脑(以camel为例)
  5. 补充Depends 和 request: Request 依赖注入用法的注意事项
  6. 【C++ Primer 学习札记】智能指针
  7. 构建 PyMNN
  8. Halcon窗口的基本操作
  9. Elasticsearch生产环境性能调优指南
  10. Spring Boot + +小程序, 快速开发零工市场小程序
  11. 如何使用 Docker Compose 部署 Immich
  12. 《棒球百科知识》世界棒球十强国家是如何发展·棒球1号位
  13. WordPress Madara插件存在文件包含漏洞(CVE-2025-4524)
  14. 实验分享|基于千眼狼sCMOS科学相机的流式细胞仪细胞核成像实验
  15. XCOSnTh-fatfsShell
  16. 腾讯位置服务地点搜索开发指南
  17. [Min-Max Normalization] [Z-Score Normalization]
  18. 使用vue2做一个生成二维码的案例【可当组件使用】
  19. JC/T 2848-2024 玻璃纤维增强石膏(GRG)装饰制品检测
  20. VS2022:使用命令行启动项目
  21. 2023 睿抗机器人开发者大赛CAIP-编程技能赛-本科组(国赛) 解题报告 | 珂学家
  22. vscode连接WSL卡住
  23. js不同浏览器标签页、窗口或 iframe 之间可以相互通信
  24. 虚拟机下的OpenWrt磁盘Overlay扩容
  25. genicamtl_lmi_gocator_objectmodel3d
  26. 掌握HTTPX:从基础到高并发工程实践
  27. 自由开发者计划 001:创建一个用于查看 Jupyter Notebook 的谷歌浏览器插件
  28. FPGA降低功耗研究
  29. 【76. 最小覆盖子串】
  30. 操作系统 第四章 -2