利用 13F 持仓和 Form 4 文件研究股票仓位
文章 《交易机器学习》
总结
本参考资料介绍了两个用于研究股票仓位和内部人士活动的公开 SEC 文件来源。季度 13F 报告提供机构持仓,可选择经过整理的管理人集合,也可使用涵盖完整申报期的批量数据。Form 4 文件记录所选股票代码对应的内部人士交易。指南介绍如何下载、加载并整理数据以供后续分析,包括股票层面的特征以及机构与股票之间的持仓关联。
一个关键分析细节是,持仓数据同时保留季度末报告日期和之后的公开申报日期。这些日期区分了持仓实际存在的时间与研究者能够观察到该持仓的时间;构建时间敏感特征或避免前视偏差时,必须考虑这一点。文档指出了持仓关系图、拥挤信号、资产嵌入和内部人士交易分析等后续用途,但没有提供实证结果或交易策略。覆盖范围取决于所选管理人、股票代码或批量申报期;申报数据描述的是已报告的持仓和交易,并非完整且持续更新的当前持仓视图。
核心观点
- 13F 文件可提供所选管理人或更广申报范围的季度机构持仓。
- Form 4 文件提供所选股票内部人士交易的公开记录。
- 将报告日期与申报日期分开记录,以区分持仓时间和公开可得时间。
- 持仓关系和股票层面特征可支持拥挤度及机构网络研究。
- 申报数据集的覆盖范围和时间存在限制,因此无法实时反映持仓情况。
标签
全文
# Equity Positioning: 13F + Form 4
# Equity Positioning: 13F + Form 4
SEC regulatory filings that capture **positions** and **insider activity**
at the equity level. All data is public domain (SEC EDGAR). Respect the
10 req/sec rate limit via a descriptive `User-Agent` — downloaders here
handle this automatically.
## Datasets
| Dataset | Filing | Universe | Script | Loader(s) |
| --- | --- | --- | --- | --- |
| Institutional holdings | 13F | Curated 10 managers (per-cik) or full universe (bulk) | `13f_download.py` | `load_institutional_holdings_13f`, `load_13f_stock_features`, `load_13f_edges`, `load_13f_bulk_holdings` |
| Insider transactions | Form 4 | User-chosen tickers | `form4_download.py` | Raw XML — read directly via `pathlib` (see Ch4 NB 03) |
## Download Commands
```bash
# === 13F (institutional holdings) ===
# per-cik (default): 10 curated managers, 4 most recent 13F-HR filings each
uv run python data/equities/positioning/13f_download.py
uv run python data/equities/positioning/13f_download.py --num-filings 8
uv run python data/equities/positioning/13f_download.py --max-institutions 3
# bulk: one or more quarterly filing windows (SEC's own labels)
uv run python data/equities/positioning/13f_download.py --mode bulk --quarters 2024Q3
uv run python data/equities/positioning/13f_download.py --mode bulk --quarters 2024Q2,2024Q3
# === Form 4 (insider transactions) ===
uv run python data/equities/positioning/form4_download.py --ticker TSLA --count 20
uv run python data/equities/positioning/form4_download.py --ticker TSLA,AAPL,MSFT --count 10
```
## Directory Layout
```
$ML4T_DATA_PATH/equities/positioning/
├── 13f/
│ ├── institutional_holdings.parquet # per-cik: raw holdings (10 curated managers)
│ ├── institution_stock_edges.parquet # per-cik: institution → stock edges
│ ├── stock_features.parquet # per-cik: stock-level features
│ ├── coownership_matrix.npy # per-cik: stock × stock similarity
│ ├── coownership_stocks.txt # per-cik: row/col CUSIPs
│ └── bulk/
│ └── {YYYYQN}/
│ ├── institutional_holdings.parquet # bulk: full-window universe (~3M rows)
│ └── bulk_13f.zip # cached raw SEC zip
└── form4/
└── {TICKER}/{accession}.xml # Raw Form 4 insider filings
```
## Loading
```python
from data import (
load_institutional_holdings_13f,
load_13f_stock_features,
load_13f_edges,
load_13f_bulk_holdings,
)
# 13F per-cik (curated managers)
holdings = load_institutional_holdings_13f(start_date="2024-01-01")
features = load_13f_stock_features()
edges = load_13f_edges()
# 13F bulk (full universe, one quarter)
q3_2024 = load_13f_bulk_holdings("2024Q3")
```
The holdings schema preserves both SEC dates: `report_date` is the quarter-end
position date and `filing_date` is when the filing became public.
## Consumers
- **Ch4 NB 03** — Form 4 insider-transaction parsing
- **Ch4 NB 05** — Full-universe 13F analysis via `--mode bulk`
- **Ch10 NB 02** — Asset embeddings from 13F holdings
- **Ch22 NB 07** — Institutional ownership graph + crowding signals
- **Ch23** — `09_knowledge_graph_features`, `05_institutional_holdings_kg`, `04_rag_comparison_benchmark`在遵守原作品许可的前提下,附作者信息全文展示。 许可协议: MIT
此摘要由 Stratmill 研究智能体根据原文撰写,并非原文副本。