返回市场
股票筛选器

股票筛选器

作者:twolven33 星标更新:2025-09-29

项目介绍

StockScreen MCP Server

一个通过Yahoo Finance提供全面股票筛选功能的模型上下文协议(MCP)服务器。支持LLMs根据技术分析、基本面分析和期权分析标准筛选股票,并支持观察列表管理和结果存储。

功能

股票筛选

  • 技术分析筛选

    • 价格和成交量过滤器
    • 移动平均线(20日、50日、200日SMA)
    • RSI指标
    • 平均真实范围(ATR)
    • 趋势分析(1日、5日、20日变化)
    • MA距离计算
  • 基本面筛选

    • 市值过滤器
    • 市盈率分析
    • 股息收益率标准
    • 收入增长率指标
    • ETF特定指标(资产管理规模AUM,费用比率)
  • 期权筛选

    • 隐含波动率(IV)过滤器
    • 期权成交量和未平仓量
    • 持有/卖出比率分析
    • 买入价/卖出价差评估
    • 盈利日期接近度检查

数据管理

  • 观察列表创建和管理
  • 筛选结果存储
  • 默认符号类别
    • 大型股(>2000亿美元)
    • 大盘股(100亿至2000亿美元)
    • 中盘股(20亿至100亿美元)
    • 小盘股(3亿至20亿美元)
    • 微型股(<3亿美元)
    • ETFs

安装

# 安装依赖
pip install -r requirements.txt

# 克隆仓库
git clone https://github.com/twolven/mcp-stockscreen.git
cd mcp-stockscreen

使用方法

  1. 添加到您的Claude配置中: 在您的claude-desktop-config.json文件中,在mcpServers部分添加以下内容:
{
    "mcpServers": {
        "stockscreen": {
            "command": "python",
            "args": ["path/to/stockscreen.py"]
        }
    }
}

将"path/to/stockscreen.py"替换为您保存stockscreen.py文件的实际路径。

可用工具

  1. run_stock_screen

技术筛选标准

