--- name: alpha-desk description: AI 投研工作台——在 deepseek-harness 里编排 virattt/ai-hedge-fund(美股多策略 AI 基金,支持回测)、iFinD 权威数据源(经 plugins/ifind 访问,财报/公告/股东/预测/选股,A股港股美股)与本地 A股/港股技术分析技能,配合 risk-gate 风控钩子、定时盯盘与投资记忆,完成"分析→回测→解读→复盘"的完整投研闭环。当用户要求分析美股、运行 AI 基金、回测策略、比较投资大师观点、生成投研报告、定时盯盘、复盘投资假设,或查询财报/财务报表/公告/股东户数/业绩预测/智能选股/iFinD/同花顺数据时使用。触发词:AI 基金、对冲基金、回测、巴菲特、格雷厄姆、投研、美股分析、盯盘、复盘、iFinD、同花顺、股东户数、财务报表、公告、业绩预测。 --- # Alpha Desk — AI 投研工作台 把 dsh 会话变成一个投研交易台:底层引擎是 [virattt/ai-hedge-fund](https://github.com/virattt/ai-hedge-fund)(MIT,CLI 名 `aihf`),上层由 dsh 的 skill / hook / cron / memory 扩展点编排。 **硬性合规线(每次回复都要遵守):** - 本技能输出的是**研究与教育内容**,不是投资建议;每次给出结论时附上免责声明:"本内容仅供学习研究,不构成投资建议。" - **暂不执行真实交易**。risk-gate 插件会拦截实盘命令,但即使插件未安装,也不得运行任何券商下单、资金划转命令。用户要求实盘时,明确拒绝并说明原因。 - aihf 内部对 LLM 信号的调用本身会消耗用户的 LLM API 额度,运行前先告知。 ## 前置条件检查(每次会话首次使用前执行) ```bash command -v aihf && aihf --help | head -5 ``` 未安装则:`pipx install aihf`(或 `uv tool install aihf`)。 运行需要两类 key(导出在 shell 环境,或写入 `~/.hedge-fund/.env`): - `FINANCIAL_DATASETS_API_KEY` — 行情与基本面数据(financialdatasets.ai,有免费档) - 一个 LLM key:`DEEPSEEK_API_KEY`(推荐,与 dsh 同栈)或 `ANTHROPIC_API_KEY` / `OPENAI_API_KEY` / `GOOGLE_API_KEY` / `XAI_API_KEY` / `KIMI_API_KEY` aihf 默认推理模型是 `claude-sonnet-5`(走 Anthropic)。用 DeepSeek 时,任选其一: - `export HEDGE_FUND_LLM_MODEL=deepseek-v4-pro`(全局默认) - 或在命令里加 `--model deepseek-v4-pro`(单次覆盖) 缺 key 时**停下来让用户提供**,不要伪造数据、不要编造回测结果。所有数字必须来自 aihf 的真实输出。 ## 核心概念:mandate(基金委托书) mandate 是一个 YAML,描述"交易台"本身——策略、投资大师模型、风控、资金、再平衡频率——**不含股票代码**;标的是运行时通过 `--tickers` 传入的。本仓库 `mandates/` 目录自带三份: | 文件 | 风格 | 再平衡 | 适用场景 | |---|---|---|---| | `deep-value-weekly.yaml` | 格雷厄姆×2 + 巴菲特 + 芒格,70% 价值 + 30% 财报漂移量化 | weekly | 默认首选,稳健演示 | | `fundamental-ls-market-neutral.yaml` | 五位大师投票的多空市场中性 | monthly | 展示多空推理 | | `inflections-daily.yaml` | 德鲁肯米勒 + 林奇的宏观拐点 | daily | 压力测试风控 | 可用的 alpha 模型(`models[].name`):`graham`、`buffett`、`munger`、`lynch`、`druckenmiller`(LLM 驱动);`pead`(财报漂移,量化,不消耗 LLM 额度)。用户想自定义组合时,复制一份 mandate 改写即可。 ## 工作流一:单次投研周期("今天这只基金怎么看这几只票") ```bash aihf mandates/deep-value-weekly.yaml --tickers AAPL,MSFT,NVDA --out records/cycle-$(date +%F).json ``` - stdout 是纯 JSON(CycleRecord),人类摘要走 stderr;始终用 `--out` 落盘到 `records/` 供复盘。 - CycleRecord 关键字段:`strategies[].signals[]`(每个模型的 `value` ∈ [-1,1] 看多/看空强度 + `reasoning` 文字理由)、`positions`(成交后持股)、`equity_before`、`skipped`(数据缺失的票及原因)。 - 解读时:**先念各模型的 reasoning 原文要点,再给综合仓位变化**——"巴菲特为什么看多、格雷厄姆为什么反对"是用户最想看的。分歧要明确指出,不要和稀泥。 ## 工作流二:回测("这套策略过去一年表现如何") ```bash aihf mandates/deep-value-weekly.yaml --tickers AAPL,MSFT,NVDA --backtest --start 2025-08-01 --out records/backtest-$(date +%F).json ``` - 回测从 `--start` 到 `--date`(默认今天)按 mandate 的再平衡频率逐周期运行,输出含净值曲线与基准(mandate 里的 `benchmark`)对比指标。 - 解读必给:累计收益 vs 基准、最大回撤、胜率,以及**哪几次调仓贡献/拖累最大**(从逐周期记录里定位)。 - 回测耗 LLM 额度 = 周期数 × 模型数 × 标的数,运行前估算并告知用户(例:weekly × 52 周 × 3 个 LLM 模型 × 3 只票 ≈ 468 次调用)。想省钱就先缩短区间或减少模型。 - 明确提醒:历史回测不代表未来收益。 ## 工作流三:A股/港股联动 aihf 只覆盖美股。用户问 A股/港股时,改用 `stock-technical-indicators` 技能(如已安装)。两边结果可以同框对比(例:"同一套价值逻辑在美股和 A股各自选出什么"),但要讲清两边引擎和数据源不同,结论不可直接互换。 ## 工作流三·五:iFinD 权威数据(plugins/ifind,免 iFinD 账号) 需要**权威基本面/公告/股东/预测数据**时(财务报表、业务分部、股东户数、业绩预告、智能选股),用本仓库 `plugins/ifind/ifind_tool.py`——它经 Kimi agent-gw 访问同花顺 iFinD,凭证由脚本自行解析(plugins/ifind/.env 或本机 Kimi 桌面端配置),不需要用户提供任何账号,也不依赖环境变量注入。 ```bash # 1. 先读 API 目录(9 个 API 的参数、ticker 格式、覆盖范围约定) terminal/.venv/bin/python plugins/ifind/ifind_tool.py describe # 2. 按目录的参数约定调用(必须用 terminal/.venv/bin/python,它有 agent-gw SDK) terminal/.venv/bin/python plugins/ifind/ifind_tool.py call ifind_get_financial_statements \ --params-json '{"ticker": "600519.SH", ...}' ``` 规则: - **必须先 describe 再 call**,参数严格按返回的目录构造(ticker 格式:A股 `600519.SH`、港股 `0001.HK`、美股 `AAPL.O`)。 - 公告与业绩预测仅覆盖 A 股;调用失败时如实报告错误,禁止编造财务数字。 - 引用数据时带上报告期/币种/数据口径限定语。 - 与 gtimg 行情的分工:盘中报价/K线走行情网关,基本面与公告走 ifind。 ## 工作流四:定时盯盘(cron) 用户要求"每天盘前/盘后自动跑"时,用 dsh 的定时任务能力注册调度,例如: - 美东盘前(北京时间 21:30 前):跑工作流一,输出当日信号摘要 - 每周五收盘后:跑回测增量更新 + 本周假设复盘 定时任务产出的记录同样落盘 `records/`。 ## 工作流五·五:公开预测台账(ledger/,对外可验证) 每次给出**可结算的方向性观点**(某标的在某时间窗内看多/看空/横盘)时,除了写进记忆,还要入台账: ```bash python3 tools/ledger.py new --symbol <代码> --market cn|hk|us --direction long|short|neutral \ --confidence <0~1> --horizon --rationale "<理由,必填>" \ --source "workflow:<来源>" [--invalidate-if "<失效条件>"] ``` 规则: - `rationale` 必填且要具体(依据什么数据/逻辑)——没有理由的观点不入台账。 - `confidence` 是自评置信度,事后会做校准统计(声明 0.7 的预测是否 70% 命中),**不要拍脑袋给 0.9**。 - `new` 会自动 git commit;**尽快 push**(公开时间戳才成立)。commit 后不可改写已入库的预测。 - 到期后(或用户要求复盘时):`python3 tools/ledger.py settle`,然后 `python3 tools/ledger.py report --write` 更新 stats.md,并把结果 commit + push。 - 结算是机械的(收盘价 + 死区 + 方向),**禁止人工改判定结果**;数据缺失会记 void 不计分。 - 台账战绩从零累积、拒绝回填:如实展示 miss 与低胜率,这比虚假战绩值钱。 ## 工作流六:投资记忆与复盘 - 每次给出一个观点时,把"假设"写进记忆:标的、方向、理由、预期时间窗、失效条件。 - 复盘时取出历史假设,对照 `records/` 里的实际信号与走势,逐条判定对错,并总结哪类假设胜率高。 - 这是本工作台区别于一次性问答的核心:**观点要被记录、被检验、被追责**。 ## 失败处理 - `skipped` 非空 → 告知用户哪些票数据缺失(常见于新股、退市、数据源未覆盖),不要静默忽略。 - 报 `ANTHROPIC_API_KEY not found` 之类错误 → 说明用户没配 LLM key 或没指定模型;提示配 `DEEPSEEK_API_KEY` 并加 `--model deepseek-v4-pro`,不要擅自换成别的 provider。 - 网络/额度错误 → 原样报告 stderr,不要重试超过两次。 - 用户给的 mandate 路径不存在 → 先用 `ls mandates/` 列出可用的,让用户选。 ## 安全红线(risk-gate 插件已装时由其强制执行,未装时自律) - 禁止:任何券商 API/CLI 下单命令(ibkr、alpaca、tda、富途、老虎等)、向券商域名发写请求、`--live` 类参数。 - 禁止:修改 `~/.hedge-fund/.env` 之外的任何凭证文件。 - 允许:aihf 的全部只读/回测用法、数据查询、报告生成。