Token导航 LogoToken导航TokenDH.com
Ibkr Terminal logo
数据服务未说明官方级别未说明来源级核验

Ibkr Terminal

MCP Server

一个基于Interactive Brokers的投资组合分析问答系统,通过自然语言处理技术提供实时投资组合分析、风险管理和市场数据查询功能。

工具数

31

提示词数

0

GitHub Stars

4

资源数

0
风险管理PythonClaude金融科技Claude

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

jeffbai996

提供方

jeffbai996

最后核验

2026/5/17 20:22

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

详细介绍

ibkr终端

一个MCP服务器,将盈透证券变成一个问答投资组合分析师。

用简单的英语问你的投资组合-- *“如果利率飙升100个基点,美元升值5%,我的书怎么能坚持下去?”* --LLM会选择合适的工具,将它们链接起来,并写出答案。32个只读分析工具,涵盖利润率、风险、市场数据和投资组合情报,在全球范围内公开 模型上下文协议.

此回购以 拆卸 --我为自己的交易构建和运行的系统的面向公众的服务器层。32个工具实现存在于一个私有包中,此处不包括在内。目的是展示这些零件的贴合度,我做了什么权衡,以及针对IBKR API的运输实际上是什么样子。看 状态 在......下面

Account dashboard, morning briefing, and 1-day parametric VaR — all from a single claude.ai prompt against the MCP. Consolidated NLV across two accounts, leverage and margin health bars, full position table with weights, allocation pie, top movers, leaders/laggards, cash posture, and VaR analysis.

______________________________________________________________________

它做什么

每个工具都做一件可组合的事情。该模型处理编排——拉取头寸、获取实时价格、模拟、分解、格式化。 *“早间简报”* 一次性获取头寸、损益表、利润率、主要推动者、论文一致性和地缘政治标志。跟进: *“如果我削减30%的最大头寸,转而持有第二大头寸,我的利润率和行业集中度会发生什么变化?”* --跑步 what_if, margin, sector_exposure 按顺序返回一个段落。

投资组合 头寸、损益、成本基础、集中度、多账户合并视图、股息。 边距 实时保证金分析,模拟,每符号效率(RegT与投资组合保证金)。 风险 使用自定义场景(利率、外汇、交易量、提款)、相关矩阵、参数VaR、提款跟踪器对高水位线进行压力测试。 市场数据 报价、历史柱状图、盘中、希腊期权链、技术指标(SMA/RSI/MACD/Bollinger)、合约搜索。 智能 货币敞口分解、行业敞口、再平衡计划、投资组合贝塔系数、头寸水平论文检查、地缘政治风险评分。 简报 一份即时的每日简报——头寸、损益、利润、主要推动者、论文状态、地缘政治旗帜。

所有这些都是只读的——没有订单,没有LLM自己亏损的表面积。

______________________________________________________________________

这如何改善财务模型的反应?

普通法学硕士不知道你的投资组合中有什么,你的杠杆率有多高,你的论文是什么,或者给定股票的当前买卖价差是多少。这些工具弥补了这一差距。实际响应形状的几个例子——被净化为虚构的股票代码:

ibkr_briefing --一次性投资组合快照

*“给我一个关于我主要账户的晨间简报。”*
# Briefing: U████████
_2026-05-03 17:17:44 UTC_

## Account Health
| Metric              | Value                |
|---------------------|----------------------|
| NLV                 | $24,618.00 CAD       |
| Gross Position Value| $64,124.00 CAD       |
| Leverage            | 2.61x                |
| Cushion             | 10.5% — OK (watch)   |
| Margin Utilization  | 98.4%                |
| Excess Liquidity    | $2,604.00 CAD        |

## Daily P&L
**Daily**: +$312.48 CAD (+0.02% of NLV)
**Unrealized**: +$2,603.00 CAD

## Positions
| Symbol | Shares | Price       | Value           | Daily P&L     | Weight |
|--------|--------|-------------|-----------------|---------------|--------|
| KRYX   |  340   | $54.18 USD  | $18,414 USD     | $-952 (-4.9%) | 38.1%  |
| VLTX   |  86    | $94.32 USD  | $8,112 USD      | $-892 (-1.1%) | 22.3%  |
| OMRA   |  76    | $120.10 USD | $9,128 USD      | +$256 (+2.9%) | 18.9%  |
| FELN   |  51    | $130.40 USD | $6,651 USD      | +$498 (+8.1%) | 14.4%  |
| HDRX   | 162    | $33.04 USD  | $5,353 USD      | +$309 (+6.1%) |  6.4%  |

## Risk Metrics
| Metric          | Value                |
|-----------------|----------------------|
| Top Position    | KRYX (38.1%)         |
| Top 3 Weight    | 79.3%                |
| HHI             | 2,432                |
| Position Count  | 5                    |