{
    "screen_type": "technical",
    "criteria": {
        "min_price": float,              # 最低股价
        "max_price": float,              # 最高股价
        "min_volume": int,               # 最低平均成交量
        "above_sma_200": bool,           # 股价高于200日SMA
        "above_sma_50": bool,            # 股价高于50日SMA
        "min_rsi": float,                # 最低RSI值
        以下省略...

基本面筛选标准

{
    "screen_type": "fundamental",
    "criteria": {
        "min_market_cap": float,         # 最低市值
        "min_pe": float,                 # 最低市盈率
        "max_pe": float,                 # 最高市盈率
        "min_dividend": float,           # 最低股息收益率(%)
        "min_revenue_growth": float,     # 最低收入增长率
        "category": str,                 # 可选:市值类别过滤器
        # ETF特定标准
        "min_aum": float,                # 最低资产管理规模
        "max_expense_ratio": float,      # 最高费用比率
        "min_volume": float              # 最低交易量
    },
    "watchlist": str,                    # 可选:要筛选的观察列表名称
    "save_result": str                   # 可选:保存结果的名称
}

期权筛选标准

{
    "screen_type": "options",
    "criteria": {
        "min_iv": float,                 # 最低隐含波动率(%)
        "max_iv": float,                 # 最高隐含波动率(%)
        "min_option_volume": int,        # 最低期权成交量
        "min_put_call_ratio": float,     # 最低持有/卖出比率
        "max_spread": float,             # 最大买入价/卖出价差(%)
        "min_days_to_earnings": int,     # 至少多少天后盈利
        "max_days_to_earnings": int,     # 最多多少天后盈利
        "category": str                  # 可选:市值类别过滤器
    },
    "watchlist": str,                    # 可选:要筛选的观察列表名称
    "save_result": str                   # 可选:保存结果的名称
}

新闻筛选标准

{
    "screen_type": "news",
    "criteria": {
        "keywords": List[str],           # 在新闻中搜索的关键字
        "exclude_keywords": List[str],    # 排除的关键字
        "min_days": int,                 # 向前搜索的最小天数
        "max_days": int,                 # 向前搜索的最大天数
        "management_changes": bool,       # 过滤管理层变动
        "require_all_keywords": bool,     # 要求所有关键字匹配
        "category": str                  # 可选:市值类别过滤器
    },
    "watchlist": str,                    # 可选:要筛选的观察列表名称
    "save_result": str                   # 可选:保存结果的名称
}

自定义筛选标准

{
    "screen_type": "custom",
    "criteria": {
        "category": str,                 # 可选:市值类别过滤器
        "technical": {
            # 上述任何技术标准
        },
        "fundamental": {
            # 上述任何基本面标准
        },
        "options": {
            # 上述任何期权标准
        },
        "news": {
            # 上述任何新闻标准
        }
    },
    "watchlist": str,                    # 可选:要筛选的观察列表名称
    "save_result": str                   # 可选:保存结果的名称
}

类别值

可用的市值类别过滤器:

  • "mega_cap": >2000亿美元
  • "large_cap": 100亿至2000亿美元
  • "mid_cap": 20亿至100亿美元
  • "small_cap": 3亿至20亿美元
  • "micro_cap": <3亿美元
  • "etf": ETF工具
  1. manage_watchlist
{
    "action": str,                       # 必需:"create", "update", "delete", "get"
    "name": str,                         # 必需:观察列表名称(1-50个字符,字母数字加_ -)
    "symbols": List[str]                 # 必需用于创建/更新:股票代码列表
}
  1. get_screening_result
{
    "name": str                          # 必需:已保存的筛选结果名称
}

响应格式

技术筛选响应

{
    "screen_type": "technical",
    "criteria": dict,                    # 原始使用的标准
    "matches": int,                      # 匹配的股票数量
    "results": [                         # 匹配的股票列表
        {
            "symbol": str,
            "price": float,
            "volume": float,
            "rsi": float,
            "sma_20": float,
            "sma_50": float,
            "sma_200": float,
            "atr": float,
            "atr_pct": float,
            "price_changes": {
                "1d": float,             # 1日价格变化%
                "5d": float,             # 5日价格变化%
                "20d": float             # 20日价格变化%
            },
            "ma_distances": {
                "pct_from_20sma": float,
                "pct_from_50sma": float,
                "pct_from_200sma": float
            }
        }
    ],
    "rejected": [                        # 未匹配的股票列表
        {
            "symbol": str,
            "rejection_reasons": List[str]
        }
    ],
    "timestamp": str
}

使用提示给Claude

“我已经启用了stockscreen工具,提供了股票筛选能力。您可以使用三个主要功能:

  1. 根据各种标准类型筛选股票:

    • 技术:价格、成交量、RSI、移动平均线、ATR
    • 基本面:市值、市盈率、股息、增长
    • 期权:隐含波动率、成交量、盈利日期
    • 自定义:结合多种标准类型
  2. 管理观察列表:

    • 创建和更新股票代码列表
    • 删除现有观察列表
    • 获取观察列表内容
  3. 访问保存的筛选结果:

    • 加载之前的筛选结果
    • 查看匹配的股票代码和标准

所有功能都包括错误处理、详细的市场数据和全面的响应。”

要求

  • Python 3.12+
  • MCP服务器
  • yfinance
  • pandas
  • numpy
  • asyncio

限制

  • 数据来源于Yahoo Finance,可能存在延迟
  • 根据Yahoo Finance API限制存在速率限制
  • 期权数据可用性取决于市场时间
  • 部分财务指标可能延迟或不可用

贡献

欢迎贡献!请随时提交Pull Request。

许可证

此项目采用MIT许可证 - 详情见LICENSE文件。

作者

Todd Wolven - (https://github.com/twolven)

致谢

  • 使用Anthropic的Model Context Protocol (MCP)构建
  • 数据由Yahoo Finance提供
  • 为Anthropic的Claude开发