cnhkmcp 2.3.0__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 (55) 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 +46 -4
  5. cnhkmcp/untracked/APP/templates/index.html +33 -0
  6. cnhkmcp/untracked/APP/trailSomeAlphas/enhance_template.py +132 -6
  7. cnhkmcp/untracked/APP/trailSomeAlphas/run_pipeline.py +135 -85
  8. cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-data-feature-engineering/SKILL.md +17 -0
  9. cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-data-feature-engineering/output_report/GLB_delay1_fundamental72_ideas.md +415 -0
  10. cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/final_expressions.json +76 -0
  11. cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/fundamental72_GLB_1_idea_1769852468022627100.json +22 -0
  12. cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/fundamental72_GLB_1_idea_1769852468554457600.json +14 -0
  13. cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/fundamental72_GLB_1_idea_1769852469133324600.json +8 -0
  14. cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/fundamental72_GLB_1_idea_1769852469704433900.json +10 -0
  15. cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/fundamental72_GLB_1_idea_1769852470248911900.json +10 -0
  16. cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/fundamental72_GLB_1_idea_1769852470805192900.json +8 -0
  17. cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/fundamental72_GLB_1_idea_1769852471380158000.json +10 -0
  18. cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/fundamental72_GLB_1_idea_1769852471944247400.json +22 -0
  19. cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/fundamental72_GLB_1_idea_1769852472483548800.json +14 -0
  20. cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/fundamental72_GLB_1_idea_1769852473053891800.json +22 -0
  21. cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/fundamental72_GLB_1_idea_1769852473617716000.json +22 -0
  22. cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/fundamental72_GLB_1_idea_1769852474172815700.json +14 -0
  23. cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/fundamental72_GLB_1_idea_1769852474735778500.json +10 -0
  24. cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/fundamental72_GLB_1_idea_1769852475315478500.json +14 -0
  25. cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/fundamental72_GLB_1_idea_1769852475912897000.json +8 -0
  26. cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/fundamental72_GLB_1_idea_1769852476474911100.json +10 -0
  27. cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/fundamental72_GLB_1_idea_1769852978914367200.json +10 -0
  28. cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/fundamental72_GLB_1_idea_1769852979426164800.json +10 -0
  29. cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/fundamental72_GLB_1_idea_1769852979945511100.json +10 -0
  30. cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/fundamental72_GLB_1_idea_1769852980480251500.json +10 -0
  31. cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/fundamental72_GLB_1_idea_1769852981007315500.json +10 -0
  32. cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/fundamental72_GLB_1_idea_1769854621979784200.json +10 -0
  33. cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/fundamental72_GLB_1_idea_1769854622483457900.json +10 -0
  34. cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/fundamental72_GLB_1_idea_1769854623010559800.json +10 -0
  35. cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/fundamental72_GLB_1_idea_1769854623572902300.json +5 -0
  36. cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/fundamental72_GLB_1_idea_1769854624091016000.json +10 -0
  37. cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/fundamental72_GLB_delay1.csv +330 -0
  38. cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/fundamental72_GLB_delay1.csv.bak_1769852868 +330 -0
  39. cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/fundamental72_GLB_delay1.csv.bak_1769854511 +330 -0
  40. cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/scripts/ace.log +12 -0
  41. cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/scripts/fetch_dataset.py +7 -1
  42. cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/scripts/validator.py +80 -4
  43. 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
  44. 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 +27 -2
  45. cnhkmcp/untracked/back_up/platform_functions.py +2 -2
  46. cnhkmcp/untracked/mcp/321/206/320/246/320/227/321/204/342/225/227/342/225/242/321/210/320/276/342/225/221/321/205/320/255/320/253/321/207/320/231/320/2302_/321/205/320/266/320/222/321/206/320/256/320/254/321/205/320/236/320/257/321/207/320/231/320/230/321/205/320/240/320/277/321/205/320/232/320/270/321/204/342/225/225/320/235/321/204/342/225/221/320/226/321/206/342/225/241/320/237/321/210/320/267/320/230/321/205/320/251/320/270/321/205/342/226/221/342/226/222/321/210/320/277/320/245/321/210/342/224/220/320/251/321/204/342/225/225/320/272/platform_functions.py +2 -2
  47. cnhkmcp/untracked/platform_functions.py +2 -2
  48. cnhkmcp/untracked/skills/alpha-expression-verifier/scripts/parsetab.py +60 -0
  49. cnhkmcp/untracked/skills/alpha-expression-verifier/scripts/validator.py +78 -4
  50. {cnhkmcp-2.3.0.dist-info → cnhkmcp-2.3.2.dist-info}/METADATA +1 -1
  51. {cnhkmcp-2.3.0.dist-info → cnhkmcp-2.3.2.dist-info}/RECORD +55 -22
  52. {cnhkmcp-2.3.0.dist-info → cnhkmcp-2.3.2.dist-info}/WHEEL +0 -0
  53. {cnhkmcp-2.3.0.dist-info → cnhkmcp-2.3.2.dist-info}/entry_points.txt +0 -0
  54. {cnhkmcp-2.3.0.dist-info → cnhkmcp-2.3.2.dist-info}/licenses/LICENSE +0 -0
  55. {cnhkmcp-2.3.0.dist-info → cnhkmcp-2.3.2.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,22 @@
1
+ {
2
+ "template": "divide(vec_avg({cash_from_oper}), add(vec_avg({st_debt}), vec_avg({other_st_liab}), vec_avg({cash_paid_for_int_debt})))",
3
+ "idea": "**Concept**: Fundamental Solvency Essence\n- **Sample Fields Used**: cash_from_oper, st_debt, other_st_liab, cash_paid_for_int_debt\n- **Definition**: Operating cash flow coverage of all short-term obligations including interest, measuring pure liquidity adequacy without refinancing dependency\n- **Why This Feature**: Essential liquidity metric focusing on operational self-sufficiency; removes equity market and long-term financing noise\n- **Logical Meaning**: Can the business fund its immediate obligations from operations alone?\n- **is filling nan necessary**: Ensure all liability components are captured; missing values may understate obligations\n- **Directionality**: Values >2.0 indicate operational self-sufficiency; <1.0 indicates dependency on external financing\n- **Boundary Conditions**: Values approaching zero indicate immediate liquidity crisis; extremely high values indicate inefficient capital structure",
4
+ "expression_list": [
5
+ "divide(vec_avg(fnd72_pit_or_cf_a_cf_cash_from_oper), add(vec_avg(fnd72_pit_or_bs_a_bs_st_debt), vec_avg(fnd72_pit_or_bs_a_bs_other_st_liab), vec_avg(fnd72_pit_or_cf_a_cf_act_cash_paid_for_int_debt)))",
6
+ "divide(vec_avg(fnd72_pit_or_cf_a_cf_cash_from_oper), add(vec_avg(fnd72_pit_or_bs_q_bs_st_debt), vec_avg(fnd72_pit_or_bs_a_bs_other_st_liab), vec_avg(fnd72_pit_or_cf_a_cf_act_cash_paid_for_int_debt)))",
7
+ "divide(vec_avg(fnd72_pit_or_cf_a_cf_cash_from_oper), add(vec_avg(fnd72_pit_or_bs_a_bs_st_debt), vec_avg(fnd72_pit_or_bs_q_bs_other_st_liab), vec_avg(fnd72_pit_or_cf_a_cf_act_cash_paid_for_int_debt)))",
8
+ "divide(vec_avg(fnd72_pit_or_cf_a_cf_cash_from_oper), add(vec_avg(fnd72_pit_or_bs_q_bs_st_debt), vec_avg(fnd72_pit_or_bs_q_bs_other_st_liab), vec_avg(fnd72_pit_or_cf_a_cf_act_cash_paid_for_int_debt)))",
9
+ "divide(vec_avg(fnd72_pit_or_cf_q_cf_cash_from_oper), add(vec_avg(fnd72_pit_or_bs_a_bs_st_debt), vec_avg(fnd72_pit_or_bs_a_bs_other_st_liab), vec_avg(fnd72_pit_or_cf_a_cf_act_cash_paid_for_int_debt)))",
10
+ "divide(vec_avg(fnd72_pit_or_cf_q_cf_cash_from_oper), add(vec_avg(fnd72_pit_or_bs_q_bs_st_debt), vec_avg(fnd72_pit_or_bs_a_bs_other_st_liab), vec_avg(fnd72_pit_or_cf_a_cf_act_cash_paid_for_int_debt)))",
11
+ "divide(vec_avg(fnd72_pit_or_cf_q_cf_cash_from_oper), add(vec_avg(fnd72_pit_or_bs_a_bs_st_debt), vec_avg(fnd72_pit_or_bs_q_bs_other_st_liab), vec_avg(fnd72_pit_or_cf_a_cf_act_cash_paid_for_int_debt)))",
12
+ "divide(vec_avg(fnd72_pit_or_cf_q_cf_cash_from_oper), add(vec_avg(fnd72_pit_or_bs_q_bs_st_debt), vec_avg(fnd72_pit_or_bs_q_bs_other_st_liab), vec_avg(fnd72_pit_or_cf_a_cf_act_cash_paid_for_int_debt)))",
13
+ "divide(vec_avg(fnd72_pit_or_cf_q_cf_cash_from_oper), add(vec_avg(fnd72_pit_or_bs_a_bs_st_debt), vec_avg(fnd72_pit_or_bs_a_bs_other_st_liab), vec_avg(fnd72_pit_or_cf_q_cf_act_cash_paid_for_int_debt)))",
14
+ "divide(vec_avg(fnd72_pit_or_cf_q_cf_cash_from_oper), add(vec_avg(fnd72_pit_or_bs_q_bs_st_debt), vec_avg(fnd72_pit_or_bs_a_bs_other_st_liab), vec_avg(fnd72_pit_or_cf_q_cf_act_cash_paid_for_int_debt)))",
15
+ "divide(vec_avg(fnd72_pit_or_cf_q_cf_cash_from_oper), add(vec_avg(fnd72_pit_or_bs_a_bs_st_debt), vec_avg(fnd72_pit_or_bs_q_bs_other_st_liab), vec_avg(fnd72_pit_or_cf_q_cf_act_cash_paid_for_int_debt)))",
16
+ "divide(vec_avg(fnd72_pit_or_cf_q_cf_cash_from_oper), add(vec_avg(fnd72_pit_or_bs_q_bs_st_debt), vec_avg(fnd72_pit_or_bs_q_bs_other_st_liab), vec_avg(fnd72_pit_or_cf_q_cf_act_cash_paid_for_int_debt)))",
17
+ "divide(vec_avg(fnd72_pit_or_cf_a_cf_cash_from_oper), add(vec_avg(fnd72_pit_or_bs_a_bs_st_debt), vec_avg(fnd72_pit_or_bs_a_bs_other_st_liab), vec_avg(fnd72_pit_or_cf_q_cf_act_cash_paid_for_int_debt)))",
18
+ "divide(vec_avg(fnd72_pit_or_cf_a_cf_cash_from_oper), add(vec_avg(fnd72_pit_or_bs_q_bs_st_debt), vec_avg(fnd72_pit_or_bs_a_bs_other_st_liab), vec_avg(fnd72_pit_or_cf_q_cf_act_cash_paid_for_int_debt)))",
19
+ "divide(vec_avg(fnd72_pit_or_cf_a_cf_cash_from_oper), add(vec_avg(fnd72_pit_or_bs_a_bs_st_debt), vec_avg(fnd72_pit_or_bs_q_bs_other_st_liab), vec_avg(fnd72_pit_or_cf_q_cf_act_cash_paid_for_int_debt)))",
20
+ "divide(vec_avg(fnd72_pit_or_cf_a_cf_cash_from_oper), add(vec_avg(fnd72_pit_or_bs_q_bs_st_debt), vec_avg(fnd72_pit_or_bs_q_bs_other_st_liab), vec_avg(fnd72_pit_or_cf_q_cf_act_cash_paid_for_int_debt)))"
21
+ ]
22
+ }
@@ -0,0 +1,14 @@
1
+ {
2
+ "template": "divide(vec_avg({cash_from_oper}), subtract(vec_avg({net_inc_avail_com_shrhldrs}), vec_avg({unrealized_gain_loss_comp_inc})))",
3
+ "idea": "**Concept**: Core Operating Cash Persistence\n- **Sample Fields Used**: cash_from_oper, net_inc_avail_com_shrhldrs, unrealized_gain_loss_comp_inc\n- **Definition**: Operating cash flow divided by net income adjusted for comprehensive income volatility, stripping out non-cash and non-operating distortions\n- **Why This Feature**: Distills true cash conversion efficiency by removing accounting artifacts and unrealized gains; essential measure of earnings quality\n- **Logical Meaning**: Pure cash generation capability independent of accrual accounting and mark-to-market volatility\n- **is filling nan necessary**: Unrealized gains may be zero for many firms; this is valid data\n- **Directionality**: Values consistently >1.0 indicate high-quality earnings converting to cash; <1.0 indicates aggressive revenue recognition\n- **Boundary Conditions**: Sustained values <0.5 indicate potential accounting issues; >2.0 indicates working capital optimization or deferred revenue",
4
+ "expression_list": [
5
+ "divide(vec_avg(fnd72_pit_or_cf_a_cf_cash_from_oper), subtract(vec_avg(fnd72_pit_or_is_a_is_net_inc_avail_com_shrhldrs), vec_avg(fnd72_pit_or_is_a_is_unrealized_gain_loss_comp_inc)))",
6
+ "divide(vec_avg(fnd72_pit_or_cf_q_cf_cash_from_oper), subtract(vec_avg(fnd72_pit_or_is_a_is_net_inc_avail_com_shrhldrs), vec_avg(fnd72_pit_or_is_a_is_unrealized_gain_loss_comp_inc)))",
7
+ "divide(vec_avg(fnd72_pit_or_cf_a_cf_cash_from_oper), subtract(vec_avg(fnd72_pit_or_is_q_is_net_inc_avail_com_shrhldrs), vec_avg(fnd72_pit_or_is_a_is_unrealized_gain_loss_comp_inc)))",
8
+ "divide(vec_avg(fnd72_pit_or_cf_q_cf_cash_from_oper), subtract(vec_avg(fnd72_pit_or_is_q_is_net_inc_avail_com_shrhldrs), vec_avg(fnd72_pit_or_is_a_is_unrealized_gain_loss_comp_inc)))",
9
+ "divide(vec_avg(fnd72_pit_or_cf_a_cf_cash_from_oper), subtract(vec_avg(fnd72_pit_or_is_q_is_net_inc_avail_com_shrhldrs), vec_avg(fnd72_pit_or_is_q_is_unrealized_gain_loss_comp_inc)))",
10
+ "divide(vec_avg(fnd72_pit_or_cf_q_cf_cash_from_oper), subtract(vec_avg(fnd72_pit_or_is_q_is_net_inc_avail_com_shrhldrs), vec_avg(fnd72_pit_or_is_q_is_unrealized_gain_loss_comp_inc)))",
11
+ "divide(vec_avg(fnd72_pit_or_cf_a_cf_cash_from_oper), subtract(vec_avg(fnd72_pit_or_is_a_is_net_inc_avail_com_shrhldrs), vec_avg(fnd72_pit_or_is_q_is_unrealized_gain_loss_comp_inc)))",
12
+ "divide(vec_avg(fnd72_pit_or_cf_q_cf_cash_from_oper), subtract(vec_avg(fnd72_pit_or_is_a_is_net_inc_avail_com_shrhldrs), vec_avg(fnd72_pit_or_is_q_is_unrealized_gain_loss_comp_inc)))"
13
+ ]
14
+ }
@@ -0,0 +1,22 @@
1
+ {
2
+ "template": "divide(vec_avg({sales_rev_turn}), add(vec_avg({accts_rec_excl_notes_rec}), vec_avg({invtry_raw_materials}), vec_avg({invtry_in_progress})))",
3
+ "idea": "**Concept**: Asset Composition Efficiency\n- **Sample Fields Used**: accts_rec_excl_notes_rec, invtry_raw_materials, invtry_in_progress, sales_rev_turn\n- **Definition**: Revenue divided by sum of receivables and inventory components, measuring working capital turnover\n- **Why This Feature**: Combines multiple asset classes to assess overall working capital efficiency; low values indicate capital tied up in operations\n- **Logical Meaning**: Measures how effectively the firm converts asset investments (receivables + inventory) into revenue\n- **is filling nan necessary**: Missing inventory components should be treated as zero if not applicable to business model (e.g., service firms)\n- **Directionality**: Higher values indicate efficient asset utilization; declining trends suggest operational inefficiency\n- **Boundary Conditions**: Industry-dependent; retail typically 6-12x, manufacturing 3-6x; extreme values indicate just-in-time success or data errors",
4
+ "expression_list": [
5
+ "divide(vec_avg(fnd72_pit_or_is_a_sales_rev_turn), add(vec_avg(fnd72_pit_or_bs_a_bs_accts_rec_excl_notes_rec), vec_avg(fnd72_pit_or_bs_a_invtry_raw_materials), vec_avg(fnd72_pit_or_bs_a_invtry_in_progress)))",
6
+ "divide(vec_avg(fnd72_pit_or_is_q_sales_rev_turn), add(vec_avg(fnd72_pit_or_bs_a_bs_accts_rec_excl_notes_rec), vec_avg(fnd72_pit_or_bs_a_invtry_raw_materials), vec_avg(fnd72_pit_or_bs_a_invtry_in_progress)))",
7
+ "divide(vec_avg(fnd72_pit_or_is_a_sales_rev_turn), add(vec_avg(fnd72_pit_or_bs_a_bs_accts_rec_excl_notes_rec), vec_avg(fnd72_pit_or_bs_a_invtry_raw_materials), vec_avg(fnd72_pit_or_bs_q_invtry_in_progress)))",
8
+ "divide(vec_avg(fnd72_pit_or_is_q_sales_rev_turn), add(vec_avg(fnd72_pit_or_bs_a_bs_accts_rec_excl_notes_rec), vec_avg(fnd72_pit_or_bs_a_invtry_raw_materials), vec_avg(fnd72_pit_or_bs_q_invtry_in_progress)))",
9
+ "divide(vec_avg(fnd72_pit_or_is_a_sales_rev_turn), add(vec_avg(fnd72_pit_or_bs_a_bs_accts_rec_excl_notes_rec), vec_avg(fnd72_pit_or_bs_q_invtry_raw_materials), vec_avg(fnd72_pit_or_bs_a_invtry_in_progress)))",
10
+ "divide(vec_avg(fnd72_pit_or_is_q_sales_rev_turn), add(vec_avg(fnd72_pit_or_bs_a_bs_accts_rec_excl_notes_rec), vec_avg(fnd72_pit_or_bs_q_invtry_raw_materials), vec_avg(fnd72_pit_or_bs_a_invtry_in_progress)))",
11
+ "divide(vec_avg(fnd72_pit_or_is_a_sales_rev_turn), add(vec_avg(fnd72_pit_or_bs_a_bs_accts_rec_excl_notes_rec), vec_avg(fnd72_pit_or_bs_q_invtry_raw_materials), vec_avg(fnd72_pit_or_bs_q_invtry_in_progress)))",
12
+ "divide(vec_avg(fnd72_pit_or_is_q_sales_rev_turn), add(vec_avg(fnd72_pit_or_bs_a_bs_accts_rec_excl_notes_rec), vec_avg(fnd72_pit_or_bs_q_invtry_raw_materials), vec_avg(fnd72_pit_or_bs_q_invtry_in_progress)))",
13
+ "divide(vec_avg(fnd72_pit_or_is_a_sales_rev_turn), add(vec_avg(fnd72_pit_or_bs_q_bs_accts_rec_excl_notes_rec), vec_avg(fnd72_pit_or_bs_q_invtry_raw_materials), vec_avg(fnd72_pit_or_bs_q_invtry_in_progress)))",
14
+ "divide(vec_avg(fnd72_pit_or_is_q_sales_rev_turn), add(vec_avg(fnd72_pit_or_bs_q_bs_accts_rec_excl_notes_rec), vec_avg(fnd72_pit_or_bs_q_invtry_raw_materials), vec_avg(fnd72_pit_or_bs_q_invtry_in_progress)))",
15
+ "divide(vec_avg(fnd72_pit_or_is_a_sales_rev_turn), add(vec_avg(fnd72_pit_or_bs_q_bs_accts_rec_excl_notes_rec), vec_avg(fnd72_pit_or_bs_q_invtry_raw_materials), vec_avg(fnd72_pit_or_bs_a_invtry_in_progress)))",
16
+ "divide(vec_avg(fnd72_pit_or_is_q_sales_rev_turn), add(vec_avg(fnd72_pit_or_bs_q_bs_accts_rec_excl_notes_rec), vec_avg(fnd72_pit_or_bs_q_invtry_raw_materials), vec_avg(fnd72_pit_or_bs_a_invtry_in_progress)))",
17
+ "divide(vec_avg(fnd72_pit_or_is_a_sales_rev_turn), add(vec_avg(fnd72_pit_or_bs_q_bs_accts_rec_excl_notes_rec), vec_avg(fnd72_pit_or_bs_a_invtry_raw_materials), vec_avg(fnd72_pit_or_bs_q_invtry_in_progress)))",
18
+ "divide(vec_avg(fnd72_pit_or_is_q_sales_rev_turn), add(vec_avg(fnd72_pit_or_bs_q_bs_accts_rec_excl_notes_rec), vec_avg(fnd72_pit_or_bs_a_invtry_raw_materials), vec_avg(fnd72_pit_or_bs_q_invtry_in_progress)))",
19
+ "divide(vec_avg(fnd72_pit_or_is_a_sales_rev_turn), add(vec_avg(fnd72_pit_or_bs_q_bs_accts_rec_excl_notes_rec), vec_avg(fnd72_pit_or_bs_a_invtry_raw_materials), vec_avg(fnd72_pit_or_bs_a_invtry_in_progress)))",
20
+ "divide(vec_avg(fnd72_pit_or_is_q_sales_rev_turn), add(vec_avg(fnd72_pit_or_bs_q_bs_accts_rec_excl_notes_rec), vec_avg(fnd72_pit_or_bs_a_invtry_raw_materials), vec_avg(fnd72_pit_or_bs_a_invtry_in_progress)))"
21
+ ]
22
+ }
@@ -0,0 +1,22 @@
1
+ {
2
+ "template": "divide(vec_avg({st_debt}), add(vec_avg({other_st_liab}), vec_avg({def_tax_liab}), vec_avg({st_debt}), vec_avg({tot_liab_eqy})))",
3
+ "idea": "**Concept**: Short-Term Debt Dependency Ratio\n- **Sample Fields Used**: st_debt, other_st_liab, def_tax_liab, tot_liab_eqy\n- **Definition**: Short-term debt as proportion of total liabilities, capturing capital structure maturity profile\n- **Why This Feature**: High short-term dependency indicates refinancing risk and liquidity vulnerability; structural measure of financial risk\n- **Logical Meaning**: Decomposes liability structure to identify maturity mismatch risks in the capital stack\n- **is filling nan necessary**: Zero short-term debt is valid and should not be filled; missing total liabilities requires data validation\n- **Directionality**: Lower values indicate long-term financing security; higher values indicate reliance on rolling short-term funding\n- **Boundary Conditions**: Values >0.4 indicate dangerous short-term dependency; zero indicates conservative long-term financing",
4
+ "expression_list": [
5
+ "divide(vec_avg(fnd72_pit_or_bs_a_bs_st_debt), add(vec_avg(fnd72_pit_or_bs_a_bs_other_st_liab), vec_avg(fnd72_pit_or_bs_a_bs_def_tax_liab), vec_avg(fnd72_pit_or_bs_a_bs_st_debt), vec_avg(fnd72_pit_or_bs_a_bs_tot_liab_eqy)))",
6
+ "divide(vec_avg(fnd72_pit_or_bs_q_bs_st_debt), add(vec_avg(fnd72_pit_or_bs_a_bs_other_st_liab), vec_avg(fnd72_pit_or_bs_a_bs_def_tax_liab), vec_avg(fnd72_pit_or_bs_q_bs_st_debt), vec_avg(fnd72_pit_or_bs_a_bs_tot_liab_eqy)))",
7
+ "divide(vec_avg(fnd72_pit_or_bs_a_bs_st_debt), add(vec_avg(fnd72_pit_or_bs_a_bs_other_st_liab), vec_avg(fnd72_pit_or_bs_a_bs_def_tax_liab), vec_avg(fnd72_pit_or_bs_a_bs_st_debt), vec_avg(fnd72_pit_or_bs_q_bs_tot_liab_eqy)))",
8
+ "divide(vec_avg(fnd72_pit_or_bs_q_bs_st_debt), add(vec_avg(fnd72_pit_or_bs_a_bs_other_st_liab), vec_avg(fnd72_pit_or_bs_a_bs_def_tax_liab), vec_avg(fnd72_pit_or_bs_q_bs_st_debt), vec_avg(fnd72_pit_or_bs_q_bs_tot_liab_eqy)))",
9
+ "divide(vec_avg(fnd72_pit_or_bs_a_bs_st_debt), add(vec_avg(fnd72_pit_or_bs_a_bs_other_st_liab), vec_avg(fnd72_pit_or_bs_q_bs_def_tax_liab), vec_avg(fnd72_pit_or_bs_a_bs_st_debt), vec_avg(fnd72_pit_or_bs_a_bs_tot_liab_eqy)))",
10
+ "divide(vec_avg(fnd72_pit_or_bs_q_bs_st_debt), add(vec_avg(fnd72_pit_or_bs_a_bs_other_st_liab), vec_avg(fnd72_pit_or_bs_q_bs_def_tax_liab), vec_avg(fnd72_pit_or_bs_q_bs_st_debt), vec_avg(fnd72_pit_or_bs_a_bs_tot_liab_eqy)))",
11
+ "divide(vec_avg(fnd72_pit_or_bs_a_bs_st_debt), add(vec_avg(fnd72_pit_or_bs_a_bs_other_st_liab), vec_avg(fnd72_pit_or_bs_q_bs_def_tax_liab), vec_avg(fnd72_pit_or_bs_a_bs_st_debt), vec_avg(fnd72_pit_or_bs_q_bs_tot_liab_eqy)))",
12
+ "divide(vec_avg(fnd72_pit_or_bs_q_bs_st_debt), add(vec_avg(fnd72_pit_or_bs_a_bs_other_st_liab), vec_avg(fnd72_pit_or_bs_q_bs_def_tax_liab), vec_avg(fnd72_pit_or_bs_q_bs_st_debt), vec_avg(fnd72_pit_or_bs_q_bs_tot_liab_eqy)))",
13
+ "divide(vec_avg(fnd72_pit_or_bs_q_bs_st_debt), add(vec_avg(fnd72_pit_or_bs_q_bs_other_st_liab), vec_avg(fnd72_pit_or_bs_q_bs_def_tax_liab), vec_avg(fnd72_pit_or_bs_q_bs_st_debt), vec_avg(fnd72_pit_or_bs_q_bs_tot_liab_eqy)))",
14
+ "divide(vec_avg(fnd72_pit_or_bs_a_bs_st_debt), add(vec_avg(fnd72_pit_or_bs_q_bs_other_st_liab), vec_avg(fnd72_pit_or_bs_q_bs_def_tax_liab), vec_avg(fnd72_pit_or_bs_a_bs_st_debt), vec_avg(fnd72_pit_or_bs_q_bs_tot_liab_eqy)))",
15
+ "divide(vec_avg(fnd72_pit_or_bs_q_bs_st_debt), add(vec_avg(fnd72_pit_or_bs_q_bs_other_st_liab), vec_avg(fnd72_pit_or_bs_q_bs_def_tax_liab), vec_avg(fnd72_pit_or_bs_q_bs_st_debt), vec_avg(fnd72_pit_or_bs_a_bs_tot_liab_eqy)))",
16
+ "divide(vec_avg(fnd72_pit_or_bs_a_bs_st_debt), add(vec_avg(fnd72_pit_or_bs_q_bs_other_st_liab), vec_avg(fnd72_pit_or_bs_q_bs_def_tax_liab), vec_avg(fnd72_pit_or_bs_a_bs_st_debt), vec_avg(fnd72_pit_or_bs_a_bs_tot_liab_eqy)))",
17
+ "divide(vec_avg(fnd72_pit_or_bs_q_bs_st_debt), add(vec_avg(fnd72_pit_or_bs_q_bs_other_st_liab), vec_avg(fnd72_pit_or_bs_a_bs_def_tax_liab), vec_avg(fnd72_pit_or_bs_q_bs_st_debt), vec_avg(fnd72_pit_or_bs_q_bs_tot_liab_eqy)))",
18
+ "divide(vec_avg(fnd72_pit_or_bs_a_bs_st_debt), add(vec_avg(fnd72_pit_or_bs_q_bs_other_st_liab), vec_avg(fnd72_pit_or_bs_a_bs_def_tax_liab), vec_avg(fnd72_pit_or_bs_a_bs_st_debt), vec_avg(fnd72_pit_or_bs_q_bs_tot_liab_eqy)))",
19
+ "divide(vec_avg(fnd72_pit_or_bs_q_bs_st_debt), add(vec_avg(fnd72_pit_or_bs_q_bs_other_st_liab), vec_avg(fnd72_pit_or_bs_a_bs_def_tax_liab), vec_avg(fnd72_pit_or_bs_q_bs_st_debt), vec_avg(fnd72_pit_or_bs_a_bs_tot_liab_eqy)))",
20
+ "divide(vec_avg(fnd72_pit_or_bs_a_bs_st_debt), add(vec_avg(fnd72_pit_or_bs_q_bs_other_st_liab), vec_avg(fnd72_pit_or_bs_a_bs_def_tax_liab), vec_avg(fnd72_pit_or_bs_a_bs_st_debt), vec_avg(fnd72_pit_or_bs_a_bs_tot_liab_eqy)))"
21
+ ]
22
+ }
@@ -0,0 +1,14 @@
1
+ {
2
+ "template": "quantile(divide(vec_avg({comprehensive_income}), vec_avg({net_inc_avail_com_shrhldrs})), driver=\"gaussian\", sigma=1.0)",
3
+ "idea": "**Concept**: Comprehensive Income Gaussian Rank\n- **Sample Fields Used**: comprehensive_income, net_inc_avail_com_shrhldrs\n- **Definition**: Cross-sectional Gaussian quantile of the ratio of comprehensive income to net income\n- **Why This Feature**: Relative positioning within universe identifies outliers in earnings quality; extreme ranks indicate unusual comprehensive income components\n- **Logical Meaning**: Relative comparison of total economic income versus reported net income across peers\n- **is filling nan necessary**: Missing comprehensive income should be excluded from ranking rather than filled\n- **Directionality**: Extreme positive ranks indicate significant OCI gains; extreme negative indicate OCI losses\n- **Boundary Conditions**: Values beyond 2 sigma indicate material divergence from typical earnings composition",
4
+ "expression_list": [
5
+ "quantile(divide(vec_avg(fnd72_pit_or_is_a_is_comprehensive_income), vec_avg(fnd72_pit_or_is_a_is_net_inc_avail_com_shrhldrs)), driver=\"gaussian\", sigma=1.0)",
6
+ "quantile(divide(vec_avg(fnd72_pit_or_is_a_is_comprehensive_income_per_shr), vec_avg(fnd72_pit_or_is_a_is_net_inc_avail_com_shrhldrs)), driver=\"gaussian\", sigma=1.0)",
7
+ "quantile(divide(vec_avg(fnd72_pit_or_is_q_is_comprehensive_income), vec_avg(fnd72_pit_or_is_a_is_net_inc_avail_com_shrhldrs)), driver=\"gaussian\", sigma=1.0)",
8
+ "quantile(divide(vec_avg(fnd72_pit_or_is_q_is_comprehensive_income_per_shr), vec_avg(fnd72_pit_or_is_a_is_net_inc_avail_com_shrhldrs)), driver=\"gaussian\", sigma=1.0)",
9
+ "quantile(divide(vec_avg(fnd72_pit_or_is_q_is_comprehensive_income), vec_avg(fnd72_pit_or_is_q_is_net_inc_avail_com_shrhldrs)), driver=\"gaussian\", sigma=1.0)",
10
+ "quantile(divide(vec_avg(fnd72_pit_or_is_q_is_comprehensive_income_per_shr), vec_avg(fnd72_pit_or_is_q_is_net_inc_avail_com_shrhldrs)), driver=\"gaussian\", sigma=1.0)",
11
+ "quantile(divide(vec_avg(fnd72_pit_or_is_a_is_comprehensive_income), vec_avg(fnd72_pit_or_is_q_is_net_inc_avail_com_shrhldrs)), driver=\"gaussian\", sigma=1.0)",
12
+ "quantile(divide(vec_avg(fnd72_pit_or_is_a_is_comprehensive_income_per_shr), vec_avg(fnd72_pit_or_is_q_is_net_inc_avail_com_shrhldrs)), driver=\"gaussian\", sigma=1.0)"
13
+ ]
14
+ }
@@ -0,0 +1,10 @@
1
+ {
2
+ "template": "subtract(ts_delta(vec_avg({chng_non_cash_work_cap}), 126), ts_delta(vec_avg({sales_rev_turn}), 126))",
3
+ "idea": "**Concept**: Working Capital Velocity Shift\n- **Sample Fields Used**: chng_non_cash_work_cap, sales_rev_turn\n- **Definition**: Rate of change in non-cash working capital relative to revenue growth over trailing 126 days\n- **Why This Feature**: Divergence between working capital needs and revenue growth indicates efficiency gains or deterioration in receivables/payables management\n- **Logical Meaning**: Measures whether the company is monetizing its working capital (positive divergence) or consuming cash to fund growth (negative)\n- **is filling nan necessary**: Working capital changes can be legitimately zero; fill only true missing values\n- **Directionality**: Positive divergence (working capital decreasing while revenue growing) indicates efficiency; negative suggests cash consumption\n- **Boundary Conditions**: Extreme values indicate one-time working capital events or seasonal distortions",
4
+ "expression_list": [
5
+ "subtract(ts_delta(vec_avg(fnd72_pit_or_cf_a_cf_chng_non_cash_work_cap), 126), ts_delta(vec_avg(fnd72_pit_or_is_a_sales_rev_turn), 126))",
6
+ "subtract(ts_delta(vec_avg(fnd72_pit_or_cf_a_cf_chng_non_cash_work_cap), 126), ts_delta(vec_avg(fnd72_pit_or_is_q_sales_rev_turn), 126))",
7
+ "subtract(ts_delta(vec_avg(fnd72_pit_or_cf_q_cf_chng_non_cash_work_cap), 126), ts_delta(vec_avg(fnd72_pit_or_is_a_sales_rev_turn), 126))",
8
+ "subtract(ts_delta(vec_avg(fnd72_pit_or_cf_q_cf_chng_non_cash_work_cap), 126), ts_delta(vec_avg(fnd72_pit_or_is_q_sales_rev_turn), 126))"
9
+ ]
10
+ }
@@ -0,0 +1,14 @@
1
+ {
2
+ "template": "subtract(vec_avg({eff_int_rate}), divide(vec_avg({int_expense}), ts_mean(vec_avg({tot_asset}), 126)))",
3
+ "idea": "**Concept**: Effective Interest Rate Spread\n- **Sample Fields Used**: eff_int_rate, int_expense, tot_asset\n- **Definition**: Effective interest rate minus implied rate (interest expense/average total assets), measuring debt cost efficiency\n- **Why This Feature**: Positive spread indicates efficient debt management vs industry; negative suggests high-cost borrowing or inefficient capital structure\n- **Logical Meaning**: Relative positioning of the firm's debt costs versus its asset scale and stated effective rates\n- **is filling nan necessary**: Ensure both rate and expense data align temporally before calculation\n- **Directionality**: Negative values indicate favorable borrowing costs relative to asset base; positive suggests expensive leverage\n- **Boundary Conditions**: Extreme deviations (>5%) indicate measurement errors or non-standard debt instruments",
4
+ "expression_list": [
5
+ "subtract(vec_avg(fnd72_pit_or_is_a_eff_int_rate), divide(vec_avg(fnd72_pit_or_is_a_is_int_expense), ts_mean(vec_avg(fnd72_pit_or_bs_a_bs_tot_asset), 126)))",
6
+ "subtract(vec_avg(fnd72_pit_or_is_a_eff_int_rate), divide(vec_avg(fnd72_pit_or_is_a_is_int_expense), ts_mean(vec_avg(fnd72_pit_or_bs_q_bs_tot_asset), 126)))",
7
+ "subtract(vec_avg(fnd72_pit_or_is_a_eff_int_rate), divide(vec_avg(fnd72_pit_or_is_q_is_int_expense), ts_mean(vec_avg(fnd72_pit_or_bs_a_bs_tot_asset), 126)))",
8
+ "subtract(vec_avg(fnd72_pit_or_is_a_eff_int_rate), divide(vec_avg(fnd72_pit_or_is_q_is_int_expense), ts_mean(vec_avg(fnd72_pit_or_bs_q_bs_tot_asset), 126)))",
9
+ "subtract(vec_avg(fnd72_pit_or_is_q_eff_int_rate), divide(vec_avg(fnd72_pit_or_is_q_is_int_expense), ts_mean(vec_avg(fnd72_pit_or_bs_a_bs_tot_asset), 126)))",
10
+ "subtract(vec_avg(fnd72_pit_or_is_q_eff_int_rate), divide(vec_avg(fnd72_pit_or_is_q_is_int_expense), ts_mean(vec_avg(fnd72_pit_or_bs_q_bs_tot_asset), 126)))",
11
+ "subtract(vec_avg(fnd72_pit_or_is_q_eff_int_rate), divide(vec_avg(fnd72_pit_or_is_a_is_int_expense), ts_mean(vec_avg(fnd72_pit_or_bs_a_bs_tot_asset), 126)))",
12
+ "subtract(vec_avg(fnd72_pit_or_is_q_eff_int_rate), divide(vec_avg(fnd72_pit_or_is_a_is_int_expense), ts_mean(vec_avg(fnd72_pit_or_bs_q_bs_tot_asset), 126)))"
13
+ ]
14
+ }
@@ -0,0 +1,8 @@
1
+ {
2
+ "template": "ts_corr(vec_avg({cash_from_oper}), ts_delay(vec_avg({cash_from_oper}), 252), 504)",
3
+ "idea": "**Concept**: Operating Cash Flow Persistence\n- **Sample Fields Used**: cash_from_oper\n- **Definition**: Rolling 504-day autocorrelation of operating cash flow levels\n- **Why This Feature**: Persistent operating cash flows indicate sustainable business models; erratic cash generation suggests cyclicality or working capital management issues\n- **Logical Meaning**: Captures the stability of core business cash generation independent of accounting accruals\n- **is filling nan necessary**: Quarterly gaps should be backfilled using ts_backfill to maintain continuity for time series calculations\n- **Directionality**: Higher values (closer to 1.0) indicate stable, predictable cash generation\n- **Boundary Conditions**: Negative autocorrelation suggests mean-reverting or cyclical cash flows; values >0.8 indicate exceptional stability",
4
+ "expression_list": [
5
+ "ts_corr(vec_avg(fnd72_pit_or_cf_a_cf_cash_from_oper), ts_delay(vec_avg(fnd72_pit_or_cf_a_cf_cash_from_oper), 252), 504)",
6
+ "ts_corr(vec_avg(fnd72_pit_or_cf_q_cf_cash_from_oper), ts_delay(vec_avg(fnd72_pit_or_cf_q_cf_cash_from_oper), 252), 504)"
7
+ ]
8
+ }
@@ -0,0 +1,10 @@
1
+ {
2
+ "template": "ts_sum(subtract(vec_avg({cash_from_oper}), vec_avg({cap_expend_prpty_add})), 504)",
3
+ "idea": "**Concept**: Cumulative Free Cash Generation\n- **Sample Fields Used**: cash_from_oper, cap_expend_prpty_add\n- **Definition**: Rolling 504-day sum of operating cash flow minus capital expenditures\n- **Why This Feature**: Cumulative free cash flow indicates long-term value creation capacity; negative accumulation signals unsustainable business model\n- **Logical Meaning**: Accumulated net cash available for shareholders after maintaining and expanding asset base\n- **is filling nan necessary**: Quarterly data requires backfilling to ensure continuous accumulation\n- **Directionality**: Positive and growing values indicate value creation; negative values indicate cash consumption\n- **Boundary Conditions**: Sustained negative accumulation over 2+ years indicates structural cash burn; extreme positive indicates cash hoarding",
4
+ "expression_list": [
5
+ "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)",
6
+ "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)",
7
+ "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)",
8
+ "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)"
9
+ ]
10
+ }
@@ -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
+ }