## Connection
**Status**: connected
**Last Data**: 2s ago

香草模型无法产生任何这些——NLV、缓冲、重量、每日损益都是实时的IBKR状态。工具聚合 accountSummary, portfolio,PnL订阅和连接健康状况合并为一个响应,因此模型可以在不扇出的情况下对整个画面进行推理。

ibkr_thesis_check --这个消息威胁到我的论文了吗?

*“请对照我的论点:‘AcmeCorp预计下一季度平台收入将比超大规模定制硅订单的共识高出12%;云业务量将攀升至下半年。首席财务官称基础设施支出为多年结构性支出。’”*
# Thesis Check: Platform Buildout
**Overall**: 🟢 THESIS INTACT

### End-market demand growth                     🟢 INTACT
### Major-customer capex trajectory              🟢 INTACT
### Competitive threat (emerging entrants)       🟢 INTACT
### Cycle positioning                            🟢 INTACT
### Revenue materialization                      🟢 INTACT

_Keyword check against invalidation/confirmation signals defined
in thesis_config.json. For nuance, use this as context in chat._

用户拥有 thesis_config.json --支柱、失效信号、确认信号。tool关键字将传入的新闻与用户的 *拥有* 框架。这是一个故意愚蠢的第一通滤波器;该模型采用判决+新闻,并编写实际推理。表面上的结构胜过把原始消息交给模型并问“这不好吗?”

ibkr_quote --实时多符号比较

*“引用苹果、微软、谷歌、亚马逊、特斯拉的话。”*
# Symbol Comparison

| Symbol | Last      | Change     | Change %  | Volume       |
|--------|-----------|------------|-----------|--------------|
| AAPL   | $198.12   | -$1.91     |  -0.95%   | 99,909,074   |
| MSFT   | $420.27   | +$5.88     |  +1.42%   |  9,224,500   |
| GOOGL  | $255.97   | -$0.41     |  -0.16%   |  5,181,434   |
| AMZN   | $182.41   | +$2.18     |  +1.21%   | 34,254,734   |
| TSLA   | $238.05   | -$3.42     |  -1.42%   | 22,590,382   |

实时IBKR市场数据,支持延长时间回退。单符号形式返回买入/卖出/点差;multi-symbol返回比较表。实时报价是表桩功能,使其他工具能够将其分析作为基础 *现在*不是昨天的收盘价。

ibkr_what_if --纸品交易保证金模拟

*“如果我购买100韩元,我的保证金会怎么样?”*
# What-If: BUY 100 KRYX
Account: U████████

## Current State
**Equity**:           $24,618.00 CAD
**Initial Margin**:   $24,201.34 CAD
**Maint Margin**:     $22,012.81 CAD
**Excess Liquidity**:  $2,604.66 CAD

## Post-Trade Estimate
**Equity**:           $24,617.51 CAD
**Initial Margin**:   $24,201.34 CAD
**Maint Margin**:     $22,012.81 CAD
**Excess Liquidity**:    $415.83 CAD

## Margin Impact
**Init Margin Additional**:   $0.00 CAD
**Maint Margin Additional**:  $0.00 CAD
**Equity Change**:           $-0.49 CAD

没有IBKR,该模型无法模拟纸质订单 whatIfOrder API这将通过网关的保证金引擎路由虚假订单,返回交易后状态,模型可以回答 *“这笔交易会让我追加保证金吗?”* 对于实数,没有下订单,没有什么东西是只读的。

ibkr_stress_test --缩编生存能力

*“如果投资组合下跌20%,我的利润会怎么样?”*
# Stress Test: -20.00% Drawdown
Account: U████████

## Current State
**NLV**:              $24,618.00 CAD
**Cushion**:          +10.54%

## After -20.00% Drawdown (estimated)
**Estimated Loss**:   $-14,127.40 CAD
**Stressed NLV**:     $10,490.60 CAD
**Stressed Excess (Maint)**:  $-7,693.16 CAD

## Survivability
**Max DD before buying power restricted**: ~1.0%
**Max DD before forced liq**:              ~4.0%

⚠️ BUYING POWER RESTRICTED: a 20% drawdown breaches initial
   margin by $9,498.32 CAD.
🚨 FORCED LIQUIDATION:     a 20% drawdown breaches maintenance
   margin by $7,693.16 CAD.

_Approximation. Real margin requirements may increase during
drawdowns as volatility rises._

如果没有投资组合边际背景,这是模型根本无法猜测的问题。它通过以1%的增量逐步模拟并观察保证金比率何时超过阈值来计算购买力限制和强制清算的盈亏平衡提款,从而在经纪人介入之前显示账簿实际有多少“空间”。

ibkr_correlation_matrix --另一个名称的集中风险

