11. HistoryPanel 與可選「FactorResearch」輔助層(評估結論)

本文檔回答路線圖中的評估項:是否需要在 HistoryPanel 之上再抽象一層輕量 API(工作名 FactorResearch),專門計算 IC/IR、分位數組合收益、long-short 曲線等?

11.1. 1. 当前能力边界(已满足的部分)

以下能力已由 HistoryPanel 及相關 API 覆蓋,無需重複造輪子:

  • 因子列生產assign__setitem__returnsklineapply_ta 等;

  • 截面變換rankzscore(method='cs'|'ts')

  • 粗組合與基準portfolio(等權/加權、groupsbenchmark);

  • 研究向收益展示cum_returnnormalizemask=

  • 可視化plot(M,L) mask 高亮;

  • 與計量工具銜接to_df_dict、手工長表化後接 pandas / statsmodels(見教程 2.5 §11)。

對「輕量因子研究 + 粗驗」目標,上述已構成完整底座

11.2. 2. 若增加 FactorResearch 层,能解决什么?

典型封裝可包括:

  • 給定 因子列收益列(或標籤),輸出 逐期 ICIC 均值/IR

  • 分位數組合(按截面分桶)的淨值或收益序列;

  • 多空組合(top minus bottom)的時間序列。

這些均可用現有 rank / portfolio / values + pandas 在用戶側或獨立模塊中幾十行實現;封裝的價值在於 API 穩定、參數約定統一、減少複製粘貼錯誤

11.3. 3. 结论(短期不引入类库级 FactorResearch

結論:當前階段不在 qteasy 內核或 HistoryPanel 上強制增加 FactorResearch 類/子模塊。

理由簡述:

  1. 職責清晰HistoryPanel 已定位爲三維研究容器與顯式對齊/重採樣;IC/IR、分位組合等屬於研究工作流約定更強的「分析配方」,放在獨立教程、示例或未來可選包中更合適,避免 HP API 膨脹。

  2. 避免錯誤預期:單獨命名模塊易讓用戶以爲框架已內置「發表級因子檢驗」(如多重檢驗、樣本劃分、HAC 標準誤),而實際仍需用戶在 statsmodels 等側完成推斷。

  3. 與中期「內置因子庫」的關係:頂層路線圖中的 內置因子庫(M2.1) 若落地,更自然的做法是 因子定義 + 註冊 + 與 FactorSorter/回測銜接;批量 IC/分層可作爲因子庫周邊的 可選工具函數,而非 HistoryPanel 實例方法。

  4. 維護成本:IC 需約定收益前瞻窗口、停牌、退市、權重(市值加權 vs 等權)等,參數組合多,若無統一數據契約易引發支持成本。

11.4. 4. 若未来引入,建议形态(备忘)

若社區需求明確,推薦 獨立模塊(例如 qteasy.research.factor_stats 或項目外 qteasy-research),而非 HistoryPanel 方法:

  • 入參:HistoryPanelDataFrame + 列名 + 前瞻期數;

  • 出參:DataFrame / Series(可再繪圖爲輔);

  • 文檔:明確 替代 Backtester,且 內置 Fama–MacBeth / Newey–West(仍導出到 statsmodels)。

屆時應配套 TDD 與英文 ValueError 契約,與現有 HP 測試風格一致。

11.5. 5. 与教程的关系

實操路徑以 教程 2.5:使用 HistoryPanel 操作和分析歷史數據 的 §9–§11 爲準;本設計文檔僅記錄 架構層面的評估結論,不增加用戶必讀的 API 面。