如何用 FMP 追踪华尔街聪明钱:13F 机构持仓、内部人交易与国会山议员买卖接口实战
在美股量化投研中,除了常规财报与日线量价,最具超额收益(Alpha)潜力的另类数据就是“聪明钱(Smart Money)”的真实仓位变动。受美国 SEC 与《停止利用国会知识交易法案》(STOCK Act)强制约束,华尔街三类核心资金必须定期亮出底牌:
- 大型资管机构(SEC Form 13F):管理美股资产 ≥ 1 亿美元的机构(如伯克希尔、桥水),季末结束后 45 天内必须披露多头持仓明细。
- 上市公司高管与大股东(SEC Form 4 / 13D / 13G):CEO、CFO、董事及持股 > 10% 内部人,发生交易后 2 个工作日内必须上报。
- 美国国会参众两院议员及配偶(STOCK Act PTR 报告):必须在单笔交易发生后 30~45 天内披露买卖标的与金额区间。
本文将基于 FMP数据源中文站 的三类聪明钱接口与 2026 年 10 月最新实测数据,直接拆解伯克希尔(CIK: 0001067983)、英伟达(NVDA)、苹果(AAPL)与佩洛西(Nancy Pelosi)的真实持仓与交易报文,并给出对齐披露时滞、过滤高管期权行权噪音、折算议员金额区间的核心清洗代码。
延伸阅读:初次接触 FMP 可先看《FMP 是什么?数据范围、接口体系、价格限制与中文接入指南》;财报三表勾稽与日线实测见《FMP 数据 API 深度测评》;若需盘口逐笔(Tick)或期权链对比,参见《FMP vs Massive(原 Polygon.io)深度对比》。
华尔街三类“聪明钱”数据源(13F、Form 4、国会山披露)在时效与颗粒度上有什么本质区别?
许多量化新手直接把 date(报告期末)或 transactionDate(交易发生日)当成信号触发日回测,导致严重的未来函数(Look-ahead Bias)。接入前必须先对齐三类数据的物理边界:
| 对比维度 | 机构持仓(SEC Form 13F) | 内部人交易(SEC Form 4) | 国会山议员交易(Senate & House) |
|---|---|---|---|
| 法定披露滞后(Lag) | 季度结束后 45 个自然日内(多卡在最后一天提交) | 交易发生后 2 个工作日内(时效性最高) | 交易发生后 30~45 个自然日内(偶有超 100 天逾期补报) |
| FMP 分类入口 | 13F 机构持仓(8 个接口) | 内部人交易(6 个接口) | 参众两院交易披露(12 个接口) |
| 核心接口路径 | /stable/institutional-ownership/extract<br>/stable/institutional-ownership/symbol-positions-summary | /stable/insider-trading/search<br>/stable/insider-trading/statistics | /stable/house-trades<br>/stable/senate-trades<br>/stable/house-trades-by-name |
| 数量与金额精度 | 精确到 1 股与 1 美元(shares 与 value) | 精确到 1 股与成交均价(securitiesTransacted 与 price) | 仅披露金额区间字符串(如 "$1,001 - $15,000") |
| 多空与资产覆盖 | 仅美股多头正股及期权(putCallShare),不含融券做空 | 含二级市场买卖(P/S)、行权(M)、授股(A)等 15 类 | 含正股(Stock)、期权(Stock Option)、私募(Other Securities) |
| 回测避坑锚点 | 必须以 acceptedDate / filingDate 为信号日,禁用季末 date | 必须过滤 price = 0 的授股/行权/赠与,只取真金白银买卖 | 必须用 disclosureDate 触发信号,并将金额区间折算为中值 |
如何用 FMP 13F 接口还原伯克希尔(CIK 0001067983)的真实仓位与全市场机构建仓动向?
在 13F 机构持仓分类 下,实战最常用两条路径:按机构 CIK 查持仓明细,以及按股票代码查全市场机构筹码汇总。
1. 按机构 CIK 调取伯克希尔 2026Q2 持仓明细
先调 机构持仓披露日期(/stable/institutional-ownership/dates)确认最新已披露财季,再调 机构持仓明细提取 与 机构业绩表现汇总。
工程必填项:
cik参数必须传入 10 位带前导零的 SEC CIK 字符串(伯克希尔为0001067983,传入1067983会漏数据,代码中统一用str(cik).zfill(10))。
// GET /stable/institutional-ownership/extract?cik=0001067983&year=2026&quarter=2 (节选头号重仓股 AAPL,取数时间 2026-10-22)
[
{
"date": "2026-06-30",
"filingDate": "2026-08-14",
"acceptedDate": "2026-08-14",
"cik": "0001067983",
"securityCusip": "037833100",
"symbol": "AAPL",
"nameOfIssuer": "APPLE INC",
"shares": 227917808,
"value": 65950296923,
"finalLink": "https://www.sec.gov/Archives/edgar/data/1067983/000119312526352200/56757.xml"
}
]
结合 机构业绩表现汇总 实测返回,伯克希尔 2026Q2 共持有 29 只标的,13F 总市值 2,992.54 亿美元(环比 +13.74%),季度换手率仅 6.9%。前 8 大重仓股即占组合总市值的 81.52%:
| 排名 | 股票代码 (symbol) | 发行人 (nameOfIssuer) | 2026Q2 持股数 (shares) | 期末市值 (value, USD) | 占 13F 总市值比例 | 实际披露日 (filingDate) |
|---|---|---|---|---|---|---|
| 1 | AAPL | APPLE INC | 227,917,808 | $65,950,296,923 | 22.04% | 2026-08-14 |
| 2 | AXP | AMERICAN EXPRESS CO | 151,610,700 | $51,282,319,275 | 17.14% | 2026-08-14 |
| 3 | KO | COCA COLA CO | 400,000,000 | $32,508,000,000 | 10.86% | 2026-08-14 |
| 4 | GOOGL | ALPHABET INC | 78,791,167 | $28,157,599,351 | 9.41% | 2026-08-14 |
| 5 | BAC | BANK OF AMER CORP | 483,394,015 | $27,543,790,975 | 9.20% | 2026-08-14 |
| 6 | CVX | CHEVRON CORPORATION | 84,375,856 | $13,986,141,890 | 4.67% | 2026-08-14 |
| 7 | OXY | OCCIDENTAL PETE CORP | 264,941,431 | $12,868,205,304 | 4.30% | 2026-08-14 |
| 8 | CB | CHUBB LIMITED | 34,249,183 | $11,670,066,615 | 3.90% | 2026-08-14 |
| 合计(前 8 / 全 29 只) | — | — | — | $243.97B / $299.25B | 81.52% / 100% | 滞后 45 天 |
2. 反向按股票代码统计全市场 6,400+ 家机构筹码集中度
若想监控全市场 13F 机构在单只标的上的吸筹与派发,直接调用 标的机构持仓汇总(/stable/institutional-ownership/symbol-positions-summary?symbol=NVDA&year=2026&quarter=2):
- 筹码集中度(
ownershipPercent):2026Q2NVDA共有 6,483 家 13F 机构持仓(环比净增 179 家),机构持股占流通盘比例达 69.68%(单季提升+3.12个百分点)。 - 建减仓家数比:
NVDA新建/加仓机构共312 + 3,257 = 3,569家,远超清仓/减仓的190 + 2,429 = 2,619家(比值 1.36);同期AAPL建减仓家数比为 0.95(2,993vs3,157家)。 - 期权保护垫(
putCallRatio):NVDA机构持有的看跌/看涨期权比从上季的1.1465降至1.0562,显示机构高位 Put 对冲力度有所收敛。
为什么内部人交易(Form 4)不能直接按买卖方向汇总?如何过滤高管期权行权与 RSU 授股噪音?
内部人交易分类 下的 Form 4 数据是 T+2 工作日级别的高频信号。但实测 内部人交易搜索 与 内部人交易统计 会发现:绝不能直接按 acquisitionOrDisposition(A 获得 / D 处置)做加总。
1. 实测案例:苹果会计长行权扣税与英伟达高管 0 元授股/赠与
// GET /stable/insider-trading/search?symbol=AAPL&page=0&limit=3 (2026-10-19 披露)
[
{
"symbol": "AAPL",
"filingDate": "2026-10-19",
"transactionDate": "2026-10-15",
"reportingName": "Borders Ben",
"typeOfOwner": "officer: Principal Accounting Officer",
"transactionType": "M-Exempt",
"acquisitionOrDisposition": "A",
"securitiesTransacted": 1714,
"price": 0
},
{
"symbol": "AAPL",
"filingDate": "2026-10-19",
"transactionDate": "2026-10-15",
"reportingName": "Borders Ben",
"transactionType": "F-InKind",
"acquisitionOrDisposition": "D",
"securitiesTransacted": 883,
"price": 342
}
]
看上面 AAPL 首席会计官 Borders Ben 与同期 NVDA 的实测记录,不看 transactionType 会踩三个大坑:
- 把行权/授股当“增持”:
Borders Ben在2026-10-15交易(10-19披露)获得的1,714股是"M-Exempt"(RSU/期权行权转换,price: 0);NVDA高管Parker Nicholas P.在2026-09-09交易(10-13披露)获得的160,418股是"A-Award"(股权激励授予,price: 0),均非二级市场掏钱买股。 - 把抵税/赠与当“砸盘”:
Borders Ben同日处置的883股是"F-InKind"(公司自动扣股抵缴个税);NVDA董事COXE TENCH在2026-10-07交易(10-09披露)处置的500,000股是"G-Gift"(0 元赠与)。 - 统计接口字段陷阱:调 内部人交易统计(
/stable/insider-trading/statistics?symbol=NVDA)可见,2026Q3NVDA的acquiredTransactions为 3 笔(174,917股),但totalPurchases为 0;2026Q4disposedTransactions为 1 笔(500,000股),但totalSales也为 0。因为只有totalPurchases/totalSales才严格对应二级市场真金白银的公开买卖(P-Purchase/S-Sale)。
2. Form 4 交易类型(transactionType)量化清洗规则
通过 内部人交易类型字典(/stable/insider-trading-transaction-type)拉取 FMP 收录的全部 15 类代码后(SEC 原始完整代码表约 20 种,FMP 未收录极少见的 W/X 等),实战只需按以下规则过滤:
transactionType | SEC 含义 | 成交价 (price) | 信号定性与清洗规则 |
|---|---|---|---|
P-Purchase | 二级市场公开买入 | 真实市价 (> 0) | 极强看多(高管真金白银买入),全额保留 |
S-Sale | 二级市场公开卖出 | 真实市价 (> 0) | 偏空;若同一高管前后 2 天内有 M-Exempt(如 Borders Ben 次日分 4 笔卖出共 1,240 股),属行权变现,权重折半;若无行权伴随(如 NVDA 董事 STEVENS MARK A 在 2026-09-18 纯卖出 135.6 万股套现 2.98 亿美元),记为强减持 |
A-Award / M-Exempt | 股权激励授予 / 期权行权 | 0 或行权价 | 薪酬发放与存量转股,直接剔除 |
F-InKind / G-Gift | 以股抵税 / 股权赠与 | 市价或 0 | 法定扣税与家族/慈善赠与,直接剔除 |
国会山参众两院议员买卖(Senate & House)接口只有金额区间,量化回测该如何折算并规避披露滞后?
FMP 在 参众两院交易披露分类 下提供了 12 个接口。我们调用 众议院议员交易按姓名查询(/stable/house-trades-by-name?name=Pelosi)与 参议院议员交易按标的查询(/stable/senate-trades?symbol=NVDA),实测佩洛西(senateID: "P000197")报文如下:
// GET /stable/house-trades-by-name?name=Pelosi (节选,取数时间 2026-10-22)
[
{
"symbol": "BE",
"senateID": "P000197",
"disclosureDate": "2026-08-24",
"transactionDate": "2026-07-24",
"firstName": "Nancy",
"lastName": "Pelosi",
"owner": "Spouse",
"assetDescription": "Bloom Energy Corporation Class A Common Stock",
"assetType": "Stock Option",
"type": "Purchase",
"amount": "$1,000,001 - $5,000,000"
}
]
结合参众两院实测数据,代码中必须执行四条清洗规则:
- 金额区间(
amount)取算术中值:议员只勾选区间(如"$1,001 - $15,000"、"$1,000,001 - $5,000,000"),用正则提取上下界后按(low + high) / 2折算估算金额(如后者折算为300 万美元)。 - 统一参众两院
type枚举:参众两院的type字段均同时存在"Purchase"、"Sale"、"Sale (Partial)"(如参议员Sheldon Whitehouse减持NVDA)与"Sale (Full)"(如参议员Cory Booker清仓NVDA)四种枚举值,判断卖出方向切忌用type == "Sale"硬匹配,必须统一用前缀判断type.startswith("Sale")。 - 剔除无代码私募(
symbol == ""):佩洛西2026-10-02披露买入的"REOF XXX, LLC"为非上市私募(assetType: "Other Securities",symbol: ""),需过滤掉空symbol。 - 拦截超 45 天逾期补报单:实测
NVDA参议院记录发现,参议员Alan Armstrong在2026-03-27买入$50,001 - $100,000的NVDA,直到2026-07-21才披露(滞后 116 天)。跟单策略必须剔除disclosureDate - transactionDate > 45 天的陈旧记录,且严格以disclosureDate作为交易触发日。
洗干净数据之后怎么用?三路聪明钱接口的三大高阶投研与量化策略应用
只看单一维度的持仓或买卖记录,在实盘中极易掉入“季报滞后接盘”或“单笔交易噪音”陷阱。真正成熟的量化投研体系,会将上述三类接口与行情、财务接口做跨维度交叉,构建以下三类高阶实战策略:
高阶应用一:三路聪明钱“多空背离与共振”预警模型(以 NVDA 2026 实盘复盘高位派发)
- 单路信号的盲区:13F 反映的是季度末静态截面且滞后 45 天;Form 4 与国会山披露则是 T+2 至 T+30 天的高频流数据。当“慢变量(13F)显示机构重仓抢筹,而快变量(Form 4 + 国会山)在随后两个月内出现 0 买入且密集套现”时,往往是典型的高位筹码派发(Distribution)顶背离信号。
- 2026Q2~Q3 英伟达(
NVDA)三路数据实盘对撞复盘:
| 信号维度 | 调取的 FMP 接口 | 2026Q2~Q3 实测指标表现 | 信号方向与投研定性 |
|---|---|---|---|
| 第一路:13F 机构季报(慢变量) | 标的机构持仓汇总 | 截至 2026-06-30(08-14 披露):6,483 家机构持仓(+179 家),持股占比 69.68%(+3.12%),建减仓家数比 1.36 | 🟢 表面滞后看多(反映二季度机构仍在加仓,散户若在 8 月中旬看 13F 极易盲目追高) |
| 第二路:Form 4 高管交易(快变量) | 内部人交易统计 + 内部人交易搜索 | 进入 2026Q3(7~9 月):二级市场高管买入 0 笔(totalPurchases: 0),真实卖出 25 笔;其中董事 STEVENS MARK A 在 09-18 单笔套现 2.98 亿美元(135.6 万股),法务长 Teter Timothy S. 在 09-21 连续 3 笔卖出 30,460 股 | 🔴 高频强烈看空(最了解订单节奏的核心内部人在 220 美元上方零买入、大额独立减持) |
| 第三路:国会山议员披露(快变量) | 参议院交易按标的查询 + 众议院交易按标的查询 | 2026 年 8~9 月:参议员 Cory Booker 清仓卖出(Sale (Full),$15,001 - $50,000),参议员 Sheldon Whitehouse 连续两笔部分减持,众议员 Daniel Meuser 卖出 | 🔴 高频同步撤退(参众两院多席位在三季度同步兑现算力股浮盈) |
策略执行准则:当目标标的满足 「当季 13F 建减仓比 > 1.2 + 近 30 天 Form 4 存在净买入(totalPurchases > 0)+ 国会山无清仓式卖出 + TTM 财务比率 自由现金流为正」 四重多头共振时才纳入右侧做多池;反之若如上表 NVDA 出现“13F 满仓 + 内部人与议员高频零买连卖”的背离,立即触发止盈或风控降仓。
高阶应用二:“抄巴菲特作业不站岗”——13F 持仓 × 历史日线均价还原机构建仓成本中枢
伯克希尔 2026Q2 的 13F 直到 2026-08-14 才公布。如果某只股票是巴菲特在 Q2(2026-04-01 至 2026-06-30)新进或大举加仓的标的,8 月中旬公布时股价可能已脱离其建仓成本区。实战可通过联动 机构持仓明细提取 与 全量历史日线 分四步还原机构成本中枢:
- 步骤一(筛选当季大幅增持标的):对比机构连续两个季度的
/stable/institutional-ownership/extract持仓股数变化(Δshares = shares_Q2 - shares_Q1 > 0),筛选出当季新进或增持幅度> 20%的重仓股; - 步骤二(拉取建仓季度日线价格与成交量):调用
/stable/historical-price-eod/full?symbol=XXX&from=2026-04-01&to=2026-06-30拉取该季度全部 62 个交易日的日线vwap与成交量volume;
口径特别提示:FMP 日线
vwap字段是已结算单根日 K 线的四价算术均值(open + high + low + close) / 4,并非盘中逐笔撮合的真 VWAP(详见 FMP vs Massive 数据对拍实测)。此处基于日线均值做季度成交量加权仅作为建仓成本区间的近似代理(Proxy),误差主要来自日内振幅,用于中长线安全边际判定足够,切勿当成微观逐笔真实成交价使用。
- 步骤三(计算成交量加权建仓成本中枢):按公式
Cost_inst = Σ(vwap_t × volume_t) / Σvolume_t计算该季度基于日线均值的成交量加权建仓成本中枢; - 步骤四(执行买点安全边际纪律):在
filingDate(披露日)之后监控现价P_now。若P_now > 1.15 × Cost_inst(溢价超 15%),放弃追高;仅当市场情绪回调使P_now ≤ 1.03 × Cost_inst(回到机构建仓成本线附近甚至折价)时才分批建仓,实现“以不高于华尔街大佬的底仓成本抄作业”。
高阶应用三:Form 4 内部人“集群买入(Cluster Buying)”与职级×仓位增幅打分模型
同样是高管 P-Purchase 买入 50 万美元,身家百亿的外部董事象征性买一点,与平时持股不多的 CFO 突然押上三分之一仓位加仓,信息含金量天差地别。利用 Form 4 原生字段可直接构建三维量化打分模型:
- 维度一:高管职级权重(
W_role,解析typeOfOwner)——核心决策与管账层(CEO、CFO、COO、Principal Accounting Officer)最清楚当季真实营收与利润率拐点,赋权1.5;业务执行层(EVP、SVP、General Counsel)赋权1.0;外部董事与大股东(director、10% owner)赋权0.7。 - 维度二:自身持仓增幅冲击度(
ConvictionRatio,基于securitiesTransacted与securitiesOwned)——按公式ConvictionRatio = securitiesTransacted / max(securitiesOwned - securitiesTransacted, 1)计算高管本次交易使其名下存量持股扩张的比例。若某 CFO 原持有20,000股,本次二级市场真金白银买入10,000股(交易后securitiesOwned = 30,000),其自身持仓瞬间扩张 +50%,属于极高置信度信号。 - 维度三:30 天多人集群共振(
Cluster Multiplier)——统计过去 30 个自然日内同一symbol下发生P-Purchase的独立高管人数(按reportingCik去重)。当独立买入高管数 ≥ 3 人时,说明公司管理层内部形成强烈共识,策略直接触发最高优先级做多信号。
三路聪明钱数据清洗与高阶因子计算有哪些核心 Python 逻辑?
在工程接入时,常规的 HTTP 请求可交由任意客户端处理,真正决定因子质量的只有以下 四段核心清洗与打分逻辑(10 位 CIK 补零、Form 4 行权去噪与职级增幅打分、国会山区间折算与逾期过滤、季度机构建仓成本计算):
import re
from datetime import datetime
# 1. 13F 机构查询:强制补齐 10 位前导零(避免传 1067983 返回空数组)
cik = str(1067983).zfill(10) # -> "0001067983"
# 2. 13F × 历史日线:计算机构建仓季度的成交量加权成本线 (Institutional VWAP Cost)
def calc_quarterly_inst_cost(eod_rows: list) -> float:
vol_sum = sum(float(r.get("volume") or 0) for r in eod_rows)
return round(sum(float(r["vwap"]) * float(r["volume"]) for r in eod_rows) / vol_sum, 2) if vol_sum > 0 else 0.0
# 3. Form 4 内部人交易:剔除 0 元行权/授股,结合高管职级与自身仓位增幅计算信号强度
def filter_real_insider_trades(rows: list, ex_dates: list = None) -> list:
if ex_dates is None:
ex_dates = [datetime.strptime(r["transactionDate"], "%Y-%m-%d") for r in rows if r.get("transactionType") == "M-Exempt"]
valid = [r for r in rows if r.get("transactionType") in ("P-Purchase", "S-Sale") and float(r.get("price") or 0) > 0]
out = []
for r in valid:
role = (r.get("typeOfOwner") or "").upper()
role_w = 1.5 if any(k in role for k in ("CEO", "CFO", "COO", "ACCOUNTING")) else (0.7 if any(k in role for k in ("DIRECTOR", "10%")) else 1.0)
tx_dt = datetime.strptime(r["transactionDate"], "%Y-%m-%d")
near_ex = any(abs((tx_dt - ed).days) <= 2 for ed in ex_dates)
qty, owned = float(r["securitiesTransacted"]), float(r.get("securitiesOwned") or 0)
stake_ratio = round(qty / max(owned - qty, 1.0), 4) if owned > qty else None
out.append({"name": r["reportingName"], "type": r["transactionType"], "usd": round(qty * float(r["price"]), 2),
"weight": 0.5 if (r["transactionType"] == "S-Sale" and near_ex) else 1.0, "role_weight": role_w,
"stake_change_ratio": stake_ratio})
return out
# 4. 国会山议员交易:金额区间(如 "$1,000,001 - $5,000,000")取中值 + 剔除 >45 天逾期单
def parse_amount_midpoint(amount_str: str) -> float:
nums = [int(x.replace(",", "")) for x in re.findall(r"\$([\d,]+)", amount_str)]
return (nums[0] + nums[1]) / 2.0 if len(nums) == 2 else (float(nums[0]) if len(nums) == 1 else 0.0)
def is_timely_congress_stock(r: dict, max_lag: int = 45) -> bool:
if not r.get("symbol") or r.get("assetType") not in ("Stock", "Stock Option"):
return False
return (datetime.strptime(r["disclosureDate"], "%Y-%m-%d") - datetime.strptime(r["transactionDate"], "%Y-%m-%d")).days <= max_lag
常见问题(FAQ):追踪机构与内部人持仓时最容易踩哪些坑?
Q1:为什么伯克希尔 13F 股票总市值不等于财报里的总权益投资?
因为 SEC Form 13F 只强制披露美国本土上市的 13F 证券(美股正股、ADR 与美股期权),不包含伯克希尔持有的日本五大商社等非美股头寸。核对全球总资产需结合 财务报表分类 下的 资产负债表接口(/stable/balance-sheet-statement?symbol=BRK-A)。
Q2:除了 Form 4 高管交易,如何监控外部激进投资人举牌超过 5%?
当外部基金首次买超 5% 举牌线时需提交 Schedule 13D/13G。可直接调用 内部人交易分类 下的 受益所有权收购(13D/13G)(/stable/acquisition-of-beneficial-ownership?symbol=AAPL)捕捉举牌事件。
Q3:国会山接口里的 senateID(如佩洛西的 P000197)在参众两院通用吗?
通用。FMP 将国会唯一识别码(Bioguide ID)统一映射在 senateID 字段上,即使佩洛西是众议院议员也可直接将该 ID 传入 议员净资产追踪(/stable/senate-net-worth?senateID=P000197)查询历年净资产。