次日交易计划
把历史行情转化为条件式盘前计划。只使用已完成交易日的数据;将预测表述为情景,不承诺涨跌。
工作流
1. 确认输入
支持一次输入一个或多个标的。逐只识别股票名称或代码,并至少确认:
- 证券代码;名称输入需先解析为唯一代码。
- 当前持仓状态:未持有或已持有;若用户提供成本和仓位,必须纳入计划。
- 风险偏好和最大可接受亏损;缺失时可按“单笔计划亏损不超过账户权益 0.5%”演示,但必须标注假设。
多持仓输入可以使用自然语言、Markdown 表格或 JSON。先标准化为 code, name, cost, position_pct, shares, max_risk_pct, enabled,检查代码唯一、仓位非负、总仓位不超过 100%;发现冲突时只要求用户修正冲突字段,不重复询问已明确的信息。
用户要求“加入关注”“保存持仓”或定时跟踪时,使用:
python3 scripts/watchlist.py import-json positions.json
python3 scripts/watchlist.py list
关注清单默认保存在 ~/.codex/data/next-day-trade-plan/watchlist.json,不得提交到仓库或在报告中泄露账户规模。完整字段和命令见 references/portfolio-mode.md。
单股分析后的关注确认
每次完成一只尚未在清单中的股票分析后,必须在答案最后单独询问:
> 是否需要将这只股票加入持仓观察?如果需要,请回复“加入”,并可补充成本、仓位和股数。
执行前先用 python3 scripts/watchlist.py contains CODE 检查。已经在关注清单中的股票不再重复询问;答案末尾只说明“该股票已在每日持仓观察中”。用户回复“加入”“是”“需要”等肯定意图时:
- 将当前股票写入关注清单;用户未提供成本或仓位时允许以观察标的保存,不虚构数据。
- 确认它将从下一次交易日 8:30 起并入统一盘前推送。
- 后续再次单独分析该股票时不再询问是否加入。
用户在每日推送后的回复中提供新持仓时,不要等待下一次定时任务:先写入清单,立即为新加入的标的生成一次完整交易计划;完成后说明其已并入后续 8:30 统一推送。若一次新增多只,先全部保存,再立即生成新增持仓组合计划。
不要因缺少成本或账户规模而阻塞未持有者的技术计划。涉及具体下单数量时,必须取得账户规模或明确只输出仓位百分比。
2. 用 AkShare 获取统一数据包
AkShare 是行情、公司新闻、行业新闻、公告线索、研报和盈利预测的主要调用入口。先验证 Python、akshare 包及版本,再运行:
python3 scripts/fetch_akshare_bundle.py 002371.SZ
数据包必须逐项报告 ok/error/rows/source,单个组件失败不得阻断其他组件。核心接口为:
- 行情:
stock_zh_a_hist(adjust="qfq")与stock_zh_a_hist(adjust="")。 - 公司资料与行业:
stock_individual_info_em。 - 公司/行业新闻:
stock_news_em,分别使用证券代码和已验证的细分行业关键词。 - 公告线索:
stock_notice_report。 - 个股研报:
stock_research_report_em。 - 盈利预测:
stock_profit_forecast_em和stock_profit_forecast_ths。
AkShare 只是统一调用层,底层仍来自东方财富、同花顺、巨潮、腾讯、新浪等公开来源。高影响公告、政策、合同、业绩和监管结论必须打开交易所、巨潮、政府或公司原文核验。完整数据源与降级规则见 references/akshare-data-policy.md。
用可靠交易日历确定最近已完成交易日和下一开市日。日线必须使用前复权(adjust="qfq")行情;不得用未复权或后复权序列计算均线、ATR、收益率、支撑压力或交易情景。
同时取得最近一个交易日的未复权 OHLC,仅用于核对前复权序列是否锚定到当前实际成交价格。正常情况下,前复权序列最后一日价格应与未复权行情一致;若不一致,先查明接口复权定义、复权因子日期或数据缓存问题,不得直接生成计划。
建议拉取至少 250 个交易日,最低不得少于 60 个。至少包含 trade_date, open, high, low, close, vol;可补充 amount, pct_chg, turnover_rate, volume_ratio。执行除权除息、停牌、涨跌停、ST、新股上市不足 60 日检查。
AkShare 行情失败时,可降级到能够明确提供前复权日线的可靠公开源;必须验证接口参数和返回口径,清楚写出实际底层来源、前复权、数据截止日及最后一日与未复权价格的核对结果。数据源只提供未复权、复权口径无法确认、或无法获得截至最近交易日的可靠数据时,停止生成具体价位,只提供待补数据清单。新闻、公告或研报失败时可以继续生成技术计划,但必须降低新闻结论置信度并报告缺失项。
3. 检索并分析新闻
先使用 AkShare 数据包检索截至计划生成时的信息,再对高影响事实进行原文核验,并记录检索截止时间。分别覆盖:
- 公司自身新闻:交易所/巨潮公告、定期报告、业绩预告、订单与合同、产品进展、监管问询、股东增减持、解禁、回购、诉讼、事故、管理层变化等。
- 所属行业新闻:产业政策、监管与出口限制、供需和价格、下游资本开支、技术突破、招投标、竞争格局,以及主要同行的重要事件。
公司公告和政府/监管原文优先于媒体转述;重要结论至少链接到一个可核查来源。合并转载和重复报道,区分事件发生时间与新闻发布时间。默认重点窗口为最近 7 个自然日,重大事件可回看 30 日;盘前必须补查上个收盘后至本次开盘前的新信息。
研究报告单独作为“市场预期”层:列出最近30日研报、评级、盈利预测变化和机构覆盖度。研报观点不是已确认事实,不得替代公司公告;PDF无法读取时只使用接口明确返回的元数据,不推测报告正文。
逐条标注 利好 / 利空 / 中性 / 影响不明,并说明传导路径、影响期限(次日/短期/中期)、影响强度(高/中/低)、可信度和是否可能已被价格反映。没有可靠新闻时明确写“未发现足以改变计划的新增信息”,不得用旧闻或传闻凑数。
详细判断规则见 references/news-methodology.md。新闻用于调整情景概率、仓位上限和盘前检查,但不能取代价格确认;利好不等于无条件买入,利空也不等于无条件卖出。
4. 计算量价证据
将标准化 CSV 交给:
python3 scripts/analyze_history.py path/to/history.csv --adjust qfq
脚本输出 MA5/10/20/60、ATR14、20 日高低点、成交量比率、20 日收益和近端支撑/压力候选。结合以下证据判断,不用单一指标下结论:
- 趋势:收盘价相对 MA20/MA60,均线方向与排列。
- 动量:5 日与 20 日收益,是否远离 MA20。
- 波动:ATR14 及 ATR 占收盘价比例。
- 量价:当日量相对 5/20 日均量,突破是否放量。
- 位置:20/60 日高低点、近期摆动高低点、缺口和涨跌停价。
详细字段和价位规则见 references/methodology.md。
5. 建立次日情景
至少写三种互斥、可观察的情景:
- 强势情景:突破压力位且满足量价确认;定义追随动作、最高可接受价格、初始仓位和失败退出。
- 中性情景:在支撑与压力之间震荡;定义等待、回踩确认或持仓不动条件,禁止在区间中部随意交易。
- 弱势情景:跌破支撑或触发止损;定义减仓/退出比例和不立即抄底条件。
如果股票接近涨跌停、处于停牌状态、存在除权或重大公告窗口,增加特殊情景。不得仅以“高开/低开”作为触发;触发必须包含价格行为,可结合开盘后 15–30 分钟确认、成交量或收回关键位。
把高影响新闻写入对应情景:利好需要价格和量能确认后才提高仓位,利空或不确定性上升时降低仓位上限、收紧取消条件或新增跳空风险情景。若新闻结论与价格行为冲突,优先执行预先定义的价格失效条件。
6. 约束仓位和风险
- 先定义计划失效价,再计算仓位;不得先决定满仓再补止损。
- 风险距离优先由结构位与 ATR 共同确定,避免止损落在正常日内噪声内。
- 新开仓采用分批建仓;单一情景不得同时给出相互矛盾的买卖动作。
- 已高仓位用户优先控制回撤,不默认建议补仓摊低成本。
- 明确隔夜跳空可能使实际损失超过计划止损。
- 不执行交易,不生成保证收益或确定性方向表述。
7. 按固定格式交付
使用 references/output-template.md 的结构。最终答案必须包含:
- 标的、计划对应交易日、数据截止日、来源、
前复权、数据覆盖数,以及最后一日与未复权行情的核对结果。 - 一句话市场状态和 3–6 条可核查证据。
- AkShare各组件的成功数、失败数、底层来源和错误;行情失败与新闻/研报失败分开处理。
- 公司新闻和行业新闻清单;逐条给出日期、事实、来源、利好/利空判断、传导路径、期限、强度、可信度及是否已反映。
- 新闻综合结论,以及它如何改变次日情景概率、仓位上限或取消条件。
- 最近研报与盈利预测变化;明确标注为市场预期,不与公司事实混写。
- 支撑、压力、失效价及其计算依据。
- 三情景表:触发条件、动作、目标仓位、止损/退出、取消条件。
- 用户已有持仓的专门处理。
- 盘前检查清单、盘后复盘字段和风险声明。
价位按股票最小报价单位取整,并说明指标价位不等于成交保证。若数据异常或最新日期落后于最近已完成交易日,在标题处标记“数据不足,不生成可执行价位”。
8. 生成多持仓早盘简报
处理关注清单时先输出组合总览,再按风险优先级逐只展开:
- 用交易日历确认当天是否为 A 股开市日;非交易日不生成交易计划,只简短说明休市。
- 读取所有
enabled=true的关注持仓,逐只执行前复权、新闻和数据新鲜度校验。 - 先列出最高优先级事项:跌破失效位、重大利空、停牌/退市风险、高仓位高波动、数据异常。
- 给出组合层面的行业集中度、总仓位、共同风险和当日最多三项行动。
- 每只持仓给出一句结论、关键价位、强/中/弱触发和目标仓位;不得因持仓较多而省略止损与取消条件。
- 单只取数失败不得阻止其他持仓输出;在组合总览中单独标记失败标的和原因。
早上 8:30 的自动任务只能生成盘前研究简报,不执行交易。任务运行时再次补查上个收盘后至 8:30 的公司和行业新闻,并显示行情数据截止日、成功数量、失败数量和新闻检索截止时间。
每日组合推送的最后必须保留一句交互提示:
> 是否有新的持仓需要加入观察?请发送股票名称或代码;如已持有,建议同时提供成本和仓位。加入后我会立即生成一次该持仓的交易计划,并从下一交易日起纳入每天 8:30 的统一推送。
质量门槛
交付前逐项检查:
- 下一交易日来自交易日历,而不是简单加一天。
- 行情最后日期等于最近已完成交易日;覆盖至少 60 根有效前复权日线。
- 数据源明确支持前复权,最后一日前复权 OHLC 与未复权 OHLC 核对一致。
- 所有关键价位能追溯到结构位、ATR、均线或涨跌停规则。
- 每个动作都有触发、仓位、退出和取消条件。
- 数据缺失、停牌、除权、ST、新股和公告风险已披露。
- 已分别检索公司新闻和行业新闻;重要事实有来源,重复新闻已合并,传闻与事实已区分。
- AkShare行情、公司新闻、行业新闻、公告、研报和盈利预测逐项报告状态;高影响事实已回到官方原文核验。
- 每条新闻都有方向、传导路径、期限、强度、可信度及价格是否已反映的判断;无可靠新闻时明确说明。
- 计划是条件式决策树,不是“明天一定涨/跌”的预测。
- 多持仓模式已核对总仓位、行业集中度和跨持仓共同风险,单只失败不会静默丢失。
- 自动简报仅在交易日生成计划,并报告关注数、成功数、失败数和数据截止日。
- 单股分析仅对未关注标的询问一次是否加入;已关注标的不重复询问。
- 每日推送末尾包含新增持仓入口,新加入标的已立即分析并写入后续统一推送。