technical-patterns-lab/discuss/20260129-讨论.md
褚宏光 bf6baa5483 Add scoring module and enhance HTML viewer with standardization
- Add scripts/scoring/ module with normalizer, sensitivity analysis, and config
- Enhance stock_viewer.html with standardized scoring display
- Add integration tests and normalization verification scripts
- Add documentation for standardization implementation and usage guides
- Add data distribution analysis reports for strength scoring dimensions
- Update discussion documents with algorithm optimization plans
2026-01-30 18:43:37 +08:00

6.6 KiB
Raw Blame History

收敛三角形函数本身

总体思路:用户可调整"强度分"中的每个参数,最终筛选出符合预期的个股。

  1. "拟合贴合度"与"边界利用率",是否可以合并为一个维度? 已完成

    • 结论:不建议合并,两者测量的是不同维度
    • 优化:重命名为"形态规则度"和"价格活跃度",更直观
    • 详情:见 docs/命名优化_拟合贴合度_边界利用率_重命名.md
  2. "强度分"中需要新增"角度"参数:即斜率、三角形的旋转角度。 已完成

    • 实现方式:新增"倾斜度分"作为第6个维度
    • 权重分配从突破幅度分中分配5%50% → 45%
    • 详情:见 docs/强度分_增加角度参数_深度分析.md
  3. "强度分"内所有参数需保持在 0-1 区间 目前所有 6 个强度分参数都已经在 0-1 区间内。以下是各分量的归一化方式总结:

分量 归一化方式 范围保证
突破幅度分 (price_score) np.tanh(pct * 15.0) tanh 输出 [0, 1](因为 pct ≥ 0
收敛度分 (convergence_score) max(0, min(1, 1 - width_ratio)) 显式 clamp 到 [0, 1]
成交量分 (volume_score) min(1, max(0, volume_ratio - 1)) 显式 clamp 到 [0, 1]
形态规则度 (geometry_score) exp(-error * 20) + clamp 指数衰减 + 显式 clamp
价格活跃度 (activity_score) 逐日计算 1 - blank_ratio 的平均 + clamp 每日 clamp + 最终 clamp
倾斜度分 (tilt_score) (1 ± tilt) / 2 + clamp 显式 clamp 到 [0, 1]

形态规则度和价格活跃度的归一化详解

关于形态规则度 (geometry_score) 和价格活跃度 (activity_score) 这两个分量的详细归一化实现,请参阅:

详细文档docs/强度分_形态规则度和价格活跃度_归一化详解.md

核心要点

  • 形态规则度:使用指数衰减映射 exp(-mean_rel_error * 20),测量枢轴点到拟合线的贴合程度
  • 价格活跃度:使用线性反转 1 - blank_ratio + 双重clamp逐日计算通道空间利用率后取平均

两者都严格保证输出在 [0, 1] 区间,满足强度分系统的设计要求。


  1. 分析日志,评估各个维度的分布:均值、正态性、厚尾 已完成

    • 分析时间: 2026-01-29 16:28
    • 样本量: 18,004个有效三角形 (108只股票 × 500天检测窗口)
    • 分析对象: 强度分系统的6个核心维度 (7个字段: price_score_up/down分开统计)
    • 核心发现:
      • 所有7个字段均呈现非正态分布 (p≈0)
      • ⚠️ 5/7字段显著厚尾 (超额峰度>0, 极端事件是正态分布的8-19倍)
      • 📊 4/7字段右偏 (多数普通值+少数极端大值的长尾结构)
    • 关键发现:
      1. 突破幅度分(向上): 中位数=0, 超额峰度13.38, 尾部15.7倍 → 大多数未突破,强突破稀缺但频繁
      2. 突破幅度分(向下): 中位数=0, 超额峰度45.72 → 向下突破最不可预测
      3. 成交量分: 中位数=0, 尾部19.1倍 → 放量突破极其稀缺(所有维度中尾部倍数最高)
      4. 倾斜度分: 超额峰度46.33, Q25=Q75=0.5 → 算法强烈偏好对称三角形(75%恰好=0.5)
      5. 收敛度分: 超额峰度-1.05 → 唯一薄尾维度,分布稳定可靠
    • 实战建议:
      • 禁止使用均值±3σ、t检验等基于正态的方法
      • 推荐使用百分位数(P75/P90)、非参数检验、Bootstrap
      • 突破幅度分阈值: P85-P90≈0.15 (而非均值0.056)
      • 成交量分不作必要条件(中位数=0),仅作加分项
    • 权重优化建议:
      • 收敛度分: 20%→25% (最稳定可靠)
      • 成交量分: 15%→10% (中位数=0导致区分度低)
      • 形态规则度: 10%→5% (数值普遍过低)
      • 价格活跃度: 5%→10% (近正态且稳定)
    • 详细报告:
      • 📄 主报告: docs/收敛三角形_数据分布分析_20260129/强度分六维度_分析报告.md
      • 📑 索引: docs/收敛三角形_数据分布分析_20260129/INDEX.md
      • 🖼️ 可视化: distribution_plots_强度分六维度.png, qq_plots_强度分六维度.png, boxplots_强度分六维度.png
      • 📊 数据表: distribution_analysis_强度分六维度.csv (7字段统计)
      • 💻 脚本: analyze_distribution_强度分六维度.py (可重现)
  2. 强度分系统优化:等权设计+参数可调性+平滑性优化 深度分析完成

    • 分析时间: 2026-01-29 17:00
    • 核心问题:
      • 维度间不可比性:中位数差异巨大 (0 vs 0.8)
      • 零膨胀分布突破幅度分、成交量分50%为0
      • 点质量分布倾斜度分75%=0.5
      • 等权相加会导致收敛度分和倾斜度分"吃掉"大部分强度分
    • SOTA方法调研:
      1. 截面分位数标准化: 消除尺度差异,但对零膨胀效果差
      2. Power Sorting (2023): 专门处理厚尾,保留极端值信息
      3. 自适应分组标准化: 根据分布类型选择不同策略
      4. PID控制论: 自适应权重调整,基于实际反馈优化
      5. 端到端ML优化: 自动学习最优变换和权重
    • 推荐方案:分层标准化:
      • 零膨胀分布(突破幅度分/成交量分): 非零部分排名零值设为0.5(中性)
      • 点质量分布(倾斜度分): 偏离中心的值进行拉伸
      • 正常分布(收敛度分/价格活跃度): 标准分位数标准化
      • 低区分度(形态规则度): 对数变换扩大区分度
    • 基金经理视角评估:
      维度 量化意义 当前问题 建议
      突破幅度分 信号强度/价格动能 中位数=0 标准化后使用P75+
      收敛度分 蓄势程度/多空博弈 稳定 可提高权重
      成交量分 资金确认 中位数=0 不作必要条件,作加分项
      形态规则度 形态质量 普遍极低 对数变换扩大区分度
      价格活跃度 真实博弈 近正态 可提高权重
      倾斜度分 趋势一致性 75%=0.5 重新标准化
    • 系统评分:
      • 当前综合评分: 2.8/5
      • 优化后预期: 4.3/5
    • 应用层设计:
      • 等权基础 + 预设配置(激进/保守/放量模式)
      • 多维度阈值筛选器
      • 敏感性分析工具
    • 详细报告: docs/收敛三角形_数据分布分析_20260129/强度分优化方案_深度分析.md