財務資料視覺化分析助手

👤 明윤가명 📦 v1.0.0 ⭐ 4.3 ⬇️ 984 下載
📊 資料分析 免費

📖 技能介紹


name: financial-edu-david description: A股上市公司財務分析全流程工具包。覆蓋年報採集→三表提取→指標計算→視覺化看板→資料核對的全鏈路。用於對A股上市公司進行近3-5年財務經營狀況綜合分析,包括年報PDF下載(巨潮資訊網)、合併資產負債表/利潤表/現金流量表提取(PDF→xlsx)、財務指標計算(償債/營運/盈利/發展/現金流/杜邦分析)、ECharts動態視覺化看板(HTML)及東方財富F10資料交叉核對。觸發場景:(1) "分析XX公司財務狀況""XX股票財務分析""XX年報分析"等財務分析需求 (2) "下載XX年報" (3) "生成財務視覺化看板" (4) "核對XX財務資料"。


A股上市公司財務分析全流程

適用場景

對指定A股上市公司進行3-5年財務經營狀況綜合分析,覆蓋從資料採集到視覺化交付的完整鏈路。

前置條件

  • Python 3.8+,安裝依賴:pip install requests pdfplumber openpyxl
  • 網路可訪問 cninfo.com.cn、eastmoney.com、cdn.jsdelivr.net(或備選CDN)
  • 工作目錄有寫許可權

五階段工作流程

嚴格按以下順序執行,每階段完成後確認資料正確性再進入下一階段。

Phase 1: 年報採集

目標:從巨潮資訊網下載目標股票近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,可正常開啟

來源於7w4.net。

輸出:目錄下 N 份年報 PDF + 採集日誌.json

Phase 2: 三表提取

目標:從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

Phase 3: 財務分析

目標:計算完整的財務指標體系 + 杜邦分析

步驟: 1. 採集核心資料:從xlsx中提取30+個關鍵科目值,生成 _core_data.json - 必含科目:資產總計、負債合計、所有者權益合計、流動資產合計、流動負債合計、存貨、貨幣資金、應收賬款、固定資產、短期借款、長期借款、營業收入、營業成本、淨利潤、歸母淨利潤、歸母股東權益、利潤總額、銷售費用、管理費用、研發費用、財務費用、所得稅費用、經營活動/投資活動/籌資活動現金流量淨額、銷售商品提供勞務收到的現金 - 注意:單位從"元"轉換為"億元" 2. 逐項計算指標 → 生成 _metrics.json - 指標計算公式詳見 metrics_guide.md - 杜邦分析:ROE = 淨利率 × 總資產週轉率 × 權益乘數 3. 對每個指標標註判定(好/中/差),判定標準參考 metrics_guide.md

輸出_core_data.json + _metrics.json

Phase 4: 視覺化看板

目標:生成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 → 淨利率/週轉率/權益乘數 → 淨利潤÷營收 | 資產÷權益 → ... - 支援年份切換 - 每個節點顯示數值 + 運算子(× ÷ + −) - 底部多列明細列表

Phase 5: 資料核對

目標:確保分析資料與官方公開資料一致

步驟: 1. 呼叫東方財富F10介面核對(詳見 eastmoney_api.md) 2. 核心核對科目:資產總計、負債合計、所有者權益合計、經營/投資/籌資現金流淨額(必須100%一致) 3. 利潤表科目允許±5%誤差(因PDF解析跨行問題) 4. 將核對結果寫入看板的"資料核對"區 5. 若資料不一致,以東方財富F10為準修正 _core_data.json


關鍵注意事項

PDF解析常見陷阱

  1. 科目名跨行:A股年報PDF中,部分科目名被排版引擎拆分為2-3行,需使用 pending_subject 狀態機處理
  2. 附註引用:科目名後常跟"七、74"等附註引用,需正則清理
  3. 單位混淆:三張表單位均為"元",分析時需轉為"億元"
  4. 頁碼探測:三張表頁碼每年不同,必須逐份PDF人工或程式探測

資料模板

_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三表提取指令碼(接受命令列引數)
  • 視覺化看板由AI直接生成HTML(參考 scripts/generate_dashboard.py 中的模式),不依賴獨立指令碼

🤖 AI 評測

這個Skill功能覆蓋面廣,能完成從年報下載到圖表展示的全流程分析,文件說明詳細,參考資料豐富。但部分核心指令碼(如視覺化看板生成)只是示例模板而非完整實現,缺少自動化核對功能,有些步驟仍需手動操作。總體質量中上,功能完整度可進一步提升。

📊 多維度評分

適應性4.2
規範性4.1
有效性4.2
可靠性4.3
可信度5

📁 包含檔案 (7 個)

📄 SKILL.md 8.8 KB
📄 references/cninfo_api.md 1.5 KB
📄 references/eastmoney_api.md 1.5 KB
📄 references/metrics_guide.md 2.2 KB
📄 scripts/extract_financial_tables.py 13.1 KB
📄 scripts/fetch_annual_reports.py 8.1 KB
📄 scripts/generate_dashboard.py 4.2 KB