用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
直接命令不会经过审查 Prompt;运行前请先检查来源。
npx skills add https://github.com/cxcscmu/SkillLearnBench --skill run2-sec13f-data-loader命令会保持在同一行。复制前请横向滚动并检查完整内容。
想先保存到本地?可下载 SkillsMP 当前能够提供的文件。
正在显示 SKILL.md
| name | run2_sec13f_data_loader |
| description | Load and parse SEC 13-F TSV files with proper data type handling and validation |
The SEC 13-F dataset consists of multiple tab-separated value (TSV) files that are linked together using ACCESSION_NUMBER. This skill provides guidance on loading, parsing, and validating these files for financial analysis.
| File | Primary Key | Contents | Key Columns |
|---|---|---|---|
| COVERPAGE.tsv | ACCESSION_NUMBER | Fund filing metadata | ACCESSION_NUMBER, FILINGMANAGER_NAME, REPORTCALENDARORQUARTER, DATEREPORTED |
| INFOTABLE.tsv | ACCESSION_NUMBER, CUSIP | Stock holdings | ACCESSION_NUMBER, CUSIP, NAMEOFISSUER, VALUE, SSHPRNAMT, SSHPRNAMTTYPE |
| SUMMARYPAGE.tsv | ACCESSION_NUMBER | Filing summary | ACCESSION_NUMBER, TABLEVALUETOTAL, TABLEENTRYTOTAL, OTHERINCLUDEDMANAGERSCOUNT |
| OTHERMANAGER.tsv | ACCESSION_NUMBER | Co-managers | ACCESSION_NUMBER, MANAGERNAME |
| SUBMISSION.tsv | ACCESSION_NUMBER | Submission details | ACCESSION_NUMBER, FILER_ID, FILING_DATE |
import pandas as pd
# For large files, specify data types to reduce memory and prevent type coercion
dtypes = {
'ACCESSION_NUMBER': 'str',
'CUSIP': 'str',
'VALUE': 'int64',
'SSHPRNAMT': 'int64'
}
# Use low_memory=False to prevent mixed-type warnings
infotable = pd.read_csv(
'/root/2025-q3/INFOTABLE.tsv',
sep='\t',
dtype=dtypes,
low_memory=False
)
# Verify VALUE sum matches SUMMARYPAGE
summarypage = pd.read_csv('/root/2025-q3/SUMMARYPAGE.tsv', sep='\t')
for accession in infotable['ACCESSION_NUMBER'].unique():
holdings_value = infotable[infotable['ACCESSION_NUMBER'] == accession]['VALUE'].sum()
summary_value = summarypage[summarypage['ACCESSION_NUMBER'] == accession]['TABLEVALUETOTAL'].values
if len(summary_value) > 0:
assert holdings_value == summary_value[0], f"Value mismatch for {accession}"
Each quarter has its own folder with all TSV files:
/root/2025-q2/ (reports for 30-JUN-2025)/root/2025-q3/ (reports for 30-SEP-2025)Each file in a folder contains data for all funds that reported in that quarter.
# Get fund manager name for each holding
holdings_with_managers = pd.merge(
infotable,
coverpage[['ACCESSION_NUMBER', 'FILINGMANAGER_NAME']],
on='ACCESSION_NUMBER'
)
# Find accession number by fund manager name
coverpage = pd.read_csv('COVERPAGE.tsv', sep='\t')
fund_row = coverpage[coverpage['FILINGMANAGER_NAME'].str.contains('Renaissance', case=False)]
accession = fund_row['ACCESSION_NUMBER'].values[0]
low_memory=False to avoid mixed type warnings基于 SOC 职业分类