关于 Market Microstructure & Manipulation Detection
该 MCP 服务面向量化研究人员、合规团队和算法交易者,结合金融数据源与计量方法分析市场微观结构、识别操纵模式。它提供 8 种分析工具,并支持并行获取数据。
主要功能
- 01估计订单簿动态与 Hawkes 过程
- 02检测欺诈模式并分类市场状态
- 03分析跨资产信息流与因果关系
- 04分解买卖价差及异常交易流
- 05优化监控资源分配
- 06并行汇集 14 个数据源
适用场景
- 01识别订单流中的欺诈与分层行为
- 02研究跨资产价格发现和信息传导
- 03将市场状态用于组合风险管理
- 04为监管监控分配有限预算
MCP 相关
该 MCP 服务向兼容客户端公开 8 种金融分析工具,返回基于实时数据的结构化分析结果。客户端可通过 MCP 连接其远程端点。
配置
远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。
https://ryanclinton--market-microstructure-manipulation-mcp.apify.actor/mcpclaude mcp add --transport http market-microstructure-manipulation https://ryanclinton--market-microstructure-manipulation-mcp.apify.actor/mcp{"mcpServers":{"market-microstructure-manipulation":{"type":"http","url":"https://ryanclinton--market-microstructure-manipulation-mcp.apify.actor/mcp"}}}在 Cursor 中打开{"servers":{"market-microstructure-manipulation":{"type":"http","url":"https://ryanclinton--market-microstructure-manipulation-mcp.apify.actor/mcp"}}}在 VS Code 中打开{"mcpServers":{"market-microstructure-manipulation":{"type":"http","url":"https://ryanclinton--market-microstructure-manipulation-mcp.apify.actor/mcp"}}}{"mcpServers":{"market-microstructure-manipulation":{"serverUrl":"https://ryanclinton--market-microstructure-manipulation-mcp.apify.actor/mcp"}}}命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。
工具
详细介绍
Market Microstructure & Manipulation MCP
快速开始
添加到你的 MCP 客户端(Claude Desktop、Cursor、Windsurf):
{
"mcpServers": {
"market-microstructure-manipulation-mcp": {
"url": "https://ryanclinton--market-microstructure-manipulation-mcp.apify.actor/mcp"
}
}
}
通过一个可并行调度 14 个金融数据工具的 MCP 服务,进行市场微观结构分析和操纵检测。专为量化研究人员、合规团队和算法交易员打造,提供生产级计量经济学方法——Hawkes 过程、BOCPD、谱转移熵、Granger 因果关系和博弈论监控优化,无需管理基础设施。
将任意兼容 MCP 的 AI 客户端连接到服务,即可分析订单簿动态、检测虚假挂单和分层挂单、衡量跨资产信息流、分解买卖价差、识别异常内幕交易流、发现因果操纵网络、分类市场状态并优化监控资源分配。全部八种工具均基于从 Finnhub、SEC EDGAR、SEC 内幕交易申报、国会议员股票交易披露、CoinGecko、ECB 利率、FRED、BLS 等来源汇集的实时数据运行。
可以访问哪些数据?
| 数据点 | 来源 | 覆盖范围 |
|---|---|---|
| 📈 股票价格和财务数据 | Finnhub | 美国股票、报价、财报、公司指标 |
| 📋 SEC 监管申报文件 | EDGAR | 10-K、10-Q、8-K、执法行动 |
| 👤 内幕交易 | SEC Form 4 | 高管和董事买入、卖出、行使期权 |
| 🏛️ 国会议员股票交易 | STOCK Act tracker | 参议院和众议院议员交易披露 |
| 🪙 加密货币市场 | CoinGecko | 10,000 多种币种、价格、成交量、市值 |
| 💱 货币汇率 | Exchange Rate Tracker | 150 多种实时货币对 |
| 🇪🇺 ECB 参考汇率 | ECB Exchange Rates | 用于外汇微观结构分析的每日 EUR 参考汇率 |
| 📉 美联储指标 | FRED | FEDFUNDS、VIX、GDP、宏观经济时间序列 |
| 📊 劳动力市场统计数据 | BLS | 用于市场状态分析的 CPI、失业率、PPI |
| 📰 联邦法规 | Federal Register | SEC 和 CFTC 的规则制定及执法命令 |
| 💬 科技社区信号 | Hacker News | 与市场相关的科技和金融讨论 |
| 🔍 网站变更监控 | Website Change Monitor | 监管和公司网页更新 |
| 📩 消费者投诉 | CFPB | 金融产品投诉趋势 |
| 📅 历史汇率 | Exchange Rate History | 用于趋势分析的长期外汇时间序列 |
为什么使用 Market Microstructure & Manipulation MCP?
从头构建市场监控基础设施,需要接入 10 多个金融 API,实现 BOCPD、Hawkes 过程、VECM 协整和博弈论线性规划求解器,还要随着 API 的变化持续维护。大多数学术实现都在本地运行,需要 Python 环境,而且在生产环境中容易出故障。
这个 MCP 服务帮你处理所有这些工作。从 Claude、Cursor 或任意 MCP 客户端发送自然语言查询,即可获得基于实时金融数据和经同行评审的计量经济学方法生成的结构化分析结果。
- 定时调度——按周期运行夜间操纵扫描和市场状态检查,检测新出现的模式
- API 访问——通过 Apify API,从 Python、JavaScript 或任意 HTTP 客户端以编程方式触发运行
- 并行获取数据——每次工具调用最多可并行执行 8 个工具,在几秒而非几分钟内汇集市场数据
- 监控——通过 Webhook,在检测到虚假挂单或发生市场状态转换时接收 Slack 或电子邮件提醒
- 集成——连接 Zapier、Make 或任意兼容 Webhook 的服务,自动发送监控通知
功能
- 队列响应型 Hawkes 过程估计 — 通过 EM 算法和 E/M 步迭代估计多维强度 lambda_d(t) = mu_d + sum alpha_{dd'} exp(-beta(t-s));通过幂迭代计算 alpha/beta 矩阵的谱半径作为分支比(收敛需迭代 100 次)
- 贝叶斯在线变点检测(BOCPD) — 使用正态-逆伽马共轭先验和恒定风险函数维护运行长度后验 P(r_t | x_{1:t});将检测到的变点分为 4 种操纵模式:分层挂单、虚假挂单、洗售交易、动量引爆
- 频谱传递熵 — 根据资产对的 AR 频谱估计计算有向信息流 TE(f) = 1/(4pi) ln(S_Y(f)/S_{Y|X}(f));识别哪些市场领先,哪些市场跟随
- Johansen VECM 与 Hasbrouck 信息份额 — 通过向量误差修正模型的创新协方差矩阵的 Cholesky 分解,归因价格发现
- MRR 价差分解 — Madhavan-Richardson-Roomans 模型将买卖价差分解为逆向选择、库存成本和订单处理成本;通过对带符号订单流进行 OLS 回归计算 Kyle lambda
- Roll 指标和 Amihud 非流动性指标 — 根据收益自协方差推导 Roll 指标;Amihud 比率衡量单位交易量的价格冲击
- 事件研究 CAR 方法 — 在内幕交易和国会交易前后 [-5, +30] 事件窗口内计算累计异常收益;使用 t 统计量检验显著性;基于 HHI 的信息份额集中度
- LASSO 惩罚的 Granger 因果关系 — 使用带软阈值的坐标下降法选择相关 VAR 滞后项;计算带置信区间的去偏系数;使用 F 统计量进行 Granger 因果关系检验
- Student-t 隐马尔可夫模型 — 4 状态 HMM(平静、波动、危机、复苏),采用重尾 Student-t 发射分布;使用 EM 前向-后向算法估计参数;使用 Viterbi 算法解码 MAP 路径
- 扩展式博弈论 — 将监管者与操纵者建模为零和博弈;通过虚拟博弈计算纳什均衡(迭代 200 次);输出最优预算分配、博弈价值、检测概率和威慑效果
- 高斯消元线性求解器 — 使用部分选主元法,为 OLS 和博弈论计算提供数值稳定的解
- 14 个并行数据源 — Finnhub、CoinGecko、SEC EDGAR、SEC insider、congressional tracker、exchange rates、ECB、FRED、BLS、Federal Register、Hacker News、website monitor、CFPB、exchange rate history
市场微观结构分析用例
量化研究与 HFT 策略评估
测试高频策略的量化研究人员需要在实盘交易前了解订单簿动态。simulate_order_book_dynamics 工具根据真实市场数据估计 Hawkes 过程参数,并返回分支比和临界性指数。分支比接近 1.0 表示市场接近自激临界状态——在这种状态下,HFT 策略面临反身性风险。只需调用一次工具,即可取代数周的自定义数据管道开发工作。
合规与市场监控
经纪交易商和交易所的合规团队需要持续监控虚假挂单和分层挂单行为。detect_spoofing_manipulation 工具使用 BOCPD 检测订单流中的变点,按操纵类型分类,并返回带置信度评分的警报。将这些输出发送到每日 webhook,即可建立自动化监控管道,无需承担专有监控系统的成本。
监管经济学与执法研究
调查操纵案件的监管机构和执法经济学家需要追踪市场变量之间的因果关系。discover_manipulation_causality 工具使用带 LASSO 惩罚的 Granger 因果检验、F 统计量和去偏系数,返回带有 p 值的有向因果网络。结合 identify_insider_abnormal_flow 工具,可构建证据包,追踪信息泄露如何从内幕交易传导至价格变动。
投资组合风险管理与市场状态配置
使用因子模型的投资组合经理需要先了解当前市场状态,再确定头寸规模。classify_market_regimes 工具使用 Student-t HMM,将当前市场状况划分为平静、波动、危机或复苏,并返回状态转移概率和预期持续时间。这些结果可直接用于波动率目标配置框架。
跨资产价格发现研究
研究跨资产类别信息传递的学术研究人员可以使用 measure_cross_asset_information,同时量化股票、加密货币和外汇市场中的定向传递熵与 Hasbrouck 信息份额。谱分解可识别信息流量最大的频率。
监控预算优化
执法预算有限的监管机构需要合理分配资源,以实现最大威慑效果。optimize_surveillance_strategy 工具将监管机构与操纵者之间的互动建模为扩展式零和博弈,计算纳什均衡下的行动概率,并返回最优预算分配方案,以及检测概率和威慑效果估算值。
如何使用 Market Microstructure & Manipulation MCP
- 获取 Apify API 令牌 — 在 apify.com 注册,并从 Account Settings 复制令牌。免费计划每月包含 $5 额度。
- 将 MCP 服务添加到客户端 — 将服务 URL 粘贴到 MCP 客户端配置中(见下方连接示例)。无需安装软件。
- 发送市场查询 — 向 AI 客户端提出类似“分析 AAPL 是否存在虚假挂单模式”或“判断当前加密货币市场状态”的问题。服务会将查询路由至相应工具。
- 获取结构化分析 — 返回结果为结构化 JSON,包含算法输出、置信度指标、预警分类,以及来自实时数据源的市场数据。
MCP 工具
| 工具 | 价格 | Actors | 描述 |
|---|---|---|---|
simulate_order_book_dynamics | $0.045 | 4 | Hawkes 过程估计,包含分枝比率、临界性指数和队列不平衡 |
detect_spoofing_manipulation | $0.050 | 6 | 基于 BOCPD 的虚假挂单检测,包含操纵模式分类和置信度评分 |
measure_cross_asset_information | $0.040 | 5 | 基于 Johansen VECM 的谱传递熵和 Hasbrouck 信息份额 |
decompose_spread_components | $0.035 | 3 | MRR 价差分解:逆向选择、库存、订单处理、Kyle lambda |
identify_insider_abnormal_flow | $0.045 | 4 | 针对内幕交易和国会议员交易的 CAR 事件研究 [-5,+30],包含 t 统计量 |
discover_manipulation_causality | $0.040 | 5 | LASSO Granger 因果网络,包含 F 统计量、p 值和去偏系数 |
classify_market_regimes | $0.035 | 4 | 带 Viterbi 路径的 Student-t HMM:平静、波动、危机、复苏状态分类 |
optimize_surveillance_strategy | $0.040 | 8 | 扩展式博弈论:纳什均衡下的监控预算分配 |
工具参数
每个工具都接受相同的两个参数,由 MCP 客户端在调用时传入:
| 参数 | 类型 | 必填 | 默认值 | 描述 |
|---|---|---|---|---|
query | string | 是 | — | 市场查询:股票代码、资产类别、行业或公司名称(例如“ AAPL”、“crypto”、“energy sector”、“Nancy Pelosi”) |
max_results | number | 否 | 40–50 | 每个 actor 获取的最大结果数。适用于 simulate_order_book_dynamics 和 measure_cross_asset_information。调低此值可加快查询并降低成本。 |
hazard_lambda | number | 否 | 100 | BOCPD 中变点之间的预期运行长度。适用于 detect_spoofing_manipulation。值越高,检测到的变点越少,置信度越高。 |
连接提示
- 从
classify_market_regimes开始 — 这是成本最低的工具($0.035),可在运行成本更高的分析之前,立即了解当前市场状况。 - 先运行
detect_spoofing_manipulation,再运行optimize_surveillance_strategy— 监控策略优化器会在内部运行 BOCPD 和 HMM 作为前置步骤,因此这些工具可共用数据获取成本。 - 根据使用场景调整
hazard_lambda— 每周扫描市场状态时使用hazard_lambda: 200可减少误报;日内监控时使用hazard_lambda: 50可提高敏感度。 - 按资产类别批量查询 — 查询“US tech sector”比单独查询“MSFT”返回更广泛的多个股票代码数据,让跨资产工具提供更有价值的信息。
如何连接此 MCP 服务
Claude Desktop
添加到你的 claude_desktop_config.json:
{
"mcpServers": {
"market-microstructure-manipulation": {
"url": "https://market-microstructure-manipulation-mcp.apify.actor/mcp",
"headers": {
"Authorization": "Bearer YOUR_APIFY_TOKEN"
}
}
}
}
Cursor、Windsurf 或 Cline
将服务 URL 添加到 MCP 设置面板:
https://market-microstructure-manipulation-mcp.apify.actor/mcp
将 Authorization 标头设为 Bearer YOUR_APIFY_TOKEN。
Python
import anthropic
import json
client = anthropic.Anthropic()
# The MCP server connects via the Apify Standby URL
# Use with Claude or any MCP-compatible framework
# Direct HTTP call example
import urllib.request
payload = json.dumps({
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": "detect_spoofing_manipulation",
"arguments": {
"query": "AAPL",
"hazard_lambda": 100
}
},
"id": 1
}).encode()
req = urllib.request.Request(
"https://market-microstructure-manipulation-mcp.apify.actor/mcp",
data=payload,
headers={
"Content-Type": "application/json",
"Authorization": "Bearer YOUR_APIFY_TOKEN"
}
)
with urllib.request.urlopen(req) as response:
result = json.loads(response.read())
tool_result = json.loads(result["result"]["content"][0]["text"])
print(f"Detected: {tool_result['totalDetected']} manipulation events")
print(f"Changepoints: {tool_result['changepointCount']}")
for alert in tool_result.get("alerts", []):
print(f" [{alert['pattern']}] {alert['asset']} confidence={alert['confidence']:.2f}")
JavaScript
const payload = {
jsonrpc: "2.0",
method: "tools/call",
params: {
name: "classify_market_regimes",
arguments: { query: "SPY crypto macro" }
},
id: 1
};
const response = await fetch(
"https://market-microstructure-manipulation-mcp.apify.actor/mcp",
{
method: "POST",
headers: {
"Content-Type": "application/json",
"Authorization": "Bearer YOUR_APIFY_TOKEN"
},
body: JSON.stringify(payload)
}
);
const data = await response.json();
const result = JSON.parse(data.result.content[0].text);
console.log(`Current regime: ${result.currentRegime}`);
console.log(`Stationary distribution:`, result.stationaryDistribution);
console.log(`Expected durations:`, result.expectedDuration);
for (const regime of result.regimes.slice(0, 3)) {
console.log(` ${regime.regime}: prob=${regime.probability.toFixed(3)}, vol=${regime.volatility.toFixed(4)}`);
}
cURL
# Detect spoofing on a specific ticker
curl -X POST "https://market-microstructure-manipulation-mcp.apify.actor/mcp" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_APIFY_TOKEN" \
-d '{
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": "detect_spoofing_manipulation",
"arguments": {
"query": "AAPL",
"hazard_lambda": 100
}
},
"id": 1
}'
# Decompose bid-ask spread
curl -X POST "https://market-microstructure-manipulation-mcp.apify.actor/mcp" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_APIFY_TOKEN" \
-d '{
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": "decompose_spread_components",
"arguments": { "query": "SPY" }
},
"id": 2
}'
# List all available tools
curl -X POST "https://market-microstructure-manipulation-mcp.apify.actor/mcp" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_APIFY_TOKEN" \
-d '{"jsonrpc":"2.0","method":"tools/list","params":{},"id":3}'
输出示例
detect_spoofing_manipulation 输出
{
"totalDetected": 3,
"changepointCount": 7,
"maxRunLength": 42,
"falsePositiveRate": 0.082,
"alerts": [
{
"timestamp": 1711027200000,
"asset": "AAPL",
"pattern": "layering",
"confidence": 0.87,
"runLength": 12,
"hazardRate": 0.01,
"posteriorChangeProb": 0.923
},
{
"timestamp": 1711040400000,
"asset": "AAPL",
"pattern": "momentum_ignition",
"confidence": 0.74,
"runLength": 5,
"hazardRate": 0.01,
"posteriorChangeProb": 0.761
}
]
}
classify_market_regimes 输出
{
"currentRegime": "volatile",
"transitionMatrix": [
[0.92, 0.06, 0.01, 0.01],
[0.08, 0.81, 0.09, 0.02],
[0.02, 0.11, 0.84, 0.03],
[0.04, 0.08, 0.05, 0.83]
],
"stationaryDistribution": [0.38, 0.31, 0.18, 0.13],
"expectedDuration": {
"calm": 12.5,
"volatile": 5.3,
"crisis": 6.3,
"recovery": 5.9
},
"regimeCount": 4,
"viterbiPath": ["calm", "calm", "volatile", "volatile", "crisis", "recovery"],
"regimes": [
{
"period": "2024-03-21",
"regime": "volatile",
"probability": 0.81,
"mean": -0.0012,
"volatility": 0.0184,
"degreesOfFreedom": 4.2
}
]
}
decompose_spread_components 输出
{
"averageSpread": 0.00312,
"averageLambda": 0.00847,
"rollMeasure": 0.00154,
"amihudIlliquidity": 0.000213,
"components": [
{
"asset": "AAPL",
"adverseSelection": 0.00142,
"inventoryCost": 0.00089,
"orderProcessing": 0.00081,
"totalSpread": 0.00312,
"kyleLambda": 0.00847,
"informedFraction": 0.454
}
]
}
identify_insider_abnormal_flow 输出
{
"significantCount": 4,
"averageCAR": 0.0312,
"informationShareConcentration": 0.641,
"totalFlows": 12,
"flows": [
{
"insider": "Timothy D. Cook",
"asset": "AAPL",
"tradeDate": "2024-03-15",
"cumulativeAbnormalReturn": 0.0847,
"tStatistic": 2.94,
"eventWindow": [-5, 30],
"informationShare": 0.182
}
]
}
输出字段
simulate_order_book_dynamics
| 字段 | 类型 | 描述 |
|---|---|---|
branchingRatio | number | alpha/beta 矩阵的谱半径。值 >0.9 表示接近临界状态 |
criticalityIndex | number | 与临界边界的距离(0=稳定,1=临界) |
queueImbalance | number | 买盘深度减去卖盘深度后,再除以总深度所得的值 |
meanIntensity | number[] | 各维度的平均事件强度 |
kernelNorms | number[][] | Hawkes 核 L1 范数的 DxD 矩阵 |
hawkesParams.mu | number[] | 各维度的基准强度 |
hawkesParams.branchingRatio | number | 根据 EM 估计参数得出的分枝比 |
hawkesParams.logLikelihood | number | 估计的 Hawkes 模型的对数似然 |
snapshotCount | number | 分析的订单簿快照数 |
snapshots | OrderBookState[] | 最多包含 10 个订单簿状态,含买卖盘深度、中间价、价差和失衡情况 |
detect_spoofing_manipulation
| 字段 | 类型 | 描述 |
|---|---|---|
totalDetected | number | 分类出的操纵事件数 |
changepointCount | number | 检测到的 BOCPD 变点总数 |
maxRunLength | number | 变点之间最长的稳定运行长度 |
falsePositiveRate | number | 估计的误报率 |
alerts[].timestamp | number | 检测到的事件的 Unix 毫秒时间戳 |
alerts[].asset | string | 与警报相关的资产代码 |
alerts[].pattern | string | 以下其中一种:layering、spoofing、wash_trading、momentum_ignition |
alerts[].confidence | number | 分类置信度 [0,1] |
alerts[].runLength | number | 变点处的运行长度 |
alerts[].posteriorChangeProb | number | 此处发生状态变化的后验概率 |
measure_cross_asset_information
| 字段 | 类型 | 描述 |
|---|---|---|
totalInformationFlow | number | 所有资产对之间定向传递熵的总和 |
dominantFrequency | number | 携带最多信息流的频率 |
hasbrouckShare | Record<string, number> | 各资产的价格发现归因份额 |
channels[].source | string | 信息流资产对中的源资产 |
channels[].target | string | 接收信息的目标资产 |
channels[].spectralTE | number | 谱传递熵值 |
channels[].peakFrequency | number | TE 达到峰值时的频率 |
channels[].significance | number | 该通道的统计显著性 |
channels[].lag | number | 估计的领先—滞后期数 |
decompose_spread_components
| 字段 | 类型 | 描述 |
|---|---|---|
averageSpread | number | 所分析资产的平均买卖价差 |
averageLambda | number | Kyle lambda(价格冲击系数)的均值 |
rollMeasure | number | 根据收益自协方差计算的 Roll 指标 |
amihudIlliquidity | number | Amihud 非流动性比率 |
components[].adverseSelection | number | 价差中的逆向选择成分 |
components[].inventoryCost | number | 库存持有成本成分 |
components[].orderProcessing | number | 订单处理成本成分 |
components[].kyleLambda | number | 每单位带符号订单流的价格冲击 |
components[].informedFraction | number | 知情交易者的估计比例 |
identify_insider_abnormal_flow
| 字段 | 类型 | 描述 |
|---|---|---|
significantCount | number | t 统计量超过显著性阈值的资金流数量 |
averageCAR | number | 所有资金流的平均累计异常收益 |
informationShareConcentration | number | 信息份额的 HHI(0 = 分散,1 = 集中) |
flows[].insider | string | 内部人士或国会议员的姓名 |
flows[].cumulativeAbnormalReturn | number | 事件窗口 [-5, +30] 内的 CAR |
flows[].tStatistic | number | 用于检验 CAR 显著性的 t 统计量 |
flows[].eventWindow | [number, number] | 相对于交易日期的事件窗口边界(天) |
flows[].informationShare | number | 该资金流对应的价格发现份额 |
discover_manipulation_causality
| 字段 | 类型 | 描述 |
|---|---|---|
networkDensity | number | 显著因果链接占所有可能因果链接的比例 |
lassoSelectedCount | number | 经 LASSO 软阈值处理后保留的链接数量 |
strongestLink | CausalLink or null | Granger F 统计量最高的链接 |
links[].cause | string | 驱动因果关系的变量 |
links[].effect | string | 接收因果影响的变量 |
links[].grangerFStat | number | Granger 因果检验的 F 统计量 |
links[].pValue | number | Granger 因果检验的 p 值 |
links[].debiasedCoeff | number | 去偏 VAR 系数 |
links[].confidenceInterval | [number, number] | 系数的 95% 置信区间 |
links[].lag | number | 因果关系起作用时的滞后期数 |
classify_market_regimes
| 字段 | 类型 | 描述 |
|---|---|---|
currentRegime | string | 当前状态:平静、波动、危机或复苏 |
transitionMatrix | number[][] | 4x4 马尔可夫转移概率矩阵 |
stationaryDistribution | number[] | 各状态的长期概率 |
expectedDuration | Record<string, number> | 每种状态转移前的预期持续期数 |
viterbiPath | string[] | 状态序列的 MAP 路径 |
regimes[].volatility | number | 根据 Student-t 发射分布计算的状态特定波动率 |
regimes[].degreesOfFreedom | number | Student-t 自由度(值越低,尾部越厚) |
optimize_surveillance_strategy
| 字段 | 类型 | 描述 |
|---|---|---|
gameValue | number | 监控博弈的纳什均衡值 |
detectionProbability | number | 在最优策略下检测到操纵行为的概率 |
deterrenceEffect | number | 最优监控对操纵概率的降低幅度 |
optimalBudgetAllocation | Record<string, number> | 分配给每项监控行动的预算比例 |
actions[].action | string | 监控行动标签 |
actions[].nashEquilibriumProb | number | 选择此行动的纳什均衡概率 |
actions[].expectedDetection | number | 此行动的预期检测率 |
actions[].resourceCost | number | 此行动的资源成本 |
spoofingAlertCount | number | 前置 BOCPD 运行所产生的警报数量 |
currentRegime | string | 前置 HMM 运行得出的当前市场状态 |
运行市场微观结构分析需要多少费用?
此 MCP 服务采用按调用付费的定价方式——每次工具调用付费。平台计算费用已包含在内。
| 工具 | 每次调用价格 | 10 次调用 | 50 次调用 |
|---|---|---|---|
decompose_spread_components | $0.035 | $0.35 | $1.75 |
classify_market_regimes | $0.035 | $0.35 | $1.75 |
measure_cross_asset_information | $0.040 | $0.40 | $2.00 |
discover_manipulation_causality | $0.040 | $0.40 | $2.00 |
optimize_surveillance_strategy | $0.040 | $0.40 | $2.00 |
simulate_order_book_dynamics | $0.045 | $0.45 | $2.25 |
identify_insider_abnormal_flow | $0.045 | $0.45 | $2.25 |
detect_spoofing_manipulation | $0.050 | $0.50 | $2.50 |
Apify 免费计划每月包含 $5 的平台额度——按标准工具组合计算,每月约可调用 100–140 次工具。你可以为每次运行设置最高支出限额以控制费用。达到预算后,服务将停止运行。
相比 Bloomberg Terminal API(每年 $24,000)或 Refinitiv Eikon(每年 $22,000)提供的类似金融数据访问和分析能力,这种方式每次分析的费用仅为几分之一美分,而且无需长期承诺。
Market Microstructure & Manipulation MCP 的工作原理
阶段 1:并行汇集数据
收到工具调用后,服务会使用 Promise.all 同时分发 3 到 8 次 Actor 调用。每个 Actor 都在独立的 Apify 容器中运行,配备 256 MB 内存,超时时间为 120 秒。Finnhub(股票价格、基本面)、CoinGecko(加密货币市场)、SEC EDGAR(申报文件)、SEC 内部人士 Form 4 数据、国会议员股票披露、汇率、ECB 利率、FRED 宏观指标和 BLS 劳动力数据,会通过 extractTimeSeries 组装为通用时间序列格式。extractTimeSeries 是一个多键提取器,可从异构 Actor 输出中解析 price、value、rate、close、amount、volume 和 count 字段。
阶段 2:算法应用
每个工具都应用一种特定的经同行评审的计量经济学方法:
-
simulate_order_book_dynamics— 将价格变化编码为 D 维中的事件到达(根据数据量限制在 3–12 维)。运行 EM 估计:E 步计算与 alpha * exp(-beta * delta_t) 成比例的父事件概率;M 步更新基准强度 mu、激励参数 alpha 和衰减参数 beta。分支比是通过 100 次迭代的幂迭代法计算 alpha/beta 矩阵的谱半径。临界性指数是距稳定性边界的截断距离。 -
detect_spoofing_manipulation— 使用正态-逆伽马共轭先验实现 BOCPD。在每个时间步,算法使用共轭模型下观测值的预测概率和恒定风险函数更新运行长度后验概率。在后验概率为运行长度零赋予最高概率的位置声明变点。利用每个变点附近的收益特征——均值、方差、自相关——对操纵模式进行分类。 -
measure_cross_asset_information— 使用基于 AR 模型的频谱估计,计算所有资产对之间的频谱传递熵。Hasbrouck 信息份额通过 Johansen VECM 计算:对创新协方差矩阵进行 Cholesky 分解,并计算下三角因子的元素平方。在频谱峰值处确定主导频率。 -
optimize_surveillance_strategy— 先运行detectSpoofing和classifyRegimes作为前置步骤,然后根据生成的警报计数和市场状态分类构建监控博弈矩阵。通过 200 次迭代的虚拟博弈收敛至纳什均衡混合策略。威慑效果通过监管机构承诺采用纳什均衡策略时操纵概率的降低幅度计算。
阶段 3:结构化响应
结果序列化为 JSON,并通过 MCP 协议的 CallToolResult 格式返回,其中包含一个 text 内容项,内含完整的结构化输出。Express 服务处理 MCP 传输层,启用 CORS 以支持跨源客户端,并在 GET / 上提供 Apify 容器就绪探针。
获得最佳结果的提示
-
将市场状态分类作为前置步骤。 首先使用目标资产或行业调用
classify_market_regimes。当前市场状态有助于解读所有后续结果——在危机与平稳市场状态下,虚假挂单模式的表现各不相同。 -
根据时间范围调整 hazard_lambda。 默认值
hazard_lambda: 100假设大约每 100 个观测值发生一次市场状态变化。对于跨度为一年的日度数据,这一设置比较合适。对于日内数据,请使用hazard_lambda: 500,以避免过度细分。 -
将内部人交易流与因果关系发现相结合。 先运行
identify_insider_abnormal_flow,然后将相同的查询传递给discover_manipulation_causality。因果网络会揭示事件研究中检测到的内部人交易影响了哪些下游市场变量。 -
使用行业查询进行跨资产分析。 对于“US financials”或“crypto DeFi”等范围较广、可从不同数据源获取多种资产的查询,
measure_cross_asset_information最能发挥作用。单一代码查询返回的跨资产网络范围较窄。 -
出现虚假挂单警报后,监控优化器最有用。 当
detect_spoofing_manipulation返回警报时,请使用相同的查询运行optimize_surveillance_strategy。它会在内部运行 BOCPD 和 HMM,并利用结果校准博弈论模型,因此监控资源分配会直接反映当前警报状况。 -
降低
max_results,加快探索性查询。 在simulate_order_book_dynamics或measure_cross_asset_information中将max_results设为20,可减少数据获取时间和成本。对于需要更高统计功效的生产环境监控任务,请使用较高值(50–100)。 -
保存结果,便于纵向分析。 将工具输出存储在数据库中,并每周运行相同的查询。分支比、市场状态分布或因果网络密度随时间发生的变化,可以揭示单点分析难以发现的市场结构性变化。
与其他 Apify actor 结合使用
| Actor | 组合方式 |
|---|---|
| SEC EDGAR Filing Search | 在 detect_spoofing_manipulation 发出警报后,针对执法行动运行定向 EDGAR 搜索,交叉参考同一资产的历史起诉模式 |
| Congressional Stock Tracker | 将国会议员交易数据直接传递给 identify_insider_abnormal_flow,进行逐位成员的 CAR 分析;找出哪些成员的交易早于最大的价格变动 |
| Finnhub Stock Data | 在将数据发送给 MCP 工具之前,将其作为独立数据源用于分析前的数据验证 |
| FRED Economic Data | 获取宏观时间序列(VIX、FEDFUNDS、收益率曲线),并叠加市场状态分类结果,以验证 HMM 状态分配是否与宏观拐点一致 |
| Website Change Monitor | 监控 SEC 执法页面和公司 IR 网站;将变更事件作为查询上下文传递给 detect_spoofing_manipulation,用于公告发布前的监控 |
| Hacker News Search | 将 Hacker News 讨论情绪与 classify_market_regimes 的输出进行交叉参考,评估散户关注周期是否与 HMM 识别出的市场状态转换一致 |
| CoinGecko Crypto Data | 将其用于单独获取加密货币市场数据,并根据原始价格序列验证 simulate_order_book_dynamics 的分支比估算值 |
局限性
- 没有实时 Level 2 订单簿数据 — Hawkes 过程和价差分解工具使用来自 Finnhub 和 CoinGecko 的价格与成交量数据,而非逐笔买卖深度数据流。结果是对市场微观结构动态的近似,而非精确的订单簿测量。
- 不支持实时流式传输 — 这是一个请求-响应式 MCP 服务,而非流式数据源。每次调用工具时都会获取最新数据;服务本身不提供持续监控功能。定期运行请使用 Apify 调度。
- Actor 超时为 120 秒 — 如果上游数据源响应缓慢或返回错误,相关 Actor 会返回空数组。算法能够在数据不完整时平稳运行,但当数据源数量较少时,应谨慎解读输出结果。
- Finnhub 免费套餐的限制 — Finnhub 数据深度取决于你的 Finnhub 订阅。Actor 默认使用免费套餐,某些端点可能存在速率限制和数据延迟。
- Hawkes EM 收敛性 — EM 估计直接使用数据初始化。当时间序列非常短(每个维度少于 20 个观测值)时,分枝比率估计可能不可靠。使用
max_results: 50或更高值可获得稳定的估计。 - BOCPD 风险率假设 — 常数风险率函数假设变点以固定频率出现。波动率聚集的市场(例如财报季)产生的变点会多于模型的预测。请结合具体背景解读变点的绝对数量。
- 国会议员交易数据存在延迟 — STOCK Act 披露须在交易后 30–45 天内提交。近期交易可能尚未出现在国会议员追踪数据中,因此对于近期时段,
identify_insider_abnormal_flow的结果应视为不完整。 - 调用之间不保留状态 — 每次工具调用都是无状态的。服务不会跨调用维护持久化的订单簿或滚动窗口。进行纵向分析时,请将结果存储在外部,并在应用代码中计算变化。
- 博弈论模型经过简化 — 监控博弈使用包含 4 个动作的有限集合,并采用线性收益。真实的监管博弈涉及更复杂的信息结构。结果仅能提供方向性参考,而非处方性建议。
集成
- Apify API — 使用任何语言以编程方式调用 MCP 端点;使用 Apify 运行 API 将输出存储到数据集中,以便后续处理
- Webhooks — 配置 Webhook,在定期扫描检测到虚假申报警报或状态转变时触发
- Zapier — 将定期 MCP 运行产生的虚假申报警报发送到 Slack、电子邮件或 Google Sheets 工作流,无需编写代码
- Make — 构建多步场景,在 SEC EDGAR 文件提交事件发生时触发监控分析,并将结果发送到合规工单系统
- LangChain / LlamaIndex — 将此 MCP 服务集成到 RAG 管道中,让 AI Agent 能够获取实时市场微观结构背景信息,以回答量化金融问题
- Claude Desktop — 直接集成 MCP;无需编写代码,即可用自然语言要求 Claude 检测操纵模式、分类市场状态或优化监控预算
故障排除
尽管预期会检测到操纵行为,detect_spoofing_manipulation 却返回空警报。 BOCPD 算法需要价格序列具有足够的方差,才能检测变点。如果查询的资产在当前数据窗口内波动性很低,运行长度后验分布就会倾向于较长的稳定运行段。尝试将 hazard_lambda 降至 50 以提高灵敏度,或扩大查询范围以纳入更多资产。
classify_market_regimes 反复返回相同的市场状态。 当来自全部 4 个 actor 的数据构成同质时间序列时(例如,所有值都接近零或完全相同),就会出现这种情况。请使用较宽泛的查询(例如 "SPY VIX bonds")进行测试,确认查询返回有意义的数据;此类查询涵盖多个资产类别,可确保获得多样化的数值序列。
工具调用超时。 如果上游 actor(尤其是高流量时段的 Finnhub 或 CoinGecko)响应缓慢,可能会触发 120 秒的 actor 超时。服务端会为超时的数据源返回空数组。对于对时间敏感的场景,请使用 decompose_spread_components 或 classify_market_regimes;它们使用的 actor 较少,因此不易超时。
optimize_surveillance_strategy 返回平均分配的预算。 博弈论优化器通过虚拟博弈收敛至纳什均衡。如果先决条件 BOCPD 和 HMM 运行均未返回警报,且市场状态稳定,博弈矩阵就会接近均匀分布,因此预算分配也会接近均匀。这是有效结果,表明在没有操纵信号时,没有哪一种监控措施占据主导地位。
Hacker News 返回无关结果。 Hacker News actor 按关键词搜索。像 "T" 或 "F" 这样的通用股票代码可能会匹配到无关的讨论串。对于将 Hacker News 作为数据源的工具,请使用公司名称或更具体的查询词(例如,使用 "Tesla stock" 而不是 "TSLA")。
负责任地使用
- 此服务仅访问来自获得许可或可公开访问的数据源的公开金融数据。
- 国会议员的股票交易披露属于《STOCK Act》(2012)规定的公开记录,依法可以访问和分析。
- SEC EDGAR 文件是由美国证券交易委员会提供的公开记录。
- 请勿将此服务的输出作为投资决策的唯一依据。市场微观结构分析只是多项参考因素之一。
- 使用操纵检测输出时,请遵守适用的证券法律。在正式监控计划中使用警报阈值前,应由具备资质的合规专业人士进行校准。
- 有关网页抓取合法性的指南,请参阅 Apify 的指南。
常见问题
市场微观结构操纵检测在技术上是如何工作的?
detect_spoofing_manipulation 工具使用具有正态-逆伽马共轭先验的贝叶斯在线变点检测(BOCPD)。在每个时间步,它都会使用共轭模型下的预测概率和常数风险函数,更新运行长度后验概率 P(r_t | x_{1:t})。当后验概率显示运行长度为零的概率较高时,就会判定发生了变点。变点附近收益率序列的特征——均值、方差、偏度、自相关性——决定了该模式会被归类为分层挂单、虚假挂单、对倒交易或动量引爆。
MCP 能检测哪些操纵模式? BOCPD 检测器可识别四种模式:分层挂单(在买卖盘顶部附近反复提交并撤销大额订单)、虚假挂单(旨在影响价格后再撤销的大额欺骗性订单)、对倒交易(制造虚假成交量的自我交易),以及动量引爆(旨在触发止损单并造成价格连锁波动的一系列操作)。 Hawkes 过程分支比率估计有多准确? 准确度取决于观测数量。当价格变化事件达到 50 个或以上时,EM 通常会在 20 次迭代内收敛到稳定估计。对于遇到的矩阵规模(3–12 个维度),谱半径幂迭代都能可靠收敛。分支比率高于 0.9 时,应视为微观结构压力升高的迹象,而非精确测量值。
分析国会议员的股票交易合法吗? 合法。根据 2012 年《STOCK Act》,国会议员的股票交易披露属于强制公开记录。法律要求参议员和众议员在 30–45 天内披露股票交易。这些数据可通过官方国会披露数据库公开获取,访问、分析和发布均合法。
这与 Bloomberg 或 Refinitiv 的市场监控工具有何不同? Bloomberg BTCA 和 Refinitiv 监控产品每年费用为 $22,000–$24,000,需要专用终端,面向机构合规部门设计。此 MCP 服务以每次分析调用 $0.035–$0.050 的价格提供相同的分析方法(Hawkes 过程、事件研究、Granger 因果关系),无需订阅或终端,并可直接集成到任何兼容 MCP 的 AI 客户端中。
我可以将此 MCP 服务设置为每日运行操纵扫描吗?
可以。使用 Apify 的计划功能,按 cron 计划触发定期 Actor 运行并调用 MCP 服务。将结果保存到 Apify 数据集中,并配置 webhook,在欺骗工具输出中的 totalDetected > 0 时触发。这样即可创建低成本的自动化监控流水线。
Apify 免费计划可以调用多少次工具? Apify Free 计划每月包含 $5 的额度。按所有工具每次调用平均 $0.042 计算,每月约可调用 119 次工具。如需更高用量,Apify Starter 计划每月 $49,约可调用 1,160 次工具。
如果 14 个数据 Actor 中有一个调用失败或超时,会发生什么?
每次 Actor 调用都由 try-catch 包装,并设有 120 秒超时。如果某个 Actor 调用失败,则返回空数组。算法会使用剩余数据继续运行,并平稳降级。检查输出中的 snapshotCount 或 channelCount 字段是否低于预期,即可识别部分结果。
Student-t HMM 与标准 Gaussian HMM 有何不同? Student-t 发射分布的尾部比 Gaussian 分布更厚,因此对于异常值和金融危机更稳健,因为此时收益率分布会呈现极端峰度。自由度参数 nu 会与状态均值和方差一起估计。较低的 nu 值(2–4)表示危机时期常见的肥尾状态;较高的 nu 值(10 以上)则接近 Gaussian 分布,通常对应平静状态。
我可以将此 MCP 服务与 Cursor 或 Windsurf 等 AI 编码助手搭配使用吗?
可以。任何兼容 MCP 的客户端都能使用此服务。将服务 URL https://market-microstructure-manipulation-mcp.apify.actor/mcp 添加到客户端的 MCP 配置中,并将 Apify 令牌作为 Authorization 标头。此服务提供 8 个工具,AI 助手可以直接从其上下文窗口调用。
博弈论监控优化器会给出指示性建议吗?
其输出具有方向性参考价值,而非指示性建议。纳什均衡预算分配会告诉你,在操纵者采取最不利策略时,哪些监控措施的预期检测价值最高。实际监管监控计划应将其作为一项定量参考,并结合相关法律约束、数据可用性和机构判断。
典型的工具调用需要多长时间?
获取 3–4 个 actor 数据的工具(如 decompose_spread_components 和 classify_market_regimes)通常需要 15–40 秒。获取 6–8 个 actor 数据的工具(如 detect_spoofing_manipulation 和 optimize_surveillance_strategy)通常需要 30–70 秒。所有 actor 调用均并行运行,因此延迟取决于最慢的单个 actor,而不是各个调用耗时的总和。
帮助我们改进
如果遇到问题,可以在 Apify 账户中启用运行共享,帮助我们更快地排查问题:
- 前往 账户设置 > 隐私
- 启用 与公开的 Actor 创建者共享运行记录
这样一来,出现问题时我们就能查看运行详情,从而更快地修复问题。只有 actor 开发者可以看到你的数据,不会公开。
支持
发现 Bug 或有功能建议?请在此 actor 页面上的 问题选项卡中提交问题。如需定制解决方案或企业集成,请通过 Apify 平台联系我们。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。