--- name: alphasift description: "自动选股 Skill。Use when: 用户要按策略筛选 A 股、列出可用策略、运行双低/放量突破等选股,或保存运行并做 T+N 后验评估。通过 alphasift CLI 或 Python 接口输出候选股票列表。" --- # alphasift — 自动选股 Skill 按策略筛选、评分并排序 A 股候选股票。 定位:全市场候选发现与横向排序引擎。它站在 `daily_stock_analysis` 这类单股深度分析服务上游;DSA 只是可选 L3 后置分析器,不是主筛选依赖。 ## Use When - 用户要列出当前可用策略 - 用户要按 `dual_low`、`volume_breakout` 这类策略筛选 A 股 - 用户要拿到结构化 JSON 结果,供后续 agent 继续分析 - 用户要保存选股运行,并在之后用最新快照评估结果 - 用户第一次接触本项目,想用 `alphasift quickstart` 一键看到全市场→候选→排名的最小闭环 ## Preconditions - 当前只支持 `market="cn"` - 需要先在仓库根目录安装包:`pip install -e .` - 如需 LLM 排序,可设置 `LITELLM_MODEL`、`LLM_CHANNELS`、`LITELLM_CONFIG` 或旧变量 `LLM_API_KEY/LLM_MODEL/LLM_BASE_URL` - 可直接复用 `daily_stock_analysis` 的 LiteLLM 配置字段,包括 `OPENAI_*`、`GEMINI_*`、`DEEPSEEK_API_KEY`、`OLLAMA_API_BASE` - 策略 YAML 可通过 `scoring_profile`、`risk_profile`、`portfolio_profile`、`scorecard_profile` 覆盖默认规则 - 策略 YAML 可通过 `event_profile` 配置偏好/规避事件、公告类别和候选上下文来源权重 - LLM 会输出候选行业/主题标签;如候选提供 `industry/concepts/board_heat_score/board_heat_trend_score`,会作为 LLM、主题热度因子与组合分散层锚点;history sidecar 可回填持续性、降温和状态字段。默认组合分散层会用这些标签映射风险桶,降低同一拥挤交易重复占位 - L3 默认启用本地 `scorecard` 后置评分器,也可追加 `dsa` 或 `external_http` - 如需 DSA 后置分析,设置 `DSA_API_URL`,默认调用 `POST /api/v1/analysis/analyze` - 依赖日 K 的策略会在 L1 后自动对 Top N 候选做日 K 增强 - 日 K 数据源 `DAILY_SOURCE` 支持 `akshare`(默认)、`baostock` 或 `auto`,`auto` 会在 akshare 失败时自动降级到 baostock 作为免费兜底 ## Operations ### 1. 列出策略 ```bash alphasift strategies ``` ### 1.1 一键演示(无 API key) ```bash alphasift quickstart alphasift quickstart --strategy balanced_alpha --max-output 8 ``` ### 2. 执行选股 ```bash alphasift screen dual_low --no-llm alphasift screen volume_breakout --max-output 10 alphasift screen balanced_alpha --no-llm alphasift screen capital_heat alphasift screen balanced_alpha --context "今日券商板块放量,低估值金融获得资金回流" alphasift --env-file /home/ubuntu/daily_ai_assistant/.env screen balanced_alpha alphasift screen balanced_alpha --explain alphasift screen balanced_alpha --candidate-context-file candidate_context.csv alphasift screen dual_low --no-post-analysis alphasift screen shrink_pullback --no-llm alphasift screen dual_low --post-analyzer dsa alphasift audit alphasift industry-cache --output data/industry_map.csv --explain alphasift screen dual_low --no-llm --save-run alphasift runs alphasift evaluate --explain alphasift evaluate-batch --limit 20 --explain alphasift evaluate --with-price-path --explain ``` ### 3. Python 调用 ```python from alphasift import evaluate_saved_run, evaluate_saved_runs, list_strategies, screen list_strategies() screen("dual_low", market="cn", use_llm=False) evaluate_saved_run("") evaluate_saved_runs(limit=20) ``` ## Output 返回 `ScreenResult` JSON,核心字段有: - `strategy` - `market` - `strategy_version` - `snapshot_count` - `after_filter_count` - `picks` - `llm_ranked` - `llm_market_view` - `llm_selection_logic` - `llm_portfolio_risk` - `llm_coverage` - `post_analyzers` - `daily_enriched` - `risk_enabled` - `portfolio_concentration_notes` - `degradation` - `snapshot_source` - `source_errors` 每个 `Pick` 包含: - `rank` - `code` - `name` - `final_score` - `screen_score` - `ranking_reason` - `risk_summary` - `price` - `change_pct` - `amount` - `total_mv` - `turnover_rate` - `volume_ratio` - `pe_ratio` - `pb_ratio` - `industry` - `concepts` - `board_heat_score` - `board_heat_latest_score` - `board_heat_trend_score` - `board_heat_persistence_score` - `board_heat_cooling_score` - `board_heat_observations` - `board_heat_state` - `board_heat_summary` - `change_60d` - `signal_score` - `macd_status` - `rsi_status` - `breakout_20d_pct` - `range_20d_pct` - `volume_ratio_20d` - `body_pct` - `pullback_to_ma20_pct` - `consolidation_days_20d` - `factor_scores` - `llm_confidence` - `llm_sector` - `llm_theme` - `llm_tags` - `llm_catalysts` - `llm_risks` - `llm_thesis` - `llm_style_fit` - `llm_watch_items` - `llm_invalidators` - `risk_score` - `risk_level` - `risk_penalty` - `risk_flags` - `portfolio_penalty` - `portfolio_flags` - `post_analysis_status` - `post_analysis_score_deltas` - `deep_analysis_status` - `deep_analysis_summary` - `deep_analysis_result` - `deep_analysis_signal_score` - `deep_analysis_sentiment_score` - `deep_analysis_operation_advice` - `deep_analysis_trend_prediction` - `deep_analysis_risk_flags` ## Boundaries - 当前没有独立的远程 `get_result` 服务;本地用 `--save-run`、`runs`、`evaluate`、`evaluate-batch` 管理运行记录 - `audit` 用于自检策略 profile 覆盖、已知能力短板和下一步优先级 - `--candidate-context-file` 支持 CSV/JSON/JSONL,通过 `code` 对齐候选级新闻、公告、资金流或研究摘要,只注入当前候选池相关行;可选抓取会附带 `source_count`、`source_confidence`、`source_weight_score`、`context_summary` 和公告类别 - 候选级上下文会识别粗粒度事件标签和负面风险标签,供 LLM 横向排序参考 - `industry-cache` 会缓存行业/概念映射和板块热度字段,并写入 history sidecar;后续加载映射时可回填板块热度滚动趋势、持续性、降温和状态字段,供 LLM 上下文与 `theme_heat` 因子使用 - 组合分散层优先使用 LLM 返回的行业/主题标签,也可回退到候选 `industry` 字段;两者都缺失时不会改变规则分数 - L3 后置分析器只在最终候选上运行,不参与全市场初筛;本地 `scorecard` 默认启用,DSA 只是其中一个可追加后端 - T+N 评估基于保存价和评估时最新快照价,不等同完整复权回测;可扣减交易成本并输出突破/回踩形态后验标签;`--with-price-path` 会额外估算最大回撤和最大浮盈