A股研究与选股
总原则
把输出定位为证据化研究和条件式情景推演,不把代理指标写成已知账户行为,不承诺收益。
区分两种模式:
- 个股诊断:输入一只股票,完成完整研究并给出观察结论。
- 股票筛选:输入股票池或行业,先执行硬性排除和统一打分,再对排名靠前者执行个股诊断。
若用户只给股票简称,先确认证券代码、交易所和公司全称。存在同名、简称变更或跨市场歧义时,不要继续猜测。
加载参考资料
每次执行完整研究时:
- 读取 references/data-contract.md,按数据文件、状态和完成门槛使用本地数据。
- 读取 references/evidence-and-sources.md,按来源层级和时效要求取证。
- 读取 references/analysis-framework.md,统一指标、评分和风险否决规则。
- 读取 references/institutional-retail-behavior.md,执行机构与散户博弈推演。
- 读取 references/output-template.md,严格按模板输出。
若用户只要求其中一个模块,只加载对应参考文件,但仍遵守本文件的证据、措辞和安全规则。
第一次本地部署
始终把依赖安装到用户工作区的 .venv,不静默修改全局 Python。安装会联网并写入本地环境;若环境尚未就绪,先征得用户许可,再运行:
powershell -ExecutionPolicy Bypass -File <skill目录>\scripts\setup_local.ps1 -Workspace <工作区>
安装后统一使用 <工作区>\.venv\Scripts\python.exe。不要在 Skill 分析中临时下载包;若运行环境禁止下载,应说明需要先完成一次部署,而不是把依赖缺失误报为股票数据缺失。
发布包已在 Python 3.10 验证,部署脚本接受 Python 3.10—3.12。系统命令不是 python 时用 -PythonCommand <python.exe路径>;已有本地包缓存且禁止联网时可加 -Offline。部署成功会打印 Python、AkShare、pandas、NumPy 和 PyYAML 版本。常见恢复顺序:确认 Python 命令可用、删除失败创建且未包含用户数据的工作区 .venv、重新运行部署;不要删除 data 目录。
工作流
1. 明确任务口径
记录:
- 证券代码、交易所、公司全称、分析截止时间。
- 个股诊断或股票筛选模式。
- 持有周期、风险偏好、是否持仓及成本价;未提供时分别给出短线、波段和中期视角,不虚构个人情况。
- 行业分类口径。优先同时给出证监会行业和一个主流二级行业;不得混用不同时点或不同体系的行业均值。
2. 收集可追溯证据
完整报告先用统一采集器建立可复现的本地数据包。每个数据源独立失败,一个接口故障不得使整个报告停止:
& <工作区>\.venv\Scripts\python.exe <skill目录>\scripts\collect_a_share_bundle.py `
--code <六位代码> `
--as-of <YYYY-MM-DD> `
--output <工作区>\data\a_share\<六位代码> `
--years 3 `
--margin-days 10 `
--institution-quarters 8
先读取输出目录中的 manifest.json,再读取成功生成的CSV和 market_signals.json。按 success、no_event、empty、failed、structurally_limited 解释状态。不得在运行采集器前笼统声称数据缺失,也不得把接口失败说成市场无数据。
完整报告至少要求 price_history_253_ok、financial_8_periods_ok 和 recent_price_3_rows_ok 为真,并能核验公司身份、最近完整收盘和重大公告。未达到时输出降级报告并降低对应权重,不给伪精确总分。
随后联网核验会随时间变化的数据。优先读取交易所公告、公司定期/临时报告、监管部门、政府和统计机构等一手来源。行情、资金和一致预期可使用可靠数据平台,但必须标注平台、口径和时间。
覆盖:
- 最新盘口或最近收盘行情,以及5/20/60/120/252个交易日价格和成交量。
- 最近一期财务报告,并回看至少8个季度;年度趋势至少3年。
- 估值历史分位及同业可比公司。
- 最近12个月公司、行业、政策和产业链事件。
- 已公布的未来事件日历;把未来内容分为确定日历、市场预期和情景推演。
- 融资融券、龙虎榜、大宗交易、股东人数、机构持仓等可获得的资金代理。
不得用搜索摘要代替关键原文。列出缺失、冲突、延迟和未经确认的数据。
若截止日尚未收盘、当日数据未落库或只有不完整盘中数据,自动回退到最近一个完整交易日作为日线计算截止日,同时把报告生成时间和行情截止日分开标注。只有用户明确要求盘中分析时才使用盘中快照。
3. 计算量化指标
统一采集器会自动生成 market_signals.json 和 fund_flow_proxy.csv。优先使用平台订单大小口径的 fund_flow_daily.csv;平台资金接口失败时,使用本地OHLCV代理,并明确其不是机构、大单、小单或真实净流入:
signed_amount_proxy:收盘位置值乘成交额。signed_volume_proxy:按当日涨跌方向赋号的成交量。- 3/5/10/20日滚动值:只表示量价压力,不能识别账户身份。
最近几日分析至少检查最近3个完整交易日的收盘、成交量/额、量价压力代理和可得的融资融券。龙虎榜、大宗交易无记录写“区间内无事件”;北向单股日频结构性不可得时,仅使用最近公开季度口径并注明披露期。
如只需为用户自带CSV计算指标,可运行:
& <工作区>\.venv\Scripts\python.exe <skill目录>\scripts\compute_market_signals.py <行情.csv> --symbol <证券代码> --pretty
CSV至少包含 date,close,可选 symbol,open,high,low,volume,amount,turnover。脚本兼容常见中文列名。把脚本结果当作量价证据,不把其中的启发式代理分数当作真实资金身份。
股票池筛选时,可结合项目根目录已有的 stock_picker.py 论文动量信号,但必须额外加入流动性、停牌、风险警示、行业暴露、交易成本和基本面约束;不得把单一因子直接当成最终推荐。
4. 完成七层分析
依次分析:
- 公司与主营业务。
- 基本面质量和财务异常。
- 估值与同业比较。
- 多周期走势、量价、筹码和资金代理。
- 行业景气、政策、产业链、公司事件和未来日历。
- 机构多头、空头/对冲、量化资金的竞争性情景。
- 散户群体、心理偏差、触发价位和情绪脆弱性。
为每项重要判断提供支持证据、反对证据、置信度和失效条件。
5. 进行情景推演
至少输出乐观、中性、悲观三种情景。每个情景给出:
- 主导参与者和可能目标。
- 可观察的触发条件。
- 可能路径而非确定点位。
- 反证与失效条件。
- 主观概率及其依据。
概率总和保持100%。数据不足时扩大“不确定”而不是编造精确概率。
6. 评分与结论
使用参考框架的统一权重。先检查风险否决项,再评分。输出“值得关注、继续观察、谨慎、回避”之一,并说明适用周期。不要仅凭技术面或资金流给出结论。
强制措辞规则
- 写“数据显示/代理指标提示/更符合某种情景”,不要写“主力已经吸筹/庄家必然拉升”。
- 写“若条件A出现,则情景B概率上升”,不要无条件预测具体下一步。
- 把事实、市场一致预期、分析推断、未证实传闻分开。
- 把做空、减仓、套期保值、套利和风险控制分开。
- 不推断具体机构账户、真实成本或仓位,除非有公开披露。
- 不提供虚假申报、对倒、拉抬打压、诱多诱空或其他操纵市场的执行方法。
- 可以识别疑似异常形态,但同时提供正常调仓、流动性和指数再平衡等替代解释。
- 引用网页时链接到支持结论的原始页面,并在结论附近标注。
完成检查
交付前确认:身份无歧义、数据有截止时间、财务无错期、价格使用一致复权口径、行业比较同口径、无未来函数、消息有来源、主力与散户均为概率推断、三种情景概率合计100%、结论包含反方论证和失效条件。
Scan to join WeChat group