feat(web): 因子研究升级 + 因子组合页
- 因子元数据增加 brief 使用简介(后端 FactorDef + /api/factors 返回,9 个内置因子补齐文案) - 因子研究页: · 时间默认「今日 ~ 近 6 个月」 · 因子多选,逐个跑 IC/RankIC Job 并分卡展示报告 · 目录显示使用简介,行点击展开公式/方向/用法详解 · 新增计分规则说明与「去因子组合」入口 - 因子组合页 /factors/compose:多因子勾选+权重、组合得分规则说明(z-score×权重求和→TopN), 可配 topN/调仓/区间/ST,一键回测 Job → 净值/回撤/月度/未建模标注 - 回测页时间默认同样近 6 月 - 验证:tsc + next build 通过;组合回测(momentum_60×1.5 + volatility_60×1.0)Job 成功归档 EXP-330CAAAE(-13.51%,交易 20);后端 factors/research/api 相关测试通过 / ruff clean
This commit is contained in:
@@ -0,0 +1,14 @@
|
||||
/** 研究区间默认值:结束=当日,开始=往前推 6 个月(YYYY-MM-DD)。 */
|
||||
|
||||
export function isoDate(d: Date): string {
|
||||
const m = String(d.getMonth() + 1).padStart(2, "0");
|
||||
const day = String(d.getDate()).padStart(2, "0");
|
||||
return `${d.getFullYear()}-${m}-${day}`;
|
||||
}
|
||||
|
||||
export function recentRange(): { start: string; end: string } {
|
||||
const end = new Date();
|
||||
const start = new Date();
|
||||
start.setMonth(start.getMonth() - 6);
|
||||
return { start: isoDate(start), end: isoDate(end) };
|
||||
}
|
||||
@@ -13,6 +13,7 @@ export interface Stock {
|
||||
export interface FactorMeta {
|
||||
name: string;
|
||||
description: string;
|
||||
brief?: string;
|
||||
formula: string;
|
||||
frequency: string;
|
||||
lookback: number;
|
||||
|
||||
Reference in New Issue
Block a user