cnhkmcp 2.3.1__py3-none-any.whl → 2.3.2__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (68) hide show
  1. cnhkmcp/__init__.py +1 -1
  2. cnhkmcp/untracked/APP/Tranformer/parsetab.py +60 -0
  3. cnhkmcp/untracked/APP/Tranformer/validator.py +78 -4
  4. cnhkmcp/untracked/APP/static/inspiration.js +41 -3
  5. cnhkmcp/untracked/APP/templates/index.html +26 -0
  6. cnhkmcp/untracked/APP/trailSomeAlphas/enhance_template.py +132 -6
  7. cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-data-feature-engineering/SKILL.md +17 -0
  8. cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-data-feature-engineering/output_report/GLB_delay1_fundamental72_ideas.md +292 -239
  9. cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/final_expressions.json +74 -136
  10. cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/fundamental72_GLB_1_idea_1769852468022627100.json +22 -0
  11. cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/fundamental72_GLB_1_idea_1769852468554457600.json +14 -0
  12. cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/fundamental72_GLB_1_idea_1769852469133324600.json +8 -0
  13. cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/fundamental72_GLB_1_idea_1769852469704433900.json +10 -0
  14. cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/fundamental72_GLB_1_idea_1769852470248911900.json +10 -0
  15. cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/fundamental72_GLB_1_idea_1769852470805192900.json +8 -0
  16. cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/fundamental72_GLB_1_idea_1769852471380158000.json +10 -0
  17. cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/fundamental72_GLB_1_idea_1769852471944247400.json +22 -0
  18. cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/fundamental72_GLB_1_idea_1769852472483548800.json +14 -0
  19. cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/fundamental72_GLB_1_idea_1769852473053891800.json +22 -0
  20. cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/fundamental72_GLB_1_idea_1769852473617716000.json +22 -0
  21. cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/fundamental72_GLB_1_idea_1769852474172815700.json +14 -0
  22. cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/fundamental72_GLB_1_idea_1769852474735778500.json +10 -0
  23. cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/fundamental72_GLB_1_idea_1769852475315478500.json +14 -0
  24. cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/fundamental72_GLB_1_idea_1769852475912897000.json +8 -0
  25. cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/fundamental72_GLB_1_idea_1769852476474911100.json +10 -0
  26. cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/fundamental72_GLB_1_idea_1769852978914367200.json +10 -0
  27. cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/fundamental72_GLB_1_idea_1769852979426164800.json +10 -0
  28. cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/fundamental72_GLB_1_idea_1769852979945511100.json +10 -0
  29. cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/fundamental72_GLB_1_idea_1769852980480251500.json +10 -0
  30. cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/fundamental72_GLB_1_idea_1769852981007315500.json +10 -0
  31. cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/fundamental72_GLB_1_idea_1769854621979784200.json +10 -0
  32. cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/fundamental72_GLB_1_idea_1769854622483457900.json +10 -0
  33. cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/fundamental72_GLB_1_idea_1769854623010559800.json +10 -0
  34. cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/fundamental72_GLB_1_idea_1769854623572902300.json +5 -0
  35. cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/fundamental72_GLB_1_idea_1769854624091016000.json +10 -0
  36. cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/fundamental72_GLB_delay1.csv.bak_1769852868 +330 -0
  37. cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/fundamental72_GLB_delay1.csv.bak_1769854511 +330 -0
  38. cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/scripts/ace.log +12 -0
  39. cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/scripts/validator.py +80 -4
  40. cnhkmcp/untracked/APP/trailSomeAlphas/skills/template_final_enhance/op/321/206/320/220/342/225/227/321/207/342/225/227/320/243.md +24 -18
  41. cnhkmcp/untracked/APP//321/210/342/224/220/320/240/321/210/320/261/320/234/321/206/320/231/320/243/321/205/342/225/235/320/220/321/206/320/230/320/241.py +14 -0
  42. cnhkmcp/untracked/skills/alpha-expression-verifier/scripts/parsetab.py +60 -0
  43. cnhkmcp/untracked/skills/alpha-expression-verifier/scripts/validator.py +78 -4
  44. {cnhkmcp-2.3.1.dist-info → cnhkmcp-2.3.2.dist-info}/METADATA +1 -1
  45. {cnhkmcp-2.3.1.dist-info → cnhkmcp-2.3.2.dist-info}/RECORD +49 -38
  46. cnhkmcp/untracked/APP/simulator/wqb20260130130030.log +0 -210
  47. cnhkmcp/untracked/APP/simulator/wqb20260130131757.log +0 -104
  48. cnhkmcp/untracked/APP/simulator/wqb20260130172245.log +0 -70
  49. cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/fundamental72_GLB_1_idea_1769759441444909600.json +0 -38
  50. cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/fundamental72_GLB_1_idea_1769759441920092000.json +0 -14
  51. cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/fundamental72_GLB_1_idea_1769759442418767100.json +0 -14
  52. cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/fundamental72_GLB_1_idea_1769759442902507600.json +0 -14
  53. cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/fundamental72_GLB_1_idea_1769759443377036200.json +0 -10
  54. cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/fundamental72_GLB_1_idea_1769759443845377000.json +0 -14
  55. cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/fundamental72_GLB_1_idea_1769759444313546700.json +0 -10
  56. cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/fundamental72_GLB_1_idea_1769759444784598600.json +0 -14
  57. cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/fundamental72_GLB_1_idea_1769759445274311200.json +0 -14
  58. cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/fundamental72_GLB_1_idea_1769759445747421700.json +0 -10
  59. cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/fundamental72_GLB_1_idea_1769759446222137800.json +0 -22
  60. cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/fundamental72_GLB_1_idea_1769759446686222600.json +0 -14
  61. cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/fundamental72_GLB_1_idea_1769759447154698500.json +0 -10
  62. cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/fundamental72_GLB_1_idea_1769759447629677000.json +0 -10
  63. cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/fundamental72_GLB_1_idea_1769759448102331200.json +0 -10
  64. cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/fundamental72_GLB_1_idea_1769759448573382000.json +0 -14
  65. {cnhkmcp-2.3.1.dist-info → cnhkmcp-2.3.2.dist-info}/WHEEL +0 -0
  66. {cnhkmcp-2.3.1.dist-info → cnhkmcp-2.3.2.dist-info}/entry_points.txt +0 -0
  67. {cnhkmcp-2.3.1.dist-info → cnhkmcp-2.3.2.dist-info}/licenses/LICENSE +0 -0
  68. {cnhkmcp-2.3.1.dist-info → cnhkmcp-2.3.2.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,10 @@
1
+ {
2
+ "template": "group_zscore(signed_power(divide(ts_delta(winsorize(ts_backfill(vec_avg({cap_expend_prpty_add}), 63), std=4), 252), ts_mean(winsorize(ts_backfill(vec_avg({tot_asset}), 63), std=4), 252)), 1.5), sector)",
3
+ "idea": "遵循清洗→非线性变换→组中性化逻辑链。首先对向量型资本开支与总资产数据进行63日回溯填充与4倍标准差截尾(winsorize),消除极端脏点;计算252日同比投资加速度后,使用signed_power(1.5)放大尾部极端值(高扩张或高收缩)但保留方向符号,强化战略拐点的辨识度;最后通过sector层面的group_zscore剥离行业固有资本密集度差异,使得科技业与公用事业的投资加速信号具备可比性,适用于跨行业选股。",
4
+ "expression_list": [
5
+ "group_zscore(signed_power(divide(ts_delta(winsorize(ts_backfill(vec_avg(fnd72_pit_or_cf_a_cf_cap_expend_prpty_add), 63), std=4), 252), ts_mean(winsorize(ts_backfill(vec_avg(fnd72_pit_or_bs_a_bs_tot_asset), 63), std=4), 252)), 1.5), sector)",
6
+ "group_zscore(signed_power(divide(ts_delta(winsorize(ts_backfill(vec_avg(fnd72_pit_or_cf_a_cf_cap_expend_prpty_add), 63), std=4), 252), ts_mean(winsorize(ts_backfill(vec_avg(fnd72_pit_or_bs_q_bs_tot_asset), 63), std=4), 252)), 1.5), sector)",
7
+ "group_zscore(signed_power(divide(ts_delta(winsorize(ts_backfill(vec_avg(fnd72_pit_or_cf_q_cf_cap_expend_prpty_add), 63), std=4), 252), ts_mean(winsorize(ts_backfill(vec_avg(fnd72_pit_or_bs_a_bs_tot_asset), 63), std=4), 252)), 1.5), sector)",
8
+ "group_zscore(signed_power(divide(ts_delta(winsorize(ts_backfill(vec_avg(fnd72_pit_or_cf_q_cf_cap_expend_prpty_add), 63), std=4), 252), ts_mean(winsorize(ts_backfill(vec_avg(fnd72_pit_or_bs_q_bs_tot_asset), 63), std=4), 252)), 1.5), sector)"
9
+ ]
10
+ }
@@ -0,0 +1,10 @@
1
+ {
2
+ "template": "trade_when(or(greater(ts_rank(divide(ts_delta(vec_avg({cap_expend_prpty_add}), 252), ts_mean(vec_avg({tot_asset}), 252)), 504), 0.85), less(ts_rank(divide(ts_delta(vec_avg({cap_expend_prpty_add}), 252), ts_mean(vec_avg({tot_asset}), 252)), 504), 0.15)), group_zscore(divide(ts_delta(vec_avg({cap_expend_prpty_add}), 252), ts_mean(vec_avg({tot_asset}), 252)), industry), 0)",
3
+ "idea": "采用时序分位过滤与截面中性化结合。先计算投资加速度指标,再通过ts_rank观察其在过去504日(两年)历史区间中的相对位置;仅当指标处于历史极端高位(>85%分位,激进扩张)或极端低位(<15%分位,持续收缩)时,才保留经industry组zscore标准化后的信号,中间温和区间视为噪音赋值为0。该结构有效识别管理层投资行为的周期性拐点,避免在常态波动中频繁换手。",
4
+ "expression_list": [
5
+ "trade_when(or(greater(ts_rank(divide(ts_delta(vec_avg(fnd72_pit_or_cf_a_cf_cap_expend_prpty_add), 252), ts_mean(vec_avg(fnd72_pit_or_bs_a_bs_tot_asset), 252)), 504), 0.85), less(ts_rank(divide(ts_delta(vec_avg(fnd72_pit_or_cf_a_cf_cap_expend_prpty_add), 252), ts_mean(vec_avg(fnd72_pit_or_bs_a_bs_tot_asset), 252)), 504), 0.15)), group_zscore(divide(ts_delta(vec_avg(fnd72_pit_or_cf_a_cf_cap_expend_prpty_add), 252), ts_mean(vec_avg(fnd72_pit_or_bs_a_bs_tot_asset), 252)), industry), 0)",
6
+ "trade_when(or(greater(ts_rank(divide(ts_delta(vec_avg(fnd72_pit_or_cf_a_cf_cap_expend_prpty_add), 252), ts_mean(vec_avg(fnd72_pit_or_bs_q_bs_tot_asset), 252)), 504), 0.85), less(ts_rank(divide(ts_delta(vec_avg(fnd72_pit_or_cf_a_cf_cap_expend_prpty_add), 252), ts_mean(vec_avg(fnd72_pit_or_bs_q_bs_tot_asset), 252)), 504), 0.15)), group_zscore(divide(ts_delta(vec_avg(fnd72_pit_or_cf_a_cf_cap_expend_prpty_add), 252), ts_mean(vec_avg(fnd72_pit_or_bs_q_bs_tot_asset), 252)), industry), 0)",
7
+ "trade_when(or(greater(ts_rank(divide(ts_delta(vec_avg(fnd72_pit_or_cf_q_cf_cap_expend_prpty_add), 252), ts_mean(vec_avg(fnd72_pit_or_bs_a_bs_tot_asset), 252)), 504), 0.85), less(ts_rank(divide(ts_delta(vec_avg(fnd72_pit_or_cf_q_cf_cap_expend_prpty_add), 252), ts_mean(vec_avg(fnd72_pit_or_bs_a_bs_tot_asset), 252)), 504), 0.15)), group_zscore(divide(ts_delta(vec_avg(fnd72_pit_or_cf_q_cf_cap_expend_prpty_add), 252), ts_mean(vec_avg(fnd72_pit_or_bs_a_bs_tot_asset), 252)), industry), 0)",
8
+ "trade_when(or(greater(ts_rank(divide(ts_delta(vec_avg(fnd72_pit_or_cf_q_cf_cap_expend_prpty_add), 252), ts_mean(vec_avg(fnd72_pit_or_bs_q_bs_tot_asset), 252)), 504), 0.85), less(ts_rank(divide(ts_delta(vec_avg(fnd72_pit_or_cf_q_cf_cap_expend_prpty_add), 252), ts_mean(vec_avg(fnd72_pit_or_bs_q_bs_tot_asset), 252)), 504), 0.15)), group_zscore(divide(ts_delta(vec_avg(fnd72_pit_or_cf_q_cf_cap_expend_prpty_add), 252), ts_mean(vec_avg(fnd72_pit_or_bs_q_bs_tot_asset), 252)), industry), 0)"
9
+ ]
10
+ }
@@ -0,0 +1,10 @@
1
+ {
2
+ "template": "add(right_tail(group_zscore(divide(ts_delta(vec_avg({cap_expend_prpty_add}), 252), ts_mean(vec_avg({tot_asset}), 252)), industry), 1.5), left_tail(group_zscore(divide(ts_delta(vec_avg({cap_expend_prpty_add}), 252), ts_mean(vec_avg({tot_asset}), 252)), industry), -1.5))",
3
+ "idea": "基于边界条件逻辑构建双尾事件驱动模板。对投资加速度进行行业中性化后,使用right_tail(1.5)隔离右尾(高于1.5倍标准差的激进扩张),使用left_tail(-1.5)隔离左尾(低于-1.5倍标准差的战略收缩),两者相加后中间区间自动变为NaN。该模板严格对应原始逻辑中“>50%资产规模的激进增长”与“持续负值”的边界条件,仅在极端制度转换时建仓,适用于捕捉战略层面的资产轻重模式切换。",
4
+ "expression_list": [
5
+ "add(right_tail(group_zscore(divide(ts_delta(vec_avg(fnd72_pit_or_cf_a_cf_cap_expend_prpty_add), 252), ts_mean(vec_avg(fnd72_pit_or_bs_a_bs_tot_asset), 252)), industry), 1.5), left_tail(group_zscore(divide(ts_delta(vec_avg(fnd72_pit_or_cf_a_cf_cap_expend_prpty_add), 252), ts_mean(vec_avg(fnd72_pit_or_bs_a_bs_tot_asset), 252)), industry), -1.5))",
6
+ "add(right_tail(group_zscore(divide(ts_delta(vec_avg(fnd72_pit_or_cf_a_cf_cap_expend_prpty_add), 252), ts_mean(vec_avg(fnd72_pit_or_bs_q_bs_tot_asset), 252)), industry), 1.5), left_tail(group_zscore(divide(ts_delta(vec_avg(fnd72_pit_or_cf_a_cf_cap_expend_prpty_add), 252), ts_mean(vec_avg(fnd72_pit_or_bs_q_bs_tot_asset), 252)), industry), -1.5))",
7
+ "add(right_tail(group_zscore(divide(ts_delta(vec_avg(fnd72_pit_or_cf_q_cf_cap_expend_prpty_add), 252), ts_mean(vec_avg(fnd72_pit_or_bs_a_bs_tot_asset), 252)), industry), 1.5), left_tail(group_zscore(divide(ts_delta(vec_avg(fnd72_pit_or_cf_q_cf_cap_expend_prpty_add), 252), ts_mean(vec_avg(fnd72_pit_or_bs_a_bs_tot_asset), 252)), industry), -1.5))",
8
+ "add(right_tail(group_zscore(divide(ts_delta(vec_avg(fnd72_pit_or_cf_q_cf_cap_expend_prpty_add), 252), ts_mean(vec_avg(fnd72_pit_or_bs_q_bs_tot_asset), 252)), industry), 1.5), left_tail(group_zscore(divide(ts_delta(vec_avg(fnd72_pit_or_cf_q_cf_cap_expend_prpty_add), 252), ts_mean(vec_avg(fnd72_pit_or_bs_q_bs_tot_asset), 252)), industry), -1.5))"
9
+ ]
10
+ }
@@ -0,0 +1,10 @@
1
+ {
2
+ "template": "divide(ts_regression(divide(vec_avg({cap_expend_prpty_add}), vec_avg({tot_asset})), ts_step(), 252, rettype=2), add(1, ts_std_dev(divide(vec_avg({cap_expend_prpty_add}), vec_avg({tot_asset})), 252)))",
3
+ "idea": "将简单差分升级为趋势质量度量。使用ts_regression(..., rettype=2)计算过去252日资本开支占比(capex/assets)时间序列的线性斜率,捕捉持续性投资趋势而非一次性脉冲;分母引入(1+波动率)惩罚项,对投资节奏混乱(高ts_std_dev)的公司降权,形成“趋势/噪音”信息比。该模板识别的是管理层执行战略时的坚定程度与资金配置的稳定性,而非单纯的投资规模变化。",
4
+ "expression_list": [
5
+ "divide(ts_regression(divide(vec_avg(fnd72_pit_or_cf_a_cf_cap_expend_prpty_add), vec_avg(fnd72_pit_or_bs_a_bs_tot_asset)), ts_step(), 252, rettype=2), add(1, ts_std_dev(divide(vec_avg(fnd72_pit_or_cf_a_cf_cap_expend_prpty_add), vec_avg(fnd72_pit_or_bs_a_bs_tot_asset)), 252)))",
6
+ "divide(ts_regression(divide(vec_avg(fnd72_pit_or_cf_a_cf_cap_expend_prpty_add), vec_avg(fnd72_pit_or_bs_q_bs_tot_asset)), ts_step(), 252, rettype=2), add(1, ts_std_dev(divide(vec_avg(fnd72_pit_or_cf_a_cf_cap_expend_prpty_add), vec_avg(fnd72_pit_or_bs_q_bs_tot_asset)), 252)))",
7
+ "divide(ts_regression(divide(vec_avg(fnd72_pit_or_cf_q_cf_cap_expend_prpty_add), vec_avg(fnd72_pit_or_bs_a_bs_tot_asset)), ts_step(), 252, rettype=2), add(1, ts_std_dev(divide(vec_avg(fnd72_pit_or_cf_q_cf_cap_expend_prpty_add), vec_avg(fnd72_pit_or_bs_a_bs_tot_asset)), 252)))",
8
+ "divide(ts_regression(divide(vec_avg(fnd72_pit_or_cf_q_cf_cap_expend_prpty_add), vec_avg(fnd72_pit_or_bs_q_bs_tot_asset)), ts_step(), 252, rettype=2), add(1, ts_std_dev(divide(vec_avg(fnd72_pit_or_cf_q_cf_cap_expend_prpty_add), vec_avg(fnd72_pit_or_bs_q_bs_tot_asset)), 252)))"
9
+ ]
10
+ }
@@ -0,0 +1,10 @@
1
+ {
2
+ "template": "group_zscore(ts_decay_linear(add(multiply(divide(ts_delta(vec_avg({cap_expend_prpty_add}), 63), ts_mean(vec_avg({tot_asset}), 63)), 0.5), multiply(divide(ts_delta(vec_avg({cap_expend_prpty_add}), 126), ts_mean(vec_avg({tot_asset}), 126)), 0.3), multiply(divide(ts_delta(vec_avg({cap_expend_prpty_add}), 252), ts_mean(vec_avg({tot_asset}), 252)), 0.2)), 10), sector)",
3
+ "idea": "构建多horizons加权复合动量。分别计算63日(短期)、126日(中期)、252日(长期)的投资加速度,按0.5:0.3:0.2权重加权合成,兼顾即时变化与长期趋势;通过ts_decay_linear(10)进行10日线性衰减平滑,降低单日异常波动的干扰;最后经sector组zscore中性化。该结构通过时间维度上的加权衰减避免过度反应,适用于捕捉不同时间尺度的投资拐点与平滑的动量延续。",
4
+ "expression_list": [
5
+ "group_zscore(ts_decay_linear(add(multiply(divide(ts_delta(vec_avg(fnd72_pit_or_cf_a_cf_cap_expend_prpty_add), 63), ts_mean(vec_avg(fnd72_pit_or_bs_a_bs_tot_asset), 63)), 0.5), multiply(divide(ts_delta(vec_avg(fnd72_pit_or_cf_a_cf_cap_expend_prpty_add), 126), ts_mean(vec_avg(fnd72_pit_or_bs_a_bs_tot_asset), 126)), 0.3), multiply(divide(ts_delta(vec_avg(fnd72_pit_or_cf_a_cf_cap_expend_prpty_add), 252), ts_mean(vec_avg(fnd72_pit_or_bs_a_bs_tot_asset), 252)), 0.2)), 10), sector)",
6
+ "group_zscore(ts_decay_linear(add(multiply(divide(ts_delta(vec_avg(fnd72_pit_or_cf_a_cf_cap_expend_prpty_add), 63), ts_mean(vec_avg(fnd72_pit_or_bs_q_bs_tot_asset), 63)), 0.5), multiply(divide(ts_delta(vec_avg(fnd72_pit_or_cf_a_cf_cap_expend_prpty_add), 126), ts_mean(vec_avg(fnd72_pit_or_bs_q_bs_tot_asset), 126)), 0.3), multiply(divide(ts_delta(vec_avg(fnd72_pit_or_cf_a_cf_cap_expend_prpty_add), 252), ts_mean(vec_avg(fnd72_pit_or_bs_q_bs_tot_asset), 252)), 0.2)), 10), sector)",
7
+ "group_zscore(ts_decay_linear(add(multiply(divide(ts_delta(vec_avg(fnd72_pit_or_cf_q_cf_cap_expend_prpty_add), 63), ts_mean(vec_avg(fnd72_pit_or_bs_a_bs_tot_asset), 63)), 0.5), multiply(divide(ts_delta(vec_avg(fnd72_pit_or_cf_q_cf_cap_expend_prpty_add), 126), ts_mean(vec_avg(fnd72_pit_or_bs_a_bs_tot_asset), 126)), 0.3), multiply(divide(ts_delta(vec_avg(fnd72_pit_or_cf_q_cf_cap_expend_prpty_add), 252), ts_mean(vec_avg(fnd72_pit_or_bs_a_bs_tot_asset), 252)), 0.2)), 10), sector)",
8
+ "group_zscore(ts_decay_linear(add(multiply(divide(ts_delta(vec_avg(fnd72_pit_or_cf_q_cf_cap_expend_prpty_add), 63), ts_mean(vec_avg(fnd72_pit_or_bs_q_bs_tot_asset), 63)), 0.5), multiply(divide(ts_delta(vec_avg(fnd72_pit_or_cf_q_cf_cap_expend_prpty_add), 126), ts_mean(vec_avg(fnd72_pit_or_bs_q_bs_tot_asset), 126)), 0.3), multiply(divide(ts_delta(vec_avg(fnd72_pit_or_cf_q_cf_cap_expend_prpty_add), 252), ts_mean(vec_avg(fnd72_pit_or_bs_q_bs_tot_asset), 252)), 0.2)), 10), sector)"
9
+ ]
10
+ }
@@ -0,0 +1,10 @@
1
+ {
2
+ "template": "group_zscore(winsorize(ts_sum(subtract(ts_backfill(vec_avg({cash_from_oper}),63), ts_backfill(vec_avg({cap_expend_prpty_add}),63)), 504), std=4), industry)",
3
+ "idea": "对季度经营现金流与资本支出进行63日回溯填充以确保数据连续性,经4倍标准差Winsorize处理极端会计异常值后,计算504日滚动累计自由现金流,最后进行行业内Z-score标准化。此举消除了不同行业资本密集度差异(如重工业 vs 服务业)带来的不可比性,使得现金创造能力的衡量具备跨行业可比性,同时极端值处理防止了单次大额资产处置或并购对累积值的扭曲。",
4
+ "expression_list": [
5
+ "group_zscore(winsorize(ts_sum(subtract(ts_backfill(vec_avg(fnd72_pit_or_cf_a_cf_cash_from_oper),63), ts_backfill(vec_avg(fnd72_pit_or_cf_a_cf_cap_expend_prpty_add),63)), 504), std=4), industry)",
6
+ "group_zscore(winsorize(ts_sum(subtract(ts_backfill(vec_avg(fnd72_pit_or_cf_q_cf_cash_from_oper),63), ts_backfill(vec_avg(fnd72_pit_or_cf_a_cf_cap_expend_prpty_add),63)), 504), std=4), industry)",
7
+ "group_zscore(winsorize(ts_sum(subtract(ts_backfill(vec_avg(fnd72_pit_or_cf_q_cf_cash_from_oper),63), ts_backfill(vec_avg(fnd72_pit_or_cf_q_cf_cap_expend_prpty_add),63)), 504), std=4), industry)",
8
+ "group_zscore(winsorize(ts_sum(subtract(ts_backfill(vec_avg(fnd72_pit_or_cf_a_cf_cash_from_oper),63), ts_backfill(vec_avg(fnd72_pit_or_cf_q_cf_cap_expend_prpty_add),63)), 504), std=4), industry)"
9
+ ]
10
+ }
@@ -0,0 +1,10 @@
1
+ {
2
+ "template": "multiply(ts_sum(subtract(vec_avg({cash_from_oper}), vec_avg({cap_expend_prpty_add})), 504), divide(1, add(1, vec_stddev(subtract({cash_from_oper}, {cap_expend_prpty_add})))))",
3
+ "idea": "在累计自由现金流总量的基础上,引入向量标准差衡量现金流生成的稳定性(波动性惩罚)。通过将504日累计值除以(1+现金流波动率),对盈利质量差、现金流大起大落的公司进行降权,筛选出具有'持续、稳定'现金创造能力的标的,而非依赖一次性非经常性损益的伪高现金流公司。",
4
+ "expression_list": [
5
+ "multiply(ts_sum(subtract(vec_avg(fnd72_pit_or_cf_a_cf_cash_from_oper), vec_avg(fnd72_pit_or_cf_a_cf_cap_expend_prpty_add)), 504), divide(1, add(1, vec_stddev(subtract(fnd72_pit_or_cf_a_cf_cash_from_oper, fnd72_pit_or_cf_a_cf_cap_expend_prpty_add)))))",
6
+ "multiply(ts_sum(subtract(vec_avg(fnd72_pit_or_cf_q_cf_cash_from_oper), vec_avg(fnd72_pit_or_cf_a_cf_cap_expend_prpty_add)), 504), divide(1, add(1, vec_stddev(subtract(fnd72_pit_or_cf_q_cf_cash_from_oper, fnd72_pit_or_cf_a_cf_cap_expend_prpty_add)))))",
7
+ "multiply(ts_sum(subtract(vec_avg(fnd72_pit_or_cf_a_cf_cash_from_oper), vec_avg(fnd72_pit_or_cf_q_cf_cap_expend_prpty_add)), 504), divide(1, add(1, vec_stddev(subtract(fnd72_pit_or_cf_a_cf_cash_from_oper, fnd72_pit_or_cf_q_cf_cap_expend_prpty_add)))))",
8
+ "multiply(ts_sum(subtract(vec_avg(fnd72_pit_or_cf_q_cf_cash_from_oper), vec_avg(fnd72_pit_or_cf_q_cf_cap_expend_prpty_add)), 504), divide(1, add(1, vec_stddev(subtract(fnd72_pit_or_cf_q_cf_cash_from_oper, fnd72_pit_or_cf_q_cf_cap_expend_prpty_add)))))"
9
+ ]
10
+ }
@@ -0,0 +1,10 @@
1
+ {
2
+ "template": "ts_zscore(subtract(ts_sum(subtract(ts_backfill(vec_avg({cash_from_oper}),63), ts_backfill(vec_avg({cap_expend_prpty_add}),63)), 126), ts_sum(subtract(ts_backfill(vec_avg({cash_from_oper}),63), ts_backfill(vec_avg({cap_expend_prpty_add}),63)), 504)), 504)",
3
+ "idea": "计算最近126日(半年)与最近504日(两年)累计自由现金流的差值,并进行504日时序Z-score标准化。该信号捕捉的是现金创造能力的'加速度'或'边际变化'而非绝对水平:当短期累计显著优于长期累计时,表明公司现金流生成进入改善通道;反之则提示业务恶化拐点,适用于识别财务趋势的动态反转。",
4
+ "expression_list": [
5
+ "ts_zscore(subtract(ts_sum(subtract(ts_backfill(vec_avg(fnd72_pit_or_cf_a_cf_cash_from_oper),63), ts_backfill(vec_avg(fnd72_pit_or_cf_a_cf_cap_expend_prpty_add),63)), 126), ts_sum(subtract(ts_backfill(vec_avg(fnd72_pit_or_cf_a_cf_cash_from_oper),63), ts_backfill(vec_avg(fnd72_pit_or_cf_a_cf_cap_expend_prpty_add),63)), 504)), 504)",
6
+ "ts_zscore(subtract(ts_sum(subtract(ts_backfill(vec_avg(fnd72_pit_or_cf_q_cf_cash_from_oper),63), ts_backfill(vec_avg(fnd72_pit_or_cf_a_cf_cap_expend_prpty_add),63)), 126), ts_sum(subtract(ts_backfill(vec_avg(fnd72_pit_or_cf_q_cf_cash_from_oper),63), ts_backfill(vec_avg(fnd72_pit_or_cf_a_cf_cap_expend_prpty_add),63)), 504)), 504)",
7
+ "ts_zscore(subtract(ts_sum(subtract(ts_backfill(vec_avg(fnd72_pit_or_cf_a_cf_cash_from_oper),63), ts_backfill(vec_avg(fnd72_pit_or_cf_q_cf_cap_expend_prpty_add),63)), 126), ts_sum(subtract(ts_backfill(vec_avg(fnd72_pit_or_cf_a_cf_cash_from_oper),63), ts_backfill(vec_avg(fnd72_pit_or_cf_q_cf_cap_expend_prpty_add),63)), 504)), 504)",
8
+ "ts_zscore(subtract(ts_sum(subtract(ts_backfill(vec_avg(fnd72_pit_or_cf_q_cf_cash_from_oper),63), ts_backfill(vec_avg(fnd72_pit_or_cf_q_cf_cap_expend_prpty_add),63)), 126), ts_sum(subtract(ts_backfill(vec_avg(fnd72_pit_or_cf_q_cf_cash_from_oper),63), ts_backfill(vec_avg(fnd72_pit_or_cf_q_cf_cap_expend_prpty_add),63)), 504)), 504)"
9
+ ]
10
+ }
@@ -0,0 +1,5 @@
1
+ {
2
+ "template": "trade_when(greater(group_rank(ts_mean({volume},21), industry), 0.2), divide(group_zscore(ts_sum(subtract(ts_backfill(vec_avg({cash_from_oper}),63), ts_backfill(vec_avg({cap_expend_prpty_add}),63)), 504), industry), ts_backfill({market_cap},63)), 0)",
3
+ "idea": "首先通过行业内成交量排名过滤掉流动性最差的后20%股票以控制交易成本与冲击成本;然后将经行业中性化处理的累计自由现金流除以市值,得到行业相对自由现金流收益率(FCF Yield)。该模板识别的是那些在同业中既具备强劲现金创造能力、当前估值又相对低估(市值分母)且具备足够流动性的标的,结合了质量与价值的双重逻辑。",
4
+ "expression_list": []
5
+ }
@@ -0,0 +1,10 @@
1
+ {
2
+ "template": "ts_decay_exp_window(signed_power(group_scale(subtract(ts_sum(subtract(vec_avg({cash_from_oper}), vec_avg({cap_expend_prpty_add})), 252), ts_sum(subtract(vec_avg({cash_from_oper}), vec_avg({cap_expend_prpty_add})), 504)), industry), 2), 126)",
3
+ "idea": "比较最近252日(一年)与504日(两年)累计自由现金流的差异以识别近期改善趋势,通过group_scale进行行业内[0,1]线性缩放后,使用signed_power(幂次=2)非线性放大尾部信号(极好与极差的标的),最后应用126日指数衰减加权平滑。该结构强调'近期趋势优于远期'的动量特征,同时通过指数衰减降低因子换手率,并突出那些现金创造能力处于行业极端分位点的公司。",
4
+ "expression_list": [
5
+ "ts_decay_exp_window(signed_power(group_scale(subtract(ts_sum(subtract(vec_avg(fnd72_pit_or_cf_a_cf_cash_from_oper), vec_avg(fnd72_pit_or_cf_a_cf_cap_expend_prpty_add)), 252), ts_sum(subtract(vec_avg(fnd72_pit_or_cf_a_cf_cash_from_oper), vec_avg(fnd72_pit_or_cf_a_cf_cap_expend_prpty_add)), 504)), industry), 2), 126)",
6
+ "ts_decay_exp_window(signed_power(group_scale(subtract(ts_sum(subtract(vec_avg(fnd72_pit_or_cf_q_cf_cash_from_oper), vec_avg(fnd72_pit_or_cf_a_cf_cap_expend_prpty_add)), 252), ts_sum(subtract(vec_avg(fnd72_pit_or_cf_q_cf_cash_from_oper), vec_avg(fnd72_pit_or_cf_a_cf_cap_expend_prpty_add)), 504)), industry), 2), 126)",
7
+ "ts_decay_exp_window(signed_power(group_scale(subtract(ts_sum(subtract(vec_avg(fnd72_pit_or_cf_a_cf_cash_from_oper), vec_avg(fnd72_pit_or_cf_q_cf_cap_expend_prpty_add)), 252), ts_sum(subtract(vec_avg(fnd72_pit_or_cf_a_cf_cash_from_oper), vec_avg(fnd72_pit_or_cf_q_cf_cap_expend_prpty_add)), 504)), industry), 2), 126)",
8
+ "ts_decay_exp_window(signed_power(group_scale(subtract(ts_sum(subtract(vec_avg(fnd72_pit_or_cf_q_cf_cash_from_oper), vec_avg(fnd72_pit_or_cf_q_cf_cap_expend_prpty_add)), 252), ts_sum(subtract(vec_avg(fnd72_pit_or_cf_q_cf_cash_from_oper), vec_avg(fnd72_pit_or_cf_q_cf_cap_expend_prpty_add)), 504)), industry), 2), 126)"
9
+ ]
10
+ }