AI 投资系统-基于人工智能的投资系统概念验证项目python源码
一个基于人工智能的投资系统概念验证项目。项目目标是探索如何使用 AI 来辅助投资决策。本项目仅用于教育目的,不适用于实际交易或投资。 系统组成系统由以下几个协同工作的 agent 组成: - Market Data Analyst:负责收集和预处理市场数据
- Valuation Agent:计算股票内在价值并生成交易信号
- Sentiment Agent:分析市场情绪并生成交易信号
- Fundamentals Agent:分析基本面数据并生成交易信号
- Technical Analyst:分析技术指标并生成交易信号
- Risk Manager:计算风险指标并设置仓位限制
- Portfolio Manager:制定最终交易决策并生成订单
AI 投资系统-基于人工智能的投资系统概念验证项目python源码
注意:系统仅模拟交易决策,不进行实际交易。
免责声明本项目仅用于教育和研究目的。 - 不适用于实际交易或投资
- 不提供任何保证
- 过往业绩不代表未来表现
- 创建者不承担任何财务损失责任
- 投资决策请咨询专业理财顾问
使用本软件即表示您同意仅将其用于学习目的。 安装
- 克隆仓库:
下载源码 - 安装 Poetry(如果尚未安装):
- curl -sSL https://install.python-poetry.org | python3 -
复制代码
- 安装依赖:
- 设置环境变量:
- # 创建.env文件用于存储API密钥
- cp .env.example .env
- # 从 https://platform.deepseek.com/ 获取DeepSeek API密钥
- export DEEP_SEEK_API_KEY='your-deepseek-api-key-here'
- export DEEP_SEEK_MODEL='deepseek-chat'
复制代码
DeepSeek API 申请指南- 访问 DeepSeek 平台
- 注册或登录您的账户
- 进入 API Keys 页面
- 点击 "Create new API key" 按钮
- 复制生成的 API key
- 将 API key 填入 .env 文件中的 DEEP_SEEK_API_KEY 变量
使用说明运行对冲基金系统支持多种运行方式,可以根据需要组合使用不同的参数: - 基本运行
- poetry run python src/main.py --ticker 301155
复制代码这将使用默认参数运行系统,包括:
- 默认分析 5 条新闻(num_of_news=5)
- 不显示详细分析过程(show_reasoning=False)
- 使用默认的初始资金(initial_capital=100,000)
- 显示分析推理过程
- poetry run python src/main.py --ticker 301155 --show-reasoning
复制代码这将显示每个智能体(Market Data Agent、Technical Analyst、Fundamentals Agent、Sentiment Agent、Risk Manager、Portfolio Manager)的分析过程和推理结果。 这允许你设置:
- initial_capital: 初始现金金额(可选,默认为 100,000)
- 自定义新闻分析数量和具体日期的投资建议
- poetry run python src/main.py --ticker 301157 --show-reasoning --end-date 2024-12-11 --num-of-news 20
复制代码这将:
- 分析指定日期范围内最近的 20 条新闻进行情绪分析
- start-date 和 end-date 格式为 YYYY-MM-DD
- 回测功能
- poetry run python src/backtester.py --ticker 301157 --start-date 2024-12-11 --end-date 2025-01-07 --num-of-news 20
复制代码
回测功能支持以下参数: - ticker: 股票代码
- start-date: 回测开始日期(YYYY-MM-DD)
- end-date: 回测结束日期(YYYY-MM-DD)
- initial-capital: 初始资金(可选,默认为 100,000)
- num-of-news: 情绪分析使用的新闻数量(可选,默认为 5,最大为 100)
参数说明- --ticker: 股票代码(必需)
- --show-reasoning: 显示分析推理过程(可选,默认为 false)
- --initial-capital: 初始现金金额(可选,默认为 100,000)
- --num-of-news: 情绪分析使用的新闻数量(可选,默认为 5,最大为 100)
- --start-date: 开始日期,格式 YYYY-MM-DD(可选)
- --end-date: 结束日期,格式 YYYY-MM-DD(可选)
输出说明系统会输出以下信息: - 基本面分析结果
- 估值分析结果
- 技术分析结果
- 情绪分析结果
- 风险管理评估
- 最终交易决策
如果使用了--show-reasoning参数,还会显示每个智能体的详细分析过程。 Example Output: - 正在获取 301157 的历史行情数据...
- 开始日期:2024-12-11
- 结束日期:2024-12-11
- 成功获取历史行情数据,共 242 条记录
- 警告:以下指标存在NaN值:
- - momentum_1m: 20条
- - momentum_3m: 60条
- - momentum_6m: 120条
- ...(这些警告是正常的,是由于某些技术指标需要更长的历史数据才能计算)
- 正在获取 301157 的财务指标数据...
- 获取实时行情...
- 成功获取实时行情数据
- 获取新浪财务指标...
- 成功获取新浪财务指标数据,共 3 条记录
- 最新数据日期:2024-09-30 00:00:00
- 获取利润表数据...
- 成功获取利润表数据
- 构建指标数据...
- 成功构建指标数据
- Final Result:
- {
- "action": "buy",
- "quantity": 12500,
- "confidence": 0.42,
- "agent_signals": [
- {
- "agent": "Technical Analysis",
- "signal": "bullish",
- "confidence": 0.6
- },
- {
- "agent": "Fundamental Analysis",
- "signal": "neutral",
- "confidence": 0.5
- },
- {
- "agent": "Sentiment Analysis",
- "signal": "neutral",
- "confidence": 0.8
- },
- {
- "agent": "Valuation Analysis",
- "signal": "bearish",
- "confidence": 0.99
- },
- {
- "agent": "Risk Management",
- "signal": "buy",
- "confidence": 1.0
- }
- ],
- "reasoning": "Risk Management allows a buy action with a maximum quantity of 12500..."
- }
复制代码 日志文件说明系统会在 logs/ 目录下生成以下类型的日志文件: 回测日志
- 文件名格式:backtest_{股票代码}_{当前日期}_{回测开始日期}_{回测结束日期}.log
- 示例:backtest_301157_20250107_20241201_20241230.log
- 包含:每个交易日的分析结果、交易决策和投资组合状态
API 调用日志
- 文件名格式:api_calls_{当前日期}.log
- 示例:api_calls_20250107.log
- 包含:所有 API 调用的详细信息和响应
所有日期格式均为 YYYY-MM-DD。如果使用了 --show-reasoning 参数,详细的分析过程也会记录在日志文件中。 项目结构
- ai-hedge-fund/
- ├── src/ # 源代码目录
- │ ├── agents/ # agent定义和工作流
- │ │ ├── fundamentals.py # 基本面分析Agent
- │ │ ├── market_data.py # 市场数据分析Agent
- │ │ ├── portfolio_manager.py # 投资组合管理Agent
- │ │ ├── risk_manager.py # 风险管理Agent
- │ │ ├── sentiment.py # 情绪分析Agent
- │ │ ├── state.py # Agent状态管理
- │ │ ├── technicals.py # 技术分析Agent
- │ │ └── valuation.py # 估值分析Agent
- │ ├── data/ # 数据存储目录
- │ │ ├── sentiment_cache.json # 情绪分析缓存
- │ │ └── stock_news/ # 股票新闻数据
- │ ├── tools/ # 工具和功能模块
- │ │ ├── api.py # API接口和数据获取
- │ │ ├── data_analyzer.py # 数据分析工具
- │ │ ├── news_crawler.py # 新闻爬取工具
- │ │ ├── openrouter_config.py # OpenRouter配置
- │ │ └── test_*.py # 测试文件
- │ ├── utils/ # 通用工具函数
- │ ├── backtester.py # 回测系统
- │ └── main.py # 主程序入口
- ├── logs/ # 日志文件目录
- │ ├── api_calls_*.log # API调用日志
- │ └── backtest_*.log # 回测结果日志
- ├── .env # 环境变量配置
- ├── .env.example # 环境变量示例
- ├── poetry.lock # Poetry依赖锁定文件
- ├── pyproject.toml # Poetry项目配置
- └── README.md # 项目文档
复制代码 各Agent功能说明市场数据分析Agent
- 系统入口,负责数据采集和预处理
- 通过akshare API获取A股市场数据
- 数据来源包括:
技术分析Agent
- 分析以下技术指标:
- 生成技术分析交易信号
- 关注短期市场走势
基本面分析Agent
- 分析公司财务指标:
- 评估公司长期发展潜力
- 生成基本面交易信号
情绪分析Agent
- 分析市场新闻和舆论
- 评估市场情绪
- 生成情绪交易信号
- 支持多数据源:
估值分析Agent
风险管理Agent
- 整合各Agent信号
- 评估潜在风险
- 设置风险控制参数:
投资组合管理Agent
数据处理流程数据类型说明市场数据 { "market_cap": float, # 总市值 "volume": float, # 成交量 "average_volume": float, # 平均成交量 "fifty_two_week_high": float, # 52周最高价 "fifty_two_week_low": float # 52周最低价}财务指标数据 { # 市场数据 "market_cap": float, # 总市值 "float_market_cap": float, # 流通市值 # 盈利数据 "revenue": float, # 营业总收入 "net_income": float, # 净利润 "return_on_equity": float, # 净资产收益率 "net_margin": float, # 销售净利率 "operating_margin": float, # 营业利润率 # 增长指标 "revenue_growth": float, # 主营业务收入增长率 "earnings_growth": float, # 净利润增长率 "book_value_growth": float, # 净资产增长率 # 财务健康指标 "current_ratio": float, # 流动比率 "debt_to_equity": float, # 资产负债率 "free_cash_flow_per_share": float, # 每股经营性现金流 "earnings_per_share": float, # 每股收益 # 估值比率 "pe_ratio": float, # 市盈率(动态) "price_to_book": float, # 市净率 "price_to_sales": float # 市销率}财务报表数据 { "net_income": float, # 净利润 "operating_revenue": float, # 营业总收入 "operating_profit": float, # 营业利润 "working_capital": float, # 营运资金 "depreciation_and_amortization": float, # 折旧和摊销 "capital_expenditure": float, # 资本支出 "free_cash_flow": float # 自由现金流}交易信号数据 { "action": str, # 交易动作:买入/卖出/持有 "quantity": int, # 交易数量 "confidence": float, # 置信度 (0-1) "agent_signals": [ # 各Agent信号 { "agent": str, # Agent名称 "signal": str, # 信号类型:看涨/看跌/中性 "confidence": float # 置信度 (0-1) } ], "reasoning": str # 决策理由}
数据处理流程数据采集
- 通过akshare API获取以下数据:
- 通过新浪财经API获取新闻数据
- 数据标准化处理
数据分析
风险管理
- 评估市场风险
- 计算头寸规模
- 设置止损止盈
- 控制投资组合风险
投资决策
- 综合各Agent信号
- 评估市场状况
- 考虑投资组合状态
- 生成最终交易决策
数据存储
- 情绪分析结果缓存
- 新闻数据存储
- 日志文件记录
- API调用记录
系统监控
- API调用监控
- Agent分析追踪
- 决策过程记录
- 回测结果评估
Agent协作机制信息共享- 所有Agent共享同一个状态对象
- 通过消息传递机制进行通信
- 每个Agent都可以访问必要的历史数据
决策权重投资组合管理Agent在做决策时考虑不同信号的权重: - 估值分析:35%
- 基本面分析:30%
- 技术分析:25%
- 情绪分析:10%
风险控制- 强制性风险限制
- 最大持仓限制
- 交易规模限制
- 止损和止盈设置
系统特点模块化设计
- 每个Agent都是独立的模块
- 易于维护和升级
- 可以单独测试和优化
可扩展性
- 可以轻松添加新的分析师
- 支持添加新的数据源
- 可以扩展决策策略
风险管理
智能决策
未来展望数据源扩展
- 添加更多A股数据源
- 接入更多财经数据平台
- 增加社交媒体情绪数据
- 扩展到港股、美股市场
功能增强
性能优化
情感分析功能情感分析代理(Sentiment Agent)是系统中的关键组件之一,负责分析市场新闻和舆论对股票的潜在影响。 功能特点新闻数据采集
- 自动抓取最新的股票相关新闻
- 支持多个新闻源
- 实时更新新闻数据
情感分析处理
- 使用先进的AI模型分析新闻情感
- 情感分数范围:-1(极其消极)到1(极其积极)
- 考虑新闻的重要性和时效性
交易信号生成
- 基于情感分析结果生成交易信号
- 包含信号类型(看涨/看跌)
- 提供置信度评估
- 附带详细的分析理由
情感分数说明[td]分数范围 | 情感等级 | 典型场景 | 1.0 | 极其积极 | 重大利好消息、超预期业绩、行业政策支持 | 0.5 到 0.9 | 积极 | 业绩增长、新项目落地、获得订单 | 0.1 到 0.4 | 轻微积极 | 小额合同签订、日常经营正常 | 0.0 | 中性 | 日常公告、人事变动、无重大影响的新闻 | -0.1 到 -0.4 | 轻微消极 | 小额诉讼、非核心业务亏损 | -0.5 到 -0.9 | 消极 | 业绩下滑、重要客户流失、行业政策收紧 | -1.0 | 极其消极 | 重大违规、核心业务严重亏损、被监管处罚 |

链接:https://pan.quark.cn/s/9c67f927ebc7
提取码下载:
|