*“我的职位真的多样化了吗?”*
# Correlation Matrix (60D)
Account: U████████

|       | KRYX | VLTX | OMRA | FELN | HDRX |
|-------|-----:|-----:|-----:|-----:|-----:|
| KRYX  | 1.00 | 0.59 | 0.57 | 0.36 | 0.18 |
| VLTX  | 0.59 | 1.00 | 0.56 | 0.49 | 0.29 |
| OMRA  | 0.57 | 0.56 | 1.00 | 0.71 | 0.35 |
| FELN  | 0.36 | 0.49 | 0.71 | 1.00 | 0.31 |
| HDRX  | 0.18 | 0.29 | 0.35 | 0.31 | 1.00 |

**Highest correlation**: OMRA/FELN = 0.71
**Lowest correlation**:  KRYX/HDRX = 0.18
**Average pairwise correlation**: 0.44
**Data points**: 60 daily returns

五个不同行业的五个股票行情仍然可以是一个单一的赌注。该矩阵直接从IBKR中提取每个位置60天的每日条形图,成对计算皮尔逊相关性,并告诉你哪个“多样化”是真实的,哪个是戏剧。平均成对>0.7意味着你实际上是在用额外的步幅完成一个位置。

______________________________________________________________________

建筑

此回购是 服务器层 -传输、生命周期、仪表板REST API。32种工具实现和共享基础设施(core/, tools/)住在私人包裹里, ibkr-terminal-core,在运行时作为可编辑依赖项安装。

┌──────────────────────────────┐         ┌──────────────────────────────┐
│  ibkr-terminal (this repo)   │         │ ibkr-terminal-core (private) │
│                              │         │                              │
│  server.py     stdio / MCP   │         │  core/                       │
│  server_http   streamable    │         │    connection · cache · calc │
│  app.py        FastMCP       │ ◄─────► │    formatting · persistence  │
│  dashboard.py  REST endpoints│ imports │    errors                    │
│  config.py     env vars      │         │                              │
│  tests/        transport     │         │  tools/   9 modules          │
└──────────┬───────────────────┘         │    account · briefing        │
           │                             │    portfolio · market_data   │
           │  ib_insync                  │    live_data · risk          │
           ▼                             │    intelligence · monitoring │
┌──────────────────────────────┐         │    orders                    │
│   IB Gateway / TWS           │         │                              │
│   primary + optional 2nd     │         │  → 32 tools, registered      │
└──────────────────────────────┘         │    on app.mcp via @mcp.tool  │
                                         └──────────────────────────────┘

两个运输工具,一个工具表面。 server.py 在stdio上运行本地Claude代码。 server_http.py 通过claude.ai和任何远程MCP客户端的可流式HTTP运行。两者共享 app.py的FastMCP实例——工具注册一次,可在任何地方访问。 server_http.py 互换 app.mcp 具有HTTP配置的实例 *之前* 导入工具模块,以便 @mcp.tool() 装饰人员对正确的运输方式进行了抨击。

