Skip to main content

取得財務季度報告

方法名稱:get_financial_statement

入參

is_latest 選擇規則(生產環境實測)

is_latest 的粒徑是每隻股票,不是「每隻股票的每個財期」:
  • is_latest=True:適合查詢「截至某日,每檔股票最新揭露的一份財報」的單期快照。即使季度範圍包含 多個財期,最終通常每隻股票只有一行。
  • is_latest=False:適合營收年比、季減、多期趨勢、歷史剖面、動態券池和回測。返回資料後仍要按 (symbol, fy_period) 選擇公告日期最新的版本,不能直接使用可能存在重複揭露的全部行。
  • 歷史研究和回測兩種模式都必須傳 date=<截面日或调仓日>。省略 date 會使用目前資料集中最新揭露, 可能把回測日期之後的財報帶入策略,造成未來資料外洩。
2026-07-25 在生產算力節點用 date="20250101"2023q1~2024q4 做過港美股對照驗證: 在同一測試省略 date 後,美股回傳了公告日期為 20260225/20260609 的記錄,港股回來了 20260526/20260601 的記錄。若策略回測時間是 2025 年,這些記錄在當時不可見,因此禁止用於歷史決策。

全參數生產測試經驗

2026-07-25 在生產算力節點逐項驗證了全部參數,使用經驗如下: fields 的靜默忽略尤其危險。例如請求 fields=["not_a_real_field"] 沒有報錯,只回傳了自動補充的 symbolfy_perioddate。因此 Agent 必須在計算前執行 required_fields <= set(df.columns) 檢查。

一年回測的動態時點規則

財報大致按季度披露,但不同公司公告日期不同。若基本面決定股票資格,一年回測必須在每個調倉日重新 計算 point-in-time 財務因子;不能把回測起點的合格券池固定使用一年。生產測試得到: 這不是未來資料問題,而是靜態券池使用了已經過期的基本面。正確動態流程是:
  1. 取得整個回測所需的多期財報,使用 is_latest=False,並以回測結束日作為介面最大 date
  2. 每個調倉日先篩選 announcement date <= rebalance date
  3. 在該可見子集中按 (symbol, fy_period) 保留公告日期最新的版本。
  4. 依公司財期選擇當時可見的最新財期,搭配上年同財期併計算因子。
  5. 形成包含 datesymbolfy_periodsource_date、各因子和 eligible 的面板。
  6. 交易時只讀取 panel.date <= context.now 的最近剖面;有新公告就在下一調倉日更新,沒有則沿用舊值。
順序不能改成“先對回測結束日全部數據去重,再按調倉日過濾”,否則後續重述版本可能覆蓋早期當時可見的 版本。每個斷面必須驗證 max(source_date) <= rebalance_date

回應參數

回應參數

以下為財務相關字段 現金流量表(cfs) 資產負債表(bs) 利潤表(is)

使用範例

取得某季度內某檔股票的財務季度報告

回應範例

取得某一季度內某檔股票的最新財務季度報告且使用fields

回應範例
這裡的「最新」表示 0700.HK20241014 及之前公告日期最大的一行。它不會返回每個歷史財期各自的 最新版,因此不能直接用於年比計算。

歷史剖面與同比計算

收入、毛利和經營現金流在不同公司可能只填充相容欄位之一。常用候選依序為:
  • 收入:is_reported_revenueis_revenue_business_total
  • 毛利:is_reported_gross_profitis_gross_profit
  • 經營現金流量:cfs_net_cf_operatingcfs_reported_cf_operating
選擇字段後先用 pd.to_numeric(..., errors="coerce") 轉換,刪除空字串、NaN 和正負無窮;收入同比的 上年同財期收入必須大於 0。財期應按返回的 fy_period 實際後綴匹配,不要假定所有市場都只返回季度格式。

為一年回測建立無未來資料的動態財務面板

以下示範一次預取、逐調倉日切片的關鍵順序。 period_sort_keyprevious_year_period 和字段清洗可以重複使用 上一節函數:
calculate_financial_metrics 應返回清洗後的 revenue_growthgross_marginoperating_cfeligible。 若調倉頻率是每 5 個交易日,則面板也以每 5 個交易日產生;財務數值可在兩次公告之間保持不變,但資格 判斷必須在新公告後的下一調倉日更新。不要在 handle_data 每個 bar 重新查詢接口,應在離線階段或 initialize 中一次建置並快取面板。