cnhkmcp 2.3.1__py3-none-any.whl → 2.3.3__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.
- cnhkmcp/__init__.py +1 -1
- cnhkmcp/untracked/AI/321/206/320/231/320/243/321/205/342/225/226/320/265/321/204/342/225/221/342/225/221/BRAIN_AI/321/206/320/231/320/243/321/205/342/225/226/320/265/321/204/342/225/221/342/225/221Mac_Linux/321/207/320/231/320/230/321/206/320/254/320/274.zip +0 -0
- cnhkmcp/untracked/AI/321/206/320/231/320/243/321/205/342/225/226/320/265/321/204/342/225/221/342/225/221//321/205/320/237/320/234/321/205/320/227/342/225/227/321/205/320/276/320/231/321/210/320/263/320/225AI/321/206/320/231/320/243/321/205/342/225/226/320/265/321/204/342/225/221/342/225/221_Windows/321/207/320/231/320/230/321/206/320/254/320/274.exe +0 -0
- cnhkmcp/untracked/APP/Tranformer/parsetab.py +60 -0
- cnhkmcp/untracked/APP/Tranformer/validator.py +78 -4
- cnhkmcp/untracked/APP/static/inspiration.js +41 -3
- cnhkmcp/untracked/APP/templates/index.html +26 -0
- cnhkmcp/untracked/APP/trailSomeAlphas/ace.log +1 -0
- cnhkmcp/untracked/APP/trailSomeAlphas/enhance_template.py +132 -6
- cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-data-feature-engineering/SKILL.md +17 -0
- cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-data-feature-engineering/output_report/GLB_delay1_fundamental28_ideas.md +384 -0
- cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-data-feature-engineering/output_report/GLB_delay1_fundamental72_ideas.md +292 -239
- cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental28_GLB_delay1/final_expressions.json +41 -0
- cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental28_GLB_delay1/fundamental28_GLB_1_idea_1769874844124598400.json +7 -0
- cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental28_GLB_delay1/fundamental28_GLB_1_idea_1769874844589448700.json +8 -0
- cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental28_GLB_delay1/fundamental28_GLB_1_idea_1769874845048996700.json +8 -0
- cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental28_GLB_delay1/fundamental28_GLB_1_idea_1769874845510819100.json +12 -0
- cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental28_GLB_delay1/fundamental28_GLB_1_idea_1769874845978315000.json +10 -0
- cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental28_GLB_delay1/fundamental28_GLB_1_idea_1769874846459411100.json +10 -0
- cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental28_GLB_delay1/fundamental28_GLB_1_idea_1769874846924915700.json +8 -0
- cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental28_GLB_delay1/fundamental28_GLB_1_idea_1769874847399137200.json +8 -0
- cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental28_GLB_delay1/fundamental28_GLB_1_idea_1769874847858960800.json +10 -0
- cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental28_GLB_delay1/fundamental28_GLB_1_idea_1769874848327921300.json +8 -0
- cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental28_GLB_delay1/fundamental28_GLB_1_idea_1769874848810818000.json +8 -0
- cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental28_GLB_delay1/fundamental28_GLB_1_idea_1769874849327754300.json +7 -0
- cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental28_GLB_delay1/fundamental28_GLB_1_idea_1769874849795807500.json +8 -0
- cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental28_GLB_delay1/fundamental28_GLB_1_idea_1769874850272279500.json +8 -0
- cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental28_GLB_delay1/fundamental28_GLB_1_idea_1769874850757124200.json +7 -0
- cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental28_GLB_delay1/fundamental28_GLB_1_idea_1769874851224506800.json +8 -0
- cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental28_GLB_delay1/fundamental28_GLB_delay1.csv +930 -0
- cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/final_expressions.json +74 -136
- cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/fundamental72_GLB_1_idea_1769852468022627100.json +22 -0
- cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/fundamental72_GLB_1_idea_1769852468554457600.json +14 -0
- cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/fundamental72_GLB_1_idea_1769852469133324600.json +8 -0
- cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/fundamental72_GLB_1_idea_1769852469704433900.json +10 -0
- cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/fundamental72_GLB_1_idea_1769852470248911900.json +10 -0
- cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/fundamental72_GLB_1_idea_1769852470805192900.json +8 -0
- cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/fundamental72_GLB_1_idea_1769852471380158000.json +10 -0
- cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/fundamental72_GLB_1_idea_1769852471944247400.json +22 -0
- cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/fundamental72_GLB_1_idea_1769852472483548800.json +14 -0
- cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/fundamental72_GLB_1_idea_1769852473053891800.json +22 -0
- cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/fundamental72_GLB_1_idea_1769852473617716000.json +22 -0
- cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/fundamental72_GLB_1_idea_1769852474172815700.json +14 -0
- cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/fundamental72_GLB_1_idea_1769852474735778500.json +10 -0
- cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/fundamental72_GLB_1_idea_1769852475315478500.json +14 -0
- cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/fundamental72_GLB_1_idea_1769852475912897000.json +8 -0
- cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/fundamental72_GLB_1_idea_1769852476474911100.json +10 -0
- cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/fundamental72_GLB_1_idea_1769852978914367200.json +10 -0
- cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/fundamental72_GLB_1_idea_1769852979426164800.json +10 -0
- cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/fundamental72_GLB_1_idea_1769852979945511100.json +10 -0
- cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/fundamental72_GLB_1_idea_1769852980480251500.json +10 -0
- cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/fundamental72_GLB_1_idea_1769852981007315500.json +10 -0
- cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/fundamental72_GLB_1_idea_1769854621979784200.json +10 -0
- cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/fundamental72_GLB_1_idea_1769854622483457900.json +10 -0
- cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/fundamental72_GLB_1_idea_1769854623010559800.json +10 -0
- cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/fundamental72_GLB_1_idea_1769854623572902300.json +5 -0
- cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/fundamental72_GLB_1_idea_1769854624091016000.json +10 -0
- cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/fundamental72_GLB_delay1.csv.bak_1769852868 +330 -0
- cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/fundamental72_GLB_delay1.csv.bak_1769854511 +330 -0
- cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/scripts/ace.log +13 -0
- cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/scripts/validator.py +80 -4
- 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
- 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
- cnhkmcp/untracked/skills/alpha-expression-verifier/scripts/parsetab.py +60 -0
- cnhkmcp/untracked/skills/alpha-expression-verifier/scripts/validator.py +78 -4
- cnhkmcp/untracked/skills/brain-inspectTemplate-create-Setting/.gitignore +14 -0
- cnhkmcp/untracked/skills/brain-inspectTemplate-create-Setting/SKILL.md +76 -0
- cnhkmcp/untracked/skills/brain-inspectTemplate-create-Setting/ace.log +0 -0
- cnhkmcp/untracked/skills/brain-inspectTemplate-create-Setting/ace_lib.py +1512 -0
- cnhkmcp/untracked/skills/brain-inspectTemplate-create-Setting/config.json +6 -0
- cnhkmcp/untracked/skills/brain-inspectTemplate-create-Setting/fundamental28_GLB_1_idea_1769874845978315000.json +10 -0
- cnhkmcp/untracked/skills/brain-inspectTemplate-create-Setting/helpful_functions.py +180 -0
- cnhkmcp/untracked/skills/brain-inspectTemplate-create-Setting/scripts/__init__.py +0 -0
- cnhkmcp/untracked/skills/brain-inspectTemplate-create-Setting/scripts/build_alpha_list.py +86 -0
- cnhkmcp/untracked/skills/brain-inspectTemplate-create-Setting/scripts/fetch_sim_options.py +51 -0
- cnhkmcp/untracked/skills/brain-inspectTemplate-create-Setting/scripts/load_credentials.py +93 -0
- cnhkmcp/untracked/skills/brain-inspectTemplate-create-Setting/scripts/parse_idea_file.py +85 -0
- cnhkmcp/untracked/skills/brain-inspectTemplate-create-Setting/scripts/process_template.py +80 -0
- cnhkmcp/untracked/skills/brain-inspectTemplate-create-Setting/scripts/resolve_settings.py +94 -0
- cnhkmcp/untracked/skills/brain-inspectTemplate-create-Setting/sim_options_snapshot.json +414 -0
- {cnhkmcp-2.3.1.dist-info → cnhkmcp-2.3.3.dist-info}/METADATA +1 -1
- {cnhkmcp-2.3.1.dist-info → cnhkmcp-2.3.3.dist-info}/RECORD +86 -41
- cnhkmcp/untracked/APP/simulator/wqb20260130130030.log +0 -210
- cnhkmcp/untracked/APP/simulator/wqb20260130131757.log +0 -104
- cnhkmcp/untracked/APP/simulator/wqb20260130172245.log +0 -70
- cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/fundamental72_GLB_1_idea_1769759441444909600.json +0 -38
- cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/fundamental72_GLB_1_idea_1769759441920092000.json +0 -14
- cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/fundamental72_GLB_1_idea_1769759442418767100.json +0 -14
- cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/fundamental72_GLB_1_idea_1769759442902507600.json +0 -14
- cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/fundamental72_GLB_1_idea_1769759443377036200.json +0 -10
- cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/fundamental72_GLB_1_idea_1769759443845377000.json +0 -14
- cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/fundamental72_GLB_1_idea_1769759444313546700.json +0 -10
- cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/fundamental72_GLB_1_idea_1769759444784598600.json +0 -14
- cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/fundamental72_GLB_1_idea_1769759445274311200.json +0 -14
- cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/fundamental72_GLB_1_idea_1769759445747421700.json +0 -10
- cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/fundamental72_GLB_1_idea_1769759446222137800.json +0 -22
- cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/fundamental72_GLB_1_idea_1769759446686222600.json +0 -14
- cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/fundamental72_GLB_1_idea_1769759447154698500.json +0 -10
- cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/fundamental72_GLB_1_idea_1769759447629677000.json +0 -10
- cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/fundamental72_GLB_1_idea_1769759448102331200.json +0 -10
- cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/fundamental72_GLB_1_idea_1769759448573382000.json +0 -14
- {cnhkmcp-2.3.1.dist-info → cnhkmcp-2.3.3.dist-info}/WHEEL +0 -0
- {cnhkmcp-2.3.1.dist-info → cnhkmcp-2.3.3.dist-info}/entry_points.txt +0 -0
- {cnhkmcp-2.3.1.dist-info → cnhkmcp-2.3.3.dist-info}/licenses/LICENSE +0 -0
- {cnhkmcp-2.3.1.dist-info → cnhkmcp-2.3.3.dist-info}/top_level.txt +0 -0
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
[
|
|
2
|
+
"divide(abs(fnd28_cfsourceusea_value_04840a), ts_mean(abs(fnd28_cfsourceusea_value_04840a), 252))",
|
|
3
|
+
"divide(subtract(fnd28_ishtq_value_18191q, ts_mean(fnd28_ishtq_value_18191q, 252)), ts_std_dev(fnd28_ishtq_value_18191q, 252))",
|
|
4
|
+
"divide(subtract(fnd28_newq_value_18191q, ts_mean(fnd28_newq_value_18191q, 252)), ts_std_dev(fnd28_newq_value_18191q, 252))",
|
|
5
|
+
"divide(ts_delta(fnd28_newq_value_08316q, 63), ts_mean(fnd28_newq_value_08316q, 252))",
|
|
6
|
+
"divide(ts_delta(fnd28_ratesq_value_08316q, 63), ts_mean(fnd28_ratesq_value_08316q, 252))",
|
|
7
|
+
"divide(fnd28_bdeq_value_03051q, fnd28_bdeq_value_03999q)",
|
|
8
|
+
"divide(fnd28_bdeq_value_03051q, fnd28_newq_value_03999q)",
|
|
9
|
+
"divide(fnd28_fsq1_value_03051q, fnd28_bdeq_value_03999q)",
|
|
10
|
+
"divide(fnd28_fsq1_value_03051q, fnd28_newq_value_03999q)",
|
|
11
|
+
"divide(fnd28_nddq1_value_03051q, fnd28_newq_value_03999q)",
|
|
12
|
+
"divide(fnd28_nddq1_value_03051q, fnd28_bdeq_value_03999q)",
|
|
13
|
+
"divide(fnd28_bdea_value_03501a, fnd28_bsassetq_value_02300q)",
|
|
14
|
+
"divide(fnd28_bdea_value_03501a, fnd28_nddq1_value_02300q)",
|
|
15
|
+
"divide(fnd28_fsa1_value_03501a, fnd28_bsassetq_value_02300q)",
|
|
16
|
+
"divide(fnd28_fsa1_value_03501a, fnd28_nddq1_value_02300q)",
|
|
17
|
+
"divide(fnd28_cfq_value_04001q, fnd28_bsassetq_value_02300q)",
|
|
18
|
+
"divide(fnd28_cfq_value_04001q, fnd28_nddq1_value_02300q)",
|
|
19
|
+
"divide(fnd28_nddq1_value_04001q, fnd28_nddq1_value_02300q)",
|
|
20
|
+
"divide(fnd28_nddq1_value_04001q, fnd28_bsassetq_value_02300q)",
|
|
21
|
+
"multiply(fnd28_growthratesa_value_08616a, fnd28_newq_value_08251q)",
|
|
22
|
+
"multiply(fnd28_growthratesa_value_08616a, fnd28_ratesq_value_08251q)",
|
|
23
|
+
"quantile(fnd28_newq_value_08301q, driver=\"gaussian\")",
|
|
24
|
+
"quantile(fnd28_ratesq_value_08301q, driver=\"gaussian\")",
|
|
25
|
+
"regression_neut(fnd28_newq_value_08251q, fnd28_nddq1_value_02300q)",
|
|
26
|
+
"regression_neut(fnd28_newq_value_08251q, fnd28_bsassetq_value_02300q)",
|
|
27
|
+
"regression_neut(fnd28_ratesq_value_08251q, fnd28_bsassetq_value_02300q)",
|
|
28
|
+
"regression_neut(fnd28_ratesq_value_08251q, fnd28_nddq1_value_02300q)",
|
|
29
|
+
"subtract(fnd28_cfq_value_04001q, fnd28_cfsourceusea_value_04840a)",
|
|
30
|
+
"subtract(fnd28_nddq1_value_04001q, fnd28_cfsourceusea_value_04840a)",
|
|
31
|
+
"ts_corr(fnd28_newq_value_08316q, ts_delay(fnd28_newq_value_08316q, 252), 504)",
|
|
32
|
+
"ts_corr(fnd28_ratesq_value_08316q, ts_delay(fnd28_ratesq_value_08316q, 252), 504)",
|
|
33
|
+
"ts_delta(fnd28_growthratesa_value_08816a, 63)",
|
|
34
|
+
"ts_std_dev(ts_delta(fnd28_bsassetq_value_02300q, 252), 63)",
|
|
35
|
+
"ts_std_dev(ts_delta(fnd28_nddq1_value_02300q, 252), 63)",
|
|
36
|
+
"ts_std_dev(fnd28_newq_value_08251q, 20)",
|
|
37
|
+
"ts_std_dev(fnd28_ratesq_value_08251q, 20)",
|
|
38
|
+
"ts_sum(fnd28_cfsourceusea_value_04840a, 63)",
|
|
39
|
+
"ts_sum(fnd28_cfq_value_04001q, 252)",
|
|
40
|
+
"ts_sum(fnd28_nddq1_value_04001q, 252)"
|
|
41
|
+
]
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"template": "divide(abs({cfsourceusea_value_04840a}), ts_mean(abs({cfsourceusea_value_04840a}), 252))",
|
|
3
|
+
"idea": "**Concept**: FX Impact Anomaly\n- **Sample Fields Used**: `cfsourceusea_value_04840a`\n- **Definition**: Magnitude of current FX effect relative to historical average absolute impact\n- **Why This Feature**: Flags unusual currency translation effects that may distort underlying operational performance\n- **Logical Meaning**: Identifies when currency headwinds/tailwinds are unusually severe compared to the company's historical FX exposure\n- **is filling nan necessary**: we have some operators to fill nan value like ts_backfill() or group_mean() etc. however, in some cases, if the nan value itself has some meaning, then we should not fill it blindly since it may introduce some bias. so before filling nan value, we should think about whether the nan value has some meaning in the specific scenario. FX effects are often zero for domestic companies; NaN vs zero distinction matters for international exposure identification.\n- **Directionality**: High values indicate unusual FX impact (may require operational adjustment)\n- **Boundary Conditions**: Values near 1 indicate normal FX impact; high values indicate currency crises or extreme rate movements",
|
|
4
|
+
"expression_list": [
|
|
5
|
+
"divide(abs(fnd28_cfsourceusea_value_04840a), ts_mean(abs(fnd28_cfsourceusea_value_04840a), 252))"
|
|
6
|
+
]
|
|
7
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
{
|
|
2
|
+
"template": "divide(subtract({value_18191q}, ts_mean({value_18191q}, 252)), ts_std_dev({value_18191q}, 252))",
|
|
3
|
+
"idea": "**Concept**: EBIT Z-Score Deviation\n- **Sample Fields Used**: `value_18191q`\n- **Definition**: Standardized deviation of current EBIT from its 1-year historical mean\n- **Why This Feature**: Identifies earnings surprises or shocks that deviate significantly from the company's normal operating range\n- **Logical Meaning**: Statistical measure of earnings unusualness; extreme values suggest non-recurring items or inflection points\n- **is filling nan necessary**: we have some operators to fill nan value like ts_backfill() or group_mean() etc. however, in some cases, if the nan value itself has some meaning, then we should not fill it blindly since it may introduce some bias. so before filling nan value, we should think about whether the nan value has some meaning in the specific scenario. NaN handling should preserve the distinction between missing data and zero earnings.\n- **Directionality**: High absolute values indicate anomalies (potential mean reversion candidates)\n- **Boundary Conditions**: Values beyond 2-3 standard deviations indicate significant outliers",
|
|
4
|
+
"expression_list": [
|
|
5
|
+
"divide(subtract(fnd28_ishtq_value_18191q, ts_mean(fnd28_ishtq_value_18191q, 252)), ts_std_dev(fnd28_ishtq_value_18191q, 252))",
|
|
6
|
+
"divide(subtract(fnd28_newq_value_18191q, ts_mean(fnd28_newq_value_18191q, 252)), ts_std_dev(fnd28_newq_value_18191q, 252))"
|
|
7
|
+
]
|
|
8
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
{
|
|
2
|
+
"template": "divide(ts_delta({value_08316q}, 63), ts_mean({value_08316q}, 252))",
|
|
3
|
+
"idea": "**Concept**: Operating Margin Momentum\n- **Sample Fields Used**: `value_08316q`\n- **Definition**: Recent change in operating margin normalized by the 1-year average margin level\n- **Why This Feature**: Identifies operational inflections (expansion/contraction) relative to the company's historical norm\n- **Logical Meaning**: Normalized velocity of profitability changes; indicates pricing power or cost control shifts\n- **is filling nan necessary**: we have some operators to fill nan value like ts_backfill() or group_mean() etc. however, in some cases, if the nan value itself has some meaning, then we should not fill it blindly since it may introduce some bias. so before filling nan value, we should think about whether the nan value has some meaning in the specific scenario. Quarterly reporting gaps should not be filled to avoid assuming constant margins.\n- **Directionality**: Positive values indicate margin expansion (operational improvement)\n- **Boundary Conditions**: Values near zero indicate stable margins; spikes indicate one-time items or structural changes",
|
|
4
|
+
"expression_list": [
|
|
5
|
+
"divide(ts_delta(fnd28_newq_value_08316q, 63), ts_mean(fnd28_newq_value_08316q, 252))",
|
|
6
|
+
"divide(ts_delta(fnd28_ratesq_value_08316q, 63), ts_mean(fnd28_ratesq_value_08316q, 252))"
|
|
7
|
+
]
|
|
8
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
{
|
|
2
|
+
"template": "divide({value_03051q}, {value_03999q})",
|
|
3
|
+
"idea": "**Concept**: Short-Term Liquidity Exposure\n- **Sample Fields Used**: `value_03051q`, `value_03999q`\n- **Definition**: Short-term debt as a proportion of total liabilities and shareholders' equity\n- **Why This Feature**: Captures refinancing risk and liquidity pressure; high values indicate near-term obligations\n- **Logical Meaning**: Maturity structure of liabilities; indicates reliance on short-term funding vs long-term capital\n- **is filling nan necessary**: we have some operators to fill nan value like ts_backfill() or group_mean() etc. however, in some cases, if the nan value itself has some meaning, then we should not fill it blindly since it may introduce some bias. so before filling nan value, we should think about whether the nan value has some meaning in the specific scenario. Zero short-term debt is meaningful (long-term only financing); distinguish from missing data.\n- **Directionality**: Higher values indicate greater near-term refinancing risk (negative for stability)\n- **Boundary Conditions**: Values approaching 1 indicate all debt is short-term; zero indicates no current maturities",
|
|
4
|
+
"expression_list": [
|
|
5
|
+
"divide(fnd28_bdeq_value_03051q, fnd28_bdeq_value_03999q)",
|
|
6
|
+
"divide(fnd28_bdeq_value_03051q, fnd28_newq_value_03999q)",
|
|
7
|
+
"divide(fnd28_fsq1_value_03051q, fnd28_bdeq_value_03999q)",
|
|
8
|
+
"divide(fnd28_fsq1_value_03051q, fnd28_newq_value_03999q)",
|
|
9
|
+
"divide(fnd28_nddq1_value_03051q, fnd28_newq_value_03999q)",
|
|
10
|
+
"divide(fnd28_nddq1_value_03051q, fnd28_bdeq_value_03999q)"
|
|
11
|
+
]
|
|
12
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
{
|
|
2
|
+
"template": "divide({value_03501a}, {value_02300q})",
|
|
3
|
+
"idea": "**Concept**: Equity Capital Structure Ratio\n- **Sample Fields Used**: `value_03501a`, `value_02300q`\n- **Definition**: Common equity as a proportion of total assets (Equity/Assets ratio)\n- **Why This Feature**: Measures financial leverage and capital structure conservatism; higher equity indicates lower leverage risk\n- **Logical Meaning**: Ownership cushion against asset value declines; inverse of leverage ratio\n- **is filling nan necessary**: we have some operators to fill nan value like ts_backfill() or group_mean() etc. however, in some cases, if the nan value itself has some meaning, then we should not fill it blindly since it may introduce some bias. so before filling nan value, we should think about whether the nan value has some meaning in the specific scenario. Annual equity vs quarterly assets creates frequency mismatch; do not interpolate annual data to quarterly.\n- **Directionality**: Higher values indicate less leveraged, more conservative capital structure (typically lower risk)\n- **Boundary Conditions**: Values near 1 indicate no debt; near 0 indicate highly leveraged or negative equity situations",
|
|
4
|
+
"expression_list": [
|
|
5
|
+
"divide(fnd28_bdea_value_03501a, fnd28_bsassetq_value_02300q)",
|
|
6
|
+
"divide(fnd28_bdea_value_03501a, fnd28_nddq1_value_02300q)",
|
|
7
|
+
"divide(fnd28_fsa1_value_03501a, fnd28_bsassetq_value_02300q)",
|
|
8
|
+
"divide(fnd28_fsa1_value_03501a, fnd28_nddq1_value_02300q)"
|
|
9
|
+
]
|
|
10
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
{
|
|
2
|
+
"template": "divide({value_04001q}, {value_02300q})",
|
|
3
|
+
"idea": "**Concept**: Cash-to-Assets Efficiency\n- **Sample Fields Used**: `value_04001q`, `value_02300q`\n- **Definition**: Ratio of net income starting line to total assets (ROA proxy using cash flow statement starting point)\n- **Why This Feature**: Measures fundamental asset efficiency independent of accrual accounting adjustments\n- **Logical Meaning**: Asset turnover intensity; how effectively the company converts its asset base into earnings\n- **is filling nan necessary**: we have some operators to fill nan value like ts_backfill() or group_mean() etc. however, in some cases, if the nan value itself has some meaning, then we should not fill it blindly since it may introduce some bias. so before filling nan value, we should think about whether the nan value has some meaning in the specific scenario. Asset values are quarterly; income is flow-based. Ensure both are available for the same period.\n- **Directionality**: Higher values indicate more efficient asset utilization (positive for returns)\n- **Boundary Conditions**: Capital-intensive industries naturally have lower values; financials have different asset definitions",
|
|
4
|
+
"expression_list": [
|
|
5
|
+
"divide(fnd28_cfq_value_04001q, fnd28_bsassetq_value_02300q)",
|
|
6
|
+
"divide(fnd28_cfq_value_04001q, fnd28_nddq1_value_02300q)",
|
|
7
|
+
"divide(fnd28_nddq1_value_04001q, fnd28_nddq1_value_02300q)",
|
|
8
|
+
"divide(fnd28_nddq1_value_04001q, fnd28_bsassetq_value_02300q)"
|
|
9
|
+
]
|
|
10
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
{
|
|
2
|
+
"template": "multiply({growthratesa_value_08616a}, {value_08251q})",
|
|
3
|
+
"idea": "**Concept**: Sustainable Growth Quality\n- **Sample Fields Used**: `growthratesa_value_08616a`, `value_08251q`\n- **Definition**: Product of equity growth rate and fixed charge coverage ratio\n- **Why This Feature**: High growth with low coverage suggests leveraged, risky expansion; high coverage supports sustainable growth\n- **Logical Meaning**: Quality-adjusted growth metric; scales growth magnitude by financial stability\n- **is filling nan necessary**: we have some operators to fill nan value like ts_backfill() or group_mean() etc. however, in some cases, if the nan value itself has some meaning, then we should not fill it blindly since it may introduce some bias. so before filling nan value, we should think about whether the nan value has some meaning in the specific scenario. Different frequencies (annual growth vs quarterly coverage) require alignment; do not fill across frequency mismatches.\n- **Directionality**: Higher values indicate high growth with strong coverage (optimal); negative values indicate growth during coverage distress (risky)\n- **Boundary Conditions**: Near-zero coverage with high growth creates extreme values; winsorization recommended",
|
|
4
|
+
"expression_list": [
|
|
5
|
+
"multiply(fnd28_growthratesa_value_08616a, fnd28_newq_value_08251q)",
|
|
6
|
+
"multiply(fnd28_growthratesa_value_08616a, fnd28_ratesq_value_08251q)"
|
|
7
|
+
]
|
|
8
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
{
|
|
2
|
+
"template": "quantile({value_08301q}, driver=\"gaussian\")",
|
|
3
|
+
"idea": "**Concept**: ROE Cross-Sectional Percentile\n- **Sample Fields Used**: `value_08301q`\n- **Definition**: Gaussian-quantile rank of Return on Equity within the cross-sectional universe\n- **Why This Feature**: Relative profitability positioning independent of market-wide ROE shifts; identifies top-tier operators\n- **Logical Meaning**: Standardized position within the profit distribution; robust to inflation/period effects that raise all boats\n- **is filling nan necessary**: we have some operators to fill nan value like ts_backfill() or group_mean() etc. however, in some cases, if the nan value itself has some meaning, then we should not fill it blindly since it may introduce some bias. so before filling nan value, we should think about whether the nan value has some meaning in the specific scenario. Quantile calculation requires complete cross-section; NaN values should be excluded from ranking, not filled.\n- **Directionality**: Higher values indicate top-quartile profitability relative to peers (positive for selection)\n- **Boundary Conditions**: Gaussian transformation caps extreme tails; values beyond +/- 2 sigma are rare",
|
|
4
|
+
"expression_list": [
|
|
5
|
+
"quantile(fnd28_newq_value_08301q, driver=\"gaussian\")",
|
|
6
|
+
"quantile(fnd28_ratesq_value_08301q, driver=\"gaussian\")"
|
|
7
|
+
]
|
|
8
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
{
|
|
2
|
+
"template": "regression_neut({value_08251q}, {value_02300q})",
|
|
3
|
+
"idea": "**Concept**: Coverage Neutralized for Size\n- **Sample Fields Used**: `value_08251q`, `value_02300q`\n- **Definition**: Residual of fixed charge coverage after regressing on total assets (size)\n- **Why This Feature**: Distinguishes coverage due to operational efficiency from coverage due to scale economies or diversification\n- **Logical Meaning**: Coverage ratio independent of company size; identifies efficiently managed small caps vs bloated large caps\n- **is filling nan necessary**: we have some operators to fill nan value like ts_backfill() or group_mean() etc. however, in some cases, if the nan value itself has some meaning, then we should not fill it blindly since it may introduce some bias. so before filling nan value, we should think about whether the nan value has some meaning in the specific scenario. Regression requires paired observations; missing either variable should result in NaN residual.\n- **Directionality**: Positive residuals indicate better coverage than size predicts (operational alpha)\n- **Boundary Conditions**: Extreme residuals indicate outliers in coverage-to-size relationship (niche business models)",
|
|
4
|
+
"expression_list": [
|
|
5
|
+
"regression_neut(fnd28_newq_value_08251q, fnd28_nddq1_value_02300q)",
|
|
6
|
+
"regression_neut(fnd28_newq_value_08251q, fnd28_bsassetq_value_02300q)",
|
|
7
|
+
"regression_neut(fnd28_ratesq_value_08251q, fnd28_bsassetq_value_02300q)",
|
|
8
|
+
"regression_neut(fnd28_ratesq_value_08251q, fnd28_nddq1_value_02300q)"
|
|
9
|
+
]
|
|
10
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
{
|
|
2
|
+
"template": "subtract({value_04001q}, {cfsourceusea_value_04840a})",
|
|
3
|
+
"idea": "**Concept**: FX-Adjusted Cash Generation\n- **Sample Fields Used**: `value_04001q`, `cfsourceusea_value_04840a`\n- **Definition**: Net income starting line minus FX translation effects to isolate operational cash generation\n- **Why This Feature**: Removes non-operational currency noise to reveal underlying business performance\n- **Logical Meaning**: Core operational cash flow before translational accounting adjustments; pure operational signal\n- **is filling nan necessary**: we have some operators to fill nan value like ts_backfill() or group_mean() etc. however, in some cases, if the nan value itself has some meaning, then we should not fill it blindly since it may introduce some bias. so before filling nan value, we should think about whether the nan value has some meaning in the specific scenario. If FX effect is NaN (domestic company), the adjustment should be zero (no effect), not filled from other companies.\n- **Directionality**: Higher values indicate stronger core operational generation independent of currency games\n- **Boundary Conditions**: Large differences between adjusted and unadjusted indicate high FX volatility or international exposure",
|
|
4
|
+
"expression_list": [
|
|
5
|
+
"subtract(fnd28_cfq_value_04001q, fnd28_cfsourceusea_value_04840a)",
|
|
6
|
+
"subtract(fnd28_nddq1_value_04001q, fnd28_cfsourceusea_value_04840a)"
|
|
7
|
+
]
|
|
8
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
{
|
|
2
|
+
"template": "ts_corr({value_08316q}, ts_delay({value_08316q}, 252), 504)",
|
|
3
|
+
"idea": "**Concept**: Operating Margin Persistence\n- **Sample Fields Used**: `value_08316q`\n- **Definition**: Correlation between current operating margin and margin 252 days (1 year) prior, measured over 504 days (2 years)\n- **Why This Feature**: Measures the durability of competitive advantages; persistent margins indicate moats, volatile margins indicate commodity exposure\n- **Logical Meaning**: Autocorrelation of profitability; high values suggest structural industry position, low values suggest cyclical or competitive pressure\n- **is filling nan necessary**: we have some operators to fill nan value like ts_backfill() or group_mean() etc. however, in some cases, if the nan value itself has some meaning, then we should not fill it blindly since it may introduce some bias. so before filling nan value, we should think about whether the nan value has some meaning in the specific scenario. Correlation requires aligned time series; filling gaps creates spurious persistence.\n- **Directionality**: Higher values indicate persistent margins (quality); low values indicate unstable margins (risk)\n- **Boundary Conditions**: Values near 1 indicate highly predictable margins; near 0 indicate random walk margins; negative indicate mean-reverting margins",
|
|
4
|
+
"expression_list": [
|
|
5
|
+
"ts_corr(fnd28_newq_value_08316q, ts_delay(fnd28_newq_value_08316q, 252), 504)",
|
|
6
|
+
"ts_corr(fnd28_ratesq_value_08316q, ts_delay(fnd28_ratesq_value_08316q, 252), 504)"
|
|
7
|
+
]
|
|
8
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"template": "ts_delta({growthratesa_value_08816a}, 63)",
|
|
3
|
+
"idea": "**Concept**: Earnings Growth Acceleration\n- **Sample Fields Used**: `growthratesa_value_08816a`\n- **Definition**: Change in annual EPS growth rate over a 63-day window to capture inflection points in momentum\n- **Why This Feature**: Markets price changes in growth rates, not just growth levels; acceleration signals improving business trends\n- **Logical Meaning**: Second derivative of earnings; positive values indicate growth is speeding up (positive momentum)\n- **is filling nan necessary**: we have some operators to fill nan value like ts_backfill() or group_mean() etc. however, in some cases, if the nan value itself has some meaning, then we should not fill it blindly since it may introduce some bias. so before filling nan value, we should think about whether the nan value has some meaning in the specific scenario. Annual growth rates update infrequently; filling NaNs with stale data creates look-ahead bias.\n- **Directionality**: Positive values indicate accelerating growth (bullish); negative indicates deceleration\n- **Boundary Conditions**: Extreme values occur near earnings turning points (negative to positive growth)",
|
|
4
|
+
"expression_list": [
|
|
5
|
+
"ts_delta(fnd28_growthratesa_value_08816a, 63)"
|
|
6
|
+
]
|
|
7
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
{
|
|
2
|
+
"template": "ts_std_dev(ts_delta({value_02300q}, 252), 63)",
|
|
3
|
+
"idea": "**Concept**: Asset Growth Consistency\n- **Sample Fields Used**: `value_02300q`\n- **Definition**: Standard deviation of year-over-year asset changes measured over 63 days (quarterly window)\n- **Why This Feature**: Distinguishes between steady organic expansion and lumpy acquisition-driven growth or asset sales\n- **Logical Meaning**: Captures the volatility of the company's investment policy; consistent growth suggests predictable capital allocation\n- **is filling nan necessary**: we have some operators to fill nan value like ts_backfill() or group_mean() etc. however, in some cases, if the nan value itself has some meaning, then we should not fill it blindly since it may introduce some bias. so before filling nan value, we should think about whether the nan value has some meaning in the specific scenario. Asset values are typically reported quarterly; interpolation between quarters may introduce false stability.\n- **Directionality**: Lower values indicate more stable asset base evolution (typically positive for forecasting)\n- **Boundary Conditions**: Zero indicates no asset changes; spikes indicate M&A activity or write-downs",
|
|
4
|
+
"expression_list": [
|
|
5
|
+
"ts_std_dev(ts_delta(fnd28_bsassetq_value_02300q, 252), 63)",
|
|
6
|
+
"ts_std_dev(ts_delta(fnd28_nddq1_value_02300q, 252), 63)"
|
|
7
|
+
]
|
|
8
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
{
|
|
2
|
+
"template": "ts_std_dev({value_08251q}, 20)",
|
|
3
|
+
"idea": "**Concept**: Coverage Stability Score\n- **Sample Fields Used**: `value_08251q`\n- **Definition**: Standard deviation of fixed charge coverage ratio over 20 days to identify companies with predictable debt servicing capacity\n- **Why This Feature**: Stable coverage indicates predictable cash generation and disciplined capital structure management, reducing refinancing risk\n- **Logical Meaning**: Measures the volatility of the safety margin for fixed obligations; low volatility suggests business model stability\n- **is filling nan necessary**: we have some operators to fill nan value like ts_backfill() or group_mean() etc. however, in some cases, if the nan value itself has some meaning, then we should not fill it blindly since it may introduce some bias. so before filling nan value, we should think about whether the nan value has some meaning in the specific scenario. For coverage ratios, NaN often indicates missing data rather than meaningful absence, so ts_backfill may be appropriate for short gaps.\n- **Directionality**: Lower values indicate more stable coverage (positive for credit quality)\n- **Boundary Conditions**: Values near 0 indicate constant coverage; extremely high values indicate earnings volatility or near-zero denominators",
|
|
4
|
+
"expression_list": [
|
|
5
|
+
"ts_std_dev(fnd28_newq_value_08251q, 20)",
|
|
6
|
+
"ts_std_dev(fnd28_ratesq_value_08251q, 20)"
|
|
7
|
+
]
|
|
8
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"template": "ts_sum({cfsourceusea_value_04840a}, 63)",
|
|
3
|
+
"idea": "**Concept**: Cumulative FX Drag\n- **Sample Fields Used**: `cfsourceusea_value_04840a`\n- **Definition**: Rolling 63-day (quarterly) sum of FX effects on cash\n- **Why This Feature**: Distinguishes persistent currency headwinds from one-time translation adjustments\n- **Logical Meaning**: Sustained currency impact over a reporting period; indicates structural FX exposure\n- **is filling nan necessary**: we have some operators to fill nan value like ts_backfill() or group_mean() etc. however, in some cases, if the nan value itself has some meaning, then we should not fill it blindly since it may introduce some bias. so before filling nan value, we should think about whether the nan value has some meaning in the specific scenario. Cumulative zero over time suggests natural hedging; filling NaNs as zero may obscure this.\n- **Directionality**: Negative values indicate cumulative FX headwinds (reducing cash); positive indicates tailwinds\n- **Boundary Conditions**: Large negative sums indicate sustained currency depreciation impact on foreign operations",
|
|
4
|
+
"expression_list": [
|
|
5
|
+
"ts_sum(fnd28_cfsourceusea_value_04840a, 63)"
|
|
6
|
+
]
|
|
7
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
{
|
|
2
|
+
"template": "ts_sum({value_04001q}, 252)",
|
|
3
|
+
"idea": "**Concept**: Annual Earnings Accumulation\n- **Sample Fields Used**: `value_04001q`\n- **Definition**: Rolling 252-day (1-year) sum of net income starting line\n- **Why This Feature**: Captures cumulative earnings power over a fiscal period, smoothing quarterly volatility\n- **Logical Meaning**: Trailing twelve-month earnings proxy using cash flow statement starting point; measures sustained profitability\n- **is filling nan necessary**: we have some operators to fill nan value like ts_backfill() or group_mean() etc. however, in some cases, if the nan value itself has some meaning, then we should not fill it blindly since it may introduce some bias. so before filling nan value, we should think about whether the nan value has some meaning in the specific scenario. Summing over time requires handling missing quarters; gaps should not be filled to avoid overstating cumulative earnings.\n- **Directionality**: Higher values indicate stronger cumulative earnings performance (positive)\n- **Boundary Conditions**: Negative values indicate cumulative losses; sharp changes indicate earnings inflections",
|
|
4
|
+
"expression_list": [
|
|
5
|
+
"ts_sum(fnd28_cfq_value_04001q, 252)",
|
|
6
|
+
"ts_sum(fnd28_nddq1_value_04001q, 252)"
|
|
7
|
+
]
|
|
8
|
+
}
|