仪表板侧车。 dashboard.py 寄存器 /api/* 路线通过 @mcp.custom_route() 在同一个Starlette应用程序上——Vite前端的REST端点(位置、摘要、FX、技术、历史),与MCP协议从同一端口提供服务。前端位于一个单独的仓库中。

______________________________________________________________________

为什么它是这样建造的

为什么选择FastMCP而不是原始MCP。 装饰器驱动的工具注册(@mcp.tool())使工具定义与其输入模式(Pydantic模型)位于同一位置。9个文件中的32个工具意味着另一种选择——手动连接处理器——将是一个维护坑。FastMCP的痛苦在于它的生命周期模型在不同的传输方式之间有所不同(stdio为单次射击,HTTP为每次会话),这迫使了下面的拆分。

为什么后台重新连接循环而不是按需连接。 IB网关每天断开连接以自动重启,当用户从另一台机器登录TWS时,会话会中断,并在空闲TCP超时时自动终止(更多信息见下文)。这种天真的方法——在生命周期内连接,如果关闭则请求失败——意味着在5分钟的停机期间,每个面向用户的提示都返回了一个错误。重新连接循环每30秒运行一次,拥有锁,在中断期间击中它的工具通过带有过时横幅的缓存层优雅地降级。寿命永远不会中断。

为什么是无状态HTTP。 Claude Code(当时是一个有缺陷的版本)正在缓存死会话ID,并且从未重新初始化。claude.ai在重叠的SSE流上驾驶409赛车。无状态模式——每个请求都是独立的,没有会话ID,没有GET SSE——修复了这两者。安全,因为所有真实状态都存在于网关中,而不是MCP中。

为什么都是只读的。 这个模型很好。它不是那么好,我希望它在没有人参与的情况下下单。IBKR API具有订单处理原语;此服务器不会公开它们。仪表板仅将它们显示为日志/历史视图(ibkr_trades, ibkr_get_orders)--读,不写。

为什么要单独的仪表板前端仓库。 MCP服务器是真理的来源;仪表板是它的一个消费者。将它们分开意味着前端可以迭代而无需重建服务器,服务器也不会长出Vite/Node形状的触手。

为什么是私有核心包。 当这是一个单一的回购时,工具层每隔一天就会随着投资组合特定的校准(论文支柱、行业映射、风险因素、损益阈值)而变化。(头痛)欲裂的 core/tools/ 将面向公众的服务器整合到一个私有包中,使其在拆卸时稳定下来,而不会泄露我的实际书籍或使分析对以下方面有用的校准 *我的* 交易风格。

______________________________________________________________________

刀具目录

9个模块中的32个工具。实现是私有的;这里记录了曲面,这样你就可以看到模型必须使用什么。Account组在下面;展开查看完整列表。

工具目的
账户
ibkr_get_account_summaryNLV、GPV、现金、购买力、保证金、缓冲、杠杆
ibkr_margin呼叫余量距离、每符号效率、净空(3种模式)
ibkr_list_accounts所有已连接的帐户,标记为主要/次要帐户
ibkr_get_account_pnl通过PnL订阅实现的每日已实现+未实现损益
ibkr_consolidated_view带FX转换的跨网关聚合

Show all 32 tools — Briefing, Portfolio, Market data, Live data, Risk, Intelligence, Monitoring, Orders

工具目的
简报
ibkr_briefing9节早间简报(健康、损益、头寸、推动者、风险、警报、订单、外汇、连接)
ibkr_geopolitical_risk实时新闻搜索已筛选至持有的职位,并进行了严重性评级
ibkr_thesis_check根据支柱论文对新闻项目的判决
投资组合
ibkr_get_positions带有成本基础、损益和权重的位置表
市场数据
ibkr_quote报价工具(投资组合模式/单品种详细信息/2-8品种比较)
ibkr_get_historical_bars具有可配置持续时间、条大小、数据类型、RTH的OHLCV条
ibkr_get_contract_details长名称、行业、交易所、报价单大小、交易类别
ibkr_get_option_chain到期+ATM罢工,或与希腊人接近ATM的通话/看跌
ibkr_dividends单次股息/投资组合日历/年收入估算
ibkr_search_contracts按符号或公司名称发现合同
实时数据
ibkr_get_fx_rate实时外汇对定价、点差、每日变化
ibkr_get_intraday最后N分钟的1分钟酒吧(最多120个)
ibkr_compare_performanceN个符号的相对绩效记分卡
ibkr_technicalsSMA/RSI/MACD/布林线1年内每日
风险
ibkr_what_if通过以下方式模拟利润率影响 whatIfOrder()
ibkr_correlation_matrix成对相关性,60或252个交易日
ibkr_portfolio_beta按头寸和加权贝塔系数与基准
ibkr_stress_test飞行前/下降曲线/隔夜缺口(3种情况)
智能
ibkr_sector_exposure行业集中度与HHI、ETF回退映射
ibkr_currency多币种风险敞口分解
ibkr_position_detail深入探讨——成本基础、重量、损益、利润率、技术指标、近期柱状图
ibkr_rebalance_plannerSYM:PCT 求解器——当前与目标、行动、股票、美元
监控
ibkr_drawdown_tracker从峰值NLV(SQLite支持的历史)中减少
ibkr_connection_status每个网关TCP/数据新鲜度/事件日志
订单
ibkr_trades填充/日记账/已实现收益/已完成(4种查看模式)
ibkr_get_orders未结订单快照

______________________________________________________________________

堆栈

Python 3.11+· mcp (快速MCP)· ib_insync · pydantic · uvicorn · httpx · yfinance (当IB市场数据子不可用时,仪表板回退)·用于NLV历史的SQLite·使用模拟IB进行pytest。

______________________________________________________________________

状态

此仓库是公共服务器层。32个工具实现和共享基础设施位于一个私有包中(ibkr-terminal-core)并且是 未重新分配因此,此仓库中的代码不能独立运行——它是作为拆解/案例研究发布的,而不是作为fork and run项目发布的。

如果你想构建类似的东西 战争故事建筑 这些零件值得偷。

______________________________________________________________________

许可证

专有——见 许可证代码以拆解/参考的形式发布,不用于生产。重新分发和衍生作品需要书面同意。

目录标签

目录标签

风险管理PythonClaude金融科技投资组合分析本地部署市场数据查询自然语言处理

支持客户端

Claude

接入字段

传输方式(transport,传输协议)

未说明

鉴权方式(authType,认证方式)

none

工具数量(toolCount,工具数)

31

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

未说明none部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

仍需确认:installCommand

来源信息

继续浏览同类 MCP