name: financial-edu-david description: A股上市公司財務分析全流程工具包。覆蓋年報採集→三表提取→指標計算→視覺化看板→資料核對的全鏈路。用於對A股上市公司進行近3-5年財務經營狀況綜合分析,包括年報PDF下載(巨潮資訊網)、合併資產負債表/利潤表/現金流量表提取(PDF→xlsx)、財務指標計算(償債/營運/盈利/發展/現金流/杜邦分析)、ECharts動態視覺化看板(HTML)及東方財富F10資料交叉核對。觸發場景:(1) "分析XX公司財務狀況""XX股票財務分析""XX年報分析"等財務分析需求 (2) "下載XX年報" (3) "生成財務視覺化看板" (4) "核對XX財務資料"。
7w4.net有更好的技能外掛。
對指定A股上市公司進行3-5年財務經營狀況綜合分析,覆蓋從資料採集到視覺化交付的完整鏈路。
pip install requests pdfplumber openpyxl嚴格按以下順序執行,每階段完成後確認資料正確性再進入下一階段。
目標:從巨潮資訊網下載目標股票近N年(預設4年)年報PDF
步驟:
1. 確定股票程式碼(6位數字)、市場(sh/sz)、年份範圍
2. 執行採集指令碼:
bash
python scripts/fetch_annual_reports.py \
--code {股票程式碼} --name "{股票名稱}" \
--years {起始年}-{結束年} --dir "{目標目錄}" --market {sh|sz}
3. 若指令碼因API變化失敗,手動執行以下步驟:
- 先查 orgId:GET https://www.cninfo.com.cn/new/information/topSearch/query?key={code}
- 再查公告:POST https://www.cninfo.com.cn/new/hisAnnouncement/query(引數詳見 cninfo_api.md)
- 下載PDF:GET https://static.cninfo.com.cn/{adjunctUrl}
4. 驗證:PDF檔案大小 > 100KB,可正常開啟
輸出:目錄下 N 份年報 PDF + 採集日誌.json
目標:從PDF提取合併資產負債表、利潤表、現金流量表 → xlsx
步驟:
1. 先用 pdfplumber 探測每份PDF中三張表所在頁碼(0索引):
python
import pdfplumber
with pdfplumber.open("年報.pdf") as pdf:
for i, page in enumerate(pdf.pages):
text = page.extract_text() or ""
if "合併資產負債表" in text and "母公司" not in text:
print(f"資產負債表在第{i}頁")
# 同理探測利潤表、現金流量表
重要:每張表可能跨2-3頁,需確認起始頁和結束頁
2. 構建 pdf_config.json(格式見下方示例)
3. 執行提取指令碼:
bash
python scripts/extract_financial_tables.py --dir "{目標目錄}" --config pdf_config.json
4. 若出現科目名缺失(因PDF跨行拆分導致),需手動補全核心科目(資產總計、負債合計、營業收入、淨利潤等)
pdf_config.json 格式:
{
"2022": {
"file": "2023-04-21_公司名_2022年度報告.PDF",
"balance_pages": [104, 105, 106],
"income_pages": [108, 109, 110],
"cash_pages": [111, 112, 113],
"ann_id": "1216492757",
"ann_url": "https://www.cninfo.com.cn/new/disclosure/detail?annoId=1216492757",
"raw_url": "https://static.cninfo.com.cn/finalpage/2023-04-21/1216492757.PDF"
}
}
PDF解析核心問題:
- 科目名跨行拆分(如"三、營業利潤(虧損以"-"號填列)"可能分3行):指令碼使用 pending_subject 狀態機處理
- 附註引用混入科目名(如"七、74"):正則清理
- 即使處理仍有遺漏,需要以東方財富F10資料為基準補充核心科目
輸出:每年一份 xlsx(3個sheet),檔案命名:{股票名}_合併三表_{年份}年.xlsx
目標:計算完整的財務指標體系 + 杜邦分析
步驟:
1. 採集核心資料:從xlsx中提取30+個關鍵科目值,生成 _core_data.json
- 必含科目:資產總計、負債合計、所有者權益合計、流動資產合計、流動負債合計、存貨、貨幣資金、應收賬款、固定資產、短期借款、長期借款、營業收入、營業成本、淨利潤、歸母淨利潤、歸母股東權益、利潤總額、銷售費用、管理費用、研發費用、財務費用、所得稅費用、經營活動/投資活動/籌資活動現金流量淨額、銷售商品提供勞務收到的現金
- 注意:單位從"元"轉換為"億元"
2. 逐項計算指標 → 生成 _metrics.json
- 指標計算公式詳見 metrics_guide.md
- 杜邦分析:ROE = 淨利率 × 總資產週轉率 × 權益乘數
3. 對每個指標標註判定(好/中/差),判定標準參考 metrics_guide.md
輸出:_core_data.json + _metrics.json
目標:生成HTML格式的動態財務分析資料視覺化看板
看板結構(必須包含以下全部模組):
| 模組 | 內容 | 圖表型別 |
|---|---|---|
| 頁頭 | 公司名、程式碼、年份、資料來源 | 靜態HTML |
| 核心結論 | 5條關鍵發現(好/中/差三色標註) | 靜態HTML |
| 資料核對 | 與東方財富F10對比表 | 靜態表格 |
| 指標一覽 | 償債/營運/盈利/發展 四類指標彙總 | 彩色標註表格 |
| 圖表1 | 資產負債趨勢 | ECharts分組柱狀圖 |
| 圖表2 | 營收與淨利潤趨勢 | ECharts多線圖 |
| 圖表3 | 經營/投資/籌資現金流 | ECharts分組柱狀圖 |
| 圖表4 | 盈利能力指標趨勢 | ECharts多線圖 |
| 圖表5 | 償債能力指標趨勢 | ECharts多線圖 |
| 圖表6 | 營運能力指標 | ECharts柱+線混合圖 |
| 圖表7 | 增長率指標 | 分組柱狀圖 |
| 圖表8 | 費用率結構 | 堆疊柱狀圖 |
| 杜邦分析 | ROE分解樹形圖(東方財富風格) | 純HTML+CSS |
| 風險預警 | 高中低三類風險 + 改進建議 | 彩色卡片 |
技術規範:
- 使用 ECharts 5.x CDN(5個源自動回退)
- 所有資料內嵌在 <script> 中,無外部JSON依賴
- 使用 IIFE 封裝避免全域性變數汙染
- 參考設計:generate_dashboard.py
杜邦分析實現: - 純 HTML+CSS(不用 ECharts graph),更接近東方財富F10風格 - 5層樹形結構:ROE → 淨利率/週轉率/權益乘數 → 淨利潤÷營收 | 資產÷權益 → ... - 支援年份切換 - 每個節點顯示數值 + 運算子(× ÷ + −) - 底部多列明細列表
目標:確保分析資料與官方公開資料一致
步驟:
1. 呼叫東方財富F10介面核對(詳見 eastmoney_api.md)
2. 核心核對科目:資產總計、負債合計、所有者權益合計、經營/投資/籌資現金流淨額(必須100%一致)
3. 利潤表科目允許±5%誤差(因PDF解析跨行問題)
4. 將核對結果寫入看板的"資料核對"區
5. 若資料不一致,以東方財富F10為準修正 _core_data.json
pending_subject 狀態機處理_core_data.json 示例結構:
{
"2022": {
"資產總計": 10309876543.21,
"負債合計": 6615432109.87,
"營業收入": 6165432109.87,
...
}
}
_metrics.json 示例結構:
{
"2022": {
"流動比率": 0.65,
"資產負債率%": 64.17,
"銷售毛利率%": 14.83,
"ROE_歸母%": 0.87,
"杜邦ROE": 0.87,
"杜邦淨利率": 0.35,
"杜邦總資產週轉率": 0.60,
"杜邦權益乘數": 3.47,
...
}
}
scripts/fetch_annual_reports.py — 年報下載指令碼(接受命令列引數)scripts/extract_financial_tables.py — PDF三表提取指令碼(接受命令列引數)scripts/generate_dashboard.py 中的模式),不依賴獨立指令碼這個Skill功能覆蓋面廣,能完成從年報下載到圖表展示的全流程分析,文件說明詳細,參考資料豐富。但部分核心指令碼(如視覺化看板生成)只是示例模板而非完整實現,缺少自動化核對功能,有些步驟仍需手動操作。總體質量中上,功能完整度可進一步提升。