# Finathink ## 本地优先的金融研究与量化策略工作台 Finathink 将用户提供的数据、证据、因子、量化检验、风险检查、纸面组合和学习记录组织成一条可追溯的研究流程。运行结果保存为结构化记录和可离线打开的 HTML 报告,适合个人研究、量化学习、策略复盘和多代理协作。 ## 研究流程 ```text 用户数据连接 → 数据标准化与点时检查 → 五类分析师并行 → 研究经理汇总证据 → 受控因子提案 → 回测与 OOS 检验 → 指标、换手、衰减与排名 → 确定性风险检查 → 纸面组合 → 成本与滑点模拟 → 纸面决策卡 → HTML 报告 → as-of 学习提案 ``` 每个阶段都有稳定的运行 ID、输入与输出指纹、角色、状态、证据引用和 checkpoint。相同的 fixture 输入可以重放并得到稳定指纹。 ## 可以做什么 金融事件可以进入证据链、知识理解和量化研究;策略想法可以进入因子、回测、OOS、风控和纸面组合流程。 ### 用户数据接入 - 保存用户自己的数据 API 连接配置和字段映射。 - 通过显式试连取得 JSON 数据,标准化为 `DataBatch`。 - 记录数据指纹、字段质量、来源说明和 point-in-time 状态。 - 使用环境变量或系统钥匙串引用保存凭证,凭证值不进入研究记录。 ### 后台研究任务 - 在“研究任务”页显式获取并保存低频 OHLCV 快照,或选择已保存的快照。 - 选择自己的兼容模型接口,授权发送角色材料;五类分析师并行研究,经理汇总观察、分歧与待验证假设。模型观察与服务器计算结果分别留档,见[模型材料研究指南](docs/PHASE6_MODEL_RESEARCH_GUIDE.md)。 - 通过独立 supervisor 与 spawn worker 运行两观察期动量基线、含费用回测和同信号纸面风险检查。 - 跟踪阶段进度、取消任务,并在刷新页面或重启服务后继续查看。 - 按数据与策略指纹保存已校验的报告;历史记录、Overview 和研究对比读取同一本地库存。 - 本地离线角色流程可直接运行,研究问题与资源预算随任务留档。 ### 多代理研究 - 并行运行基本面、技术、情绪、新闻和学习分析师。 - 由 `ResearchManager` 汇总带证据引用的观察,形成研究计划。 - 每个角色都经过统一的任务、能力、状态和错误合同。 - 可使用离线驱动、用户配置的兼容模型接口和 Codex handoff 合同。 ### 因子与量化 - 在“因子实验”从研究问题开始,选择有公式、来源和数学复现的研究配方,提交有界窗口与成本设置。 - 从方法、公开行为和反例资料库检索研究材料,展开检查版本、输入要求与来源,再带入研究问题。 - 按任务导出方法交接包,校验外部返回的类型化提案,绑定数据字段附件,沿同一后台流程建立受控因子研究。 - 复查数据审计、语义、IC、去重、实际回测、OOS、增量价值、容量和归档九步的原始证据。 - 在因子详情按版本查看来源声明、原式、数据时间域、本地结果、范围用途决定与反例。 - 执行扩展式滚动验证、标签 purge/embargo、候选冻结与本地一次性最终测试;保留失败实验和多重检验记录。 - 按实际样本、成本和方法分组比较,展示预先声明阈值下的相邻参数平台,重启后继续查看同一研究历史。 - 将自然语言假设映射到固定 DSL 模板和受控因子提案。 - 进行训练、验证、隐藏 OOS、冻结和一次性测试。 - 计算 IC、ICIR、换手、多周期衰减并按确定性指标排名。 - 记录来源、许可证、PIT 语义、字段依赖、版本和研究指纹,生成待人工准入的提案。 - 使用内部确定性量化网关执行回测和风险指标计算。 ### 风险、组合与纸面交易 - 同一快照与政策贯穿行业/信号暴露、历史 CVaR、压力情景、约束配置和离线报告。 - 逐条展示约束对权重与保留现金的影响,以及策略、成本、风险缩放的路径差额。 - 在下一观察核对停牌与执行容量,区分计划、待执行、部分成交和已归档的纸面成交。 - 检查 PIT、流动性、集中度、回撤和压力情景。 - 按用户约束生成 long-only 纸面组合和权重。 - 模拟费用、滑点、现金变化和纸面成交台账。 - 风险、组合或量化阶段未通过时,决策卡保持不可执行状态。 ### 队列、恢复与学习 - 本地持久化队列支持幂等、租约、重试、退避、取消和崩溃恢复。 - Worker 使用 checkpoint 和资源限制恢复长任务。 - 结算后的纸面事件可以生成因子权重、风险规则和注册表更新提案。 - 学习提案保留 as-of、结算指纹和证据引用,并经过显式准入记录。 - 在复盘页查看固定观察期的纸面结果、因子衰减与修改预览,显式批准或拒绝提案。 - 批准创建新配置版本,按所选版本复跑或选择旧版本比较;保留原报告、父版本和回溯标识。 ### HTML 报告与研究界面 - 使用统一蓝白工作台,桌面与移动宽度均可通过键盘操作和可见焦点访问研究内容。 - 生成自包含的多阶段 HTML 报告、manifest 和 activity 记录。 - 因子报告将冻结方法清单、公式、数据附件、政策、九步结果与实际账本读数放入同一离线文件。 - 图形与表格读取同一份计算结果;报告保留原生成版本、校验指纹和创建时间。 - 报告包含分析师、证据、研究、量化、风险、纸面决策和学习状态。 - 状态墙提供阶段、角色、重试、checkpoint、工具摘要和 manifest 指纹。 - 可比较多次实验的输入、指标和限制,并保留离线无 JavaScript 阅读能力。 - 中文导航与首次使用引导,提供研究问题模板、数据/模型准备状态、中文异常恢复提示和服务器耗时预算。 - 历史任务分页查询;完整研究状态可在关闭应用后私密备份、校验并恢复到新目录,另有可分享的脱敏诊断。 ## 快速开始 要求 Python 3.11 或更高版本。 ```bash python3 -m venv .venv source .venv/bin/activate python3 -m pip install . finathink --offline --db .local-state/app.sqlite3 --port 8765 ``` 打开: - 首页: - 后台研究任务: - 因子实验: - 复盘与学习: - 研究工作区: - 方法资料库: - 公开行为档案: - 反例与教训: - 因子策略工作台: - Provider 设置: 首次体验:打开“后台研究任务”,显式生成 SAMPLE 快照,选择研究问题模板,保留离线执行配置并提交。完成后打开 HTML 报告,即可保存后离线阅读。 Windows 安装、自有 API 配置、异常处理与备份恢复见[中文快速开始](docs/QUICKSTART.md)。低频数据准备、任务接口与验收说明见[本地研究闭环指南](docs/PHASE5_LOCAL_RESEARCH_GUIDE.md)。 研究配方、滚动验证、可比条件和风险执行口径见[量化实验与稳健性验证指南](docs/PHASE7_QUANT_RESEARCH_GUIDE.md)。 复盘观察期、提案审批、配置版本和复跑操作见[复盘与学习审核指南](docs/PHASE8_LEARNING_REVIEW_GUIDE.md)。 ## 仓库结构 ```text src/finahinking/ Python 核心包、研究编排、量化与报告引擎 frontend/ 研究图表、工作台和交互界面 fixtures/ 可复现的样例与测试数据 tests/ 单元、集成、契约和产品流程测试 docs/ 架构、研究指南、数据适配器与验证文档 site/ 静态产品入口与前端构建资源 .github/ CI、安全和自动化配置 ``` ## 研究文档 - [从自己的数据到第一份研究报告](docs/RESEARCH_FIRST_RUN_GUIDE.md) - [方法、因子与离线报告指南](docs/PHASE15_RESEARCH_WORKSPACE_GUIDE.md) - [当前研究能力与验收](docs/FINATHINK_CAPABILITY_ASSESSMENT_2026-10-27.md) - [快速开始](docs/QUICKSTART.md) - [Factor Strategy Workbench 指南](docs/FACTOR_STRATEGY_WORKBENCH_GUIDE.md) - [Factor Strategy Workbench 验证记录](docs/FACTOR_STRATEGY_WORKBENCH_VALIDATION.md) - [研究代理指南](docs/RESEARCH_AGENT_GUIDE.md) - [策略研究指南](docs/STRATEGY_RESEARCH_GUIDE.md) - [用户数据 API 指南](docs/USER_DATA_API_GUIDE.md) - [研究运行时指南](docs/RESEARCH_RUNTIME_GUIDE.md) - [自主研究运行时发布清单](docs/RESEARCH_RUNTIME_RELEASE_CHECKLIST.md) - [研究能力最终报告](docs/RESEARCH_CAPABILITY_FINAL_REPORT.md) ## 开发检查 ```bash python3 scripts/validate_governance.py . PYTHONPATH=src python3 -m pytest -q python3 -m ruff check src tests scripts python3 -m pip check git diff --check ```