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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (68) hide show
  1. cnhkmcp/__init__.py +1 -1
  2. cnhkmcp/untracked/APP/Tranformer/parsetab.py +60 -0
  3. cnhkmcp/untracked/APP/Tranformer/validator.py +78 -4
  4. cnhkmcp/untracked/APP/static/inspiration.js +41 -3
  5. cnhkmcp/untracked/APP/templates/index.html +26 -0
  6. cnhkmcp/untracked/APP/trailSomeAlphas/enhance_template.py +132 -6
  7. cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-data-feature-engineering/SKILL.md +17 -0
  8. cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-data-feature-engineering/output_report/GLB_delay1_fundamental72_ideas.md +292 -239
  9. cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/final_expressions.json +74 -136
  10. cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/fundamental72_GLB_1_idea_1769852468022627100.json +22 -0
  11. cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/fundamental72_GLB_1_idea_1769852468554457600.json +14 -0
  12. cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/fundamental72_GLB_1_idea_1769852469133324600.json +8 -0
  13. cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/fundamental72_GLB_1_idea_1769852469704433900.json +10 -0
  14. cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/fundamental72_GLB_1_idea_1769852470248911900.json +10 -0
  15. cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/fundamental72_GLB_1_idea_1769852470805192900.json +8 -0
  16. cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/fundamental72_GLB_1_idea_1769852471380158000.json +10 -0
  17. cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/fundamental72_GLB_1_idea_1769852471944247400.json +22 -0
  18. cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/fundamental72_GLB_1_idea_1769852472483548800.json +14 -0
  19. cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/fundamental72_GLB_1_idea_1769852473053891800.json +22 -0
  20. cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/fundamental72_GLB_1_idea_1769852473617716000.json +22 -0
  21. cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/fundamental72_GLB_1_idea_1769852474172815700.json +14 -0
  22. cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/fundamental72_GLB_1_idea_1769852474735778500.json +10 -0
  23. cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/fundamental72_GLB_1_idea_1769852475315478500.json +14 -0
  24. cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/fundamental72_GLB_1_idea_1769852475912897000.json +8 -0
  25. cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/fundamental72_GLB_1_idea_1769852476474911100.json +10 -0
  26. cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/fundamental72_GLB_1_idea_1769852978914367200.json +10 -0
  27. cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/fundamental72_GLB_1_idea_1769852979426164800.json +10 -0
  28. cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/fundamental72_GLB_1_idea_1769852979945511100.json +10 -0
  29. cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/fundamental72_GLB_1_idea_1769852980480251500.json +10 -0
  30. cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/fundamental72_GLB_1_idea_1769852981007315500.json +10 -0
  31. cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/fundamental72_GLB_1_idea_1769854621979784200.json +10 -0
  32. cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/fundamental72_GLB_1_idea_1769854622483457900.json +10 -0
  33. cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/fundamental72_GLB_1_idea_1769854623010559800.json +10 -0
  34. cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/fundamental72_GLB_1_idea_1769854623572902300.json +5 -0
  35. cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/fundamental72_GLB_1_idea_1769854624091016000.json +10 -0
  36. cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/fundamental72_GLB_delay1.csv.bak_1769852868 +330 -0
  37. cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/fundamental72_GLB_delay1.csv.bak_1769854511 +330 -0
  38. cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/scripts/ace.log +12 -0
  39. cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/scripts/validator.py +80 -4
  40. cnhkmcp/untracked/APP/trailSomeAlphas/skills/template_final_enhance/op/321/206/320/220/342/225/227/321/207/342/225/227/320/243.md +24 -18
  41. cnhkmcp/untracked/APP//321/210/342/224/220/320/240/321/210/320/261/320/234/321/206/320/231/320/243/321/205/342/225/235/320/220/321/206/320/230/320/241.py +14 -0
  42. cnhkmcp/untracked/skills/alpha-expression-verifier/scripts/parsetab.py +60 -0
  43. cnhkmcp/untracked/skills/alpha-expression-verifier/scripts/validator.py +78 -4
  44. {cnhkmcp-2.3.1.dist-info → cnhkmcp-2.3.2.dist-info}/METADATA +1 -1
  45. {cnhkmcp-2.3.1.dist-info → cnhkmcp-2.3.2.dist-info}/RECORD +49 -38
  46. cnhkmcp/untracked/APP/simulator/wqb20260130130030.log +0 -210
  47. cnhkmcp/untracked/APP/simulator/wqb20260130131757.log +0 -104
  48. cnhkmcp/untracked/APP/simulator/wqb20260130172245.log +0 -70
  49. cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/fundamental72_GLB_1_idea_1769759441444909600.json +0 -38
  50. cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/fundamental72_GLB_1_idea_1769759441920092000.json +0 -14
  51. cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/fundamental72_GLB_1_idea_1769759442418767100.json +0 -14
  52. cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/fundamental72_GLB_1_idea_1769759442902507600.json +0 -14
  53. cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/fundamental72_GLB_1_idea_1769759443377036200.json +0 -10
  54. cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/fundamental72_GLB_1_idea_1769759443845377000.json +0 -14
  55. cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/fundamental72_GLB_1_idea_1769759444313546700.json +0 -10
  56. cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/fundamental72_GLB_1_idea_1769759444784598600.json +0 -14
  57. cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/fundamental72_GLB_1_idea_1769759445274311200.json +0 -14
  58. cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/fundamental72_GLB_1_idea_1769759445747421700.json +0 -10
  59. cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/fundamental72_GLB_1_idea_1769759446222137800.json +0 -22
  60. cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/fundamental72_GLB_1_idea_1769759446686222600.json +0 -14
  61. cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/fundamental72_GLB_1_idea_1769759447154698500.json +0 -10
  62. cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/fundamental72_GLB_1_idea_1769759447629677000.json +0 -10
  63. cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/fundamental72_GLB_1_idea_1769759448102331200.json +0 -10
  64. cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/fundamental72_GLB_1_idea_1769759448573382000.json +0 -14
  65. {cnhkmcp-2.3.1.dist-info → cnhkmcp-2.3.2.dist-info}/WHEEL +0 -0
  66. {cnhkmcp-2.3.1.dist-info → cnhkmcp-2.3.2.dist-info}/entry_points.txt +0 -0
  67. {cnhkmcp-2.3.1.dist-info → cnhkmcp-2.3.2.dist-info}/licenses/LICENSE +0 -0
  68. {cnhkmcp-2.3.1.dist-info → cnhkmcp-2.3.2.dist-info}/top_level.txt +0 -0
@@ -1,3 +1,15 @@
1
1
  2026-01-30 01:46:34,276 - ace - ERROR -
2
2
  Incorrect email or password
3
3
 
4
+ 2026-01-31 17:23:24,903 - ace - ERROR -
5
+ Incorrect email or password
6
+
7
+ 2026-01-31 17:23:25,385 - ace - ERROR -
8
+ Incorrect email or password
9
+
10
+ 2026-01-31 17:23:25,859 - ace - ERROR -
11
+ Incorrect email or password
12
+
13
+ 2026-01-31 17:23:26,330 - ace - ERROR -
14
+ Incorrect email or password
15
+
@@ -170,7 +170,10 @@ supported_functions = {
170
170
  'scale_down': {'min_args': 2, 'max_args': 2, 'arg_types': ['expression', 'number'], 'param_names': ['x', 'constant']},
171
171
 
172
172
  # Arithmetic 类别函数
173
- 'add': {'min_args': 2, 'max_args': 3, 'arg_types': ['expression', 'expression', 'boolean']}, # add(x, y, filter=false)
173
+ # add(x, y, ..., filter=false)
174
+ # NOTE: add() is variadic (>=2 terms) with an optional boolean filter flag.
175
+ # We validate it with custom logic in validate_function().
176
+ 'add': {'min_args': 2, 'max_args': 101, 'arg_types': ['expression'] * 101},
174
177
  'multiply': {'min_args': 2, 'max_args': 100, 'arg_types': ['expression'] * 99 + ['boolean'], 'param_names': ['x', 'y', 'filter']}, # multiply(x, y, ..., filter=false)
175
178
  'sign': {'min_args': 1, 'max_args': 1, 'arg_types': ['expression']},
176
179
  'subtract': {'min_args': 2, 'max_args': 3, 'arg_types': ['expression', 'expression', 'boolean']}, # subtract(x, y, filter=false)
@@ -501,6 +504,10 @@ class ExpressionValidator:
501
504
  if not function_info:
502
505
  return [f"未知函数: {function_name}"]
503
506
 
507
+ # Custom validation for variadic functions with optional flags
508
+ if function_name == 'add':
509
+ return self._validate_add(args, is_in_group_arg)
510
+
504
511
  errors = []
505
512
 
506
513
  # 检查参数数量
@@ -591,9 +598,9 @@ class ExpressionValidator:
591
598
  if arg.node_type != 'number':
592
599
  errors.append(f"参数 {arg_index+1} 应该是一个数字,但得到 {arg.node_type}")
593
600
  elif expected_type == 'boolean':
594
- # 布尔值可以是数字(0/1)
595
- if arg.node_type != 'number':
596
- errors.append(f"参数 {arg_index+1} 应该是一个布尔值(0/1),但得到 {arg.node_type}")
601
+ # 布尔值可以是 true/false 或数字(0/1)
602
+ if arg.node_type not in {'boolean', 'number'}:
603
+ errors.append(f"参数 {arg_index+1} 应该是一个布尔值(true/false 或 0/1),但得到 {arg.node_type}")
597
604
  elif expected_type == 'field':
598
605
  if arg.node_type != 'field' and arg.node_type != 'category':
599
606
  # 允许field或category作为字段参数
@@ -610,6 +617,75 @@ class ExpressionValidator:
610
617
  # group函数的category参数可以是任何类型(field、category等),不进行类型校验
611
618
 
612
619
  return errors
620
+
621
+ def _validate_add(self, args: List[Any], is_in_group_arg: bool = False) -> List[str]:
622
+ """Validate add(x, y, ..., filter=false).
623
+
624
+ Rules:
625
+ - At least 2 positional expression terms.
626
+ - Optional filter flag can be provided as:
627
+ - named argument: filter=<boolean>
628
+ - last positional argument: <boolean>
629
+ """
630
+ errors: List[str] = []
631
+
632
+ if len(args) < 2:
633
+ return [f"函数 add 需要至少 2 个参数,但只提供了 {len(args)}"]
634
+
635
+ named_filter_nodes: List[ASTNode] = []
636
+ positional_nodes: List[ASTNode] = []
637
+
638
+ for arg in args:
639
+ if isinstance(arg, dict) and arg.get('type') == 'named':
640
+ name = arg.get('name')
641
+ value = arg.get('value')
642
+ if name != 'filter':
643
+ errors.append(f"函数 add 不存在参数 '{name}'")
644
+ continue
645
+ if not hasattr(value, 'node_type'):
646
+ errors.append("函数 add 的参数 filter 格式错误")
647
+ continue
648
+ named_filter_nodes.append(value)
649
+ elif isinstance(arg, dict) and arg.get('type') == 'positional':
650
+ value = arg.get('value')
651
+ if hasattr(value, 'node_type'):
652
+ positional_nodes.append(value)
653
+ else:
654
+ errors.append("函数 add 的位置参数格式错误")
655
+ elif hasattr(arg, 'node_type'):
656
+ positional_nodes.append(arg)
657
+ else:
658
+ errors.append("函数 add 的参数格式错误")
659
+
660
+ if len(named_filter_nodes) > 1:
661
+ errors.append("函数 add 的参数 'filter' 只能出现一次")
662
+
663
+ positional_filter_node: Optional[ASTNode] = None
664
+ # Only infer a positional filter flag when:
665
+ # - no named filter is provided
666
+ # - there are at least 3 positional args (x, y, filter)
667
+ # - the last arg is boolean or numeric 0/1
668
+ if not named_filter_nodes and len(positional_nodes) >= 3:
669
+ last = positional_nodes[-1]
670
+ if last.node_type == 'boolean' or (last.node_type == 'number' and last.value in {0, 1}):
671
+ positional_filter_node = positional_nodes.pop()
672
+
673
+ if len(positional_nodes) < 2:
674
+ errors.append(f"函数 add 需要至少 2 个输入项(不含filter),但只提供了 {len(positional_nodes)}")
675
+
676
+ # Validate all term inputs as expressions (no-op, but keep recursion behavior consistent)
677
+ for idx, node in enumerate(positional_nodes):
678
+ errors.extend(self._validate_arg_type(node, 'expression', idx, 'add', is_in_group_arg))
679
+
680
+ # Validate filter, if present (named takes precedence; if both present, that's an error)
681
+ if positional_filter_node is not None and named_filter_nodes:
682
+ errors.append("函数 add 的 filter 不能同时用位置参数和命名参数传递")
683
+ if positional_filter_node is not None:
684
+ errors.extend(self._validate_arg_type(positional_filter_node, 'boolean', len(positional_nodes), 'add', is_in_group_arg))
685
+ if named_filter_nodes:
686
+ errors.extend(self._validate_arg_type(named_filter_nodes[0], 'boolean', len(positional_nodes), 'add', is_in_group_arg))
687
+
688
+ return errors
613
689
 
614
690
  def validate_ast(self, ast: Optional[ASTNode], is_in_group_arg: bool = False) -> List[str]:
615
691
  """递归验证抽象语法树"""
@@ -194,27 +194,36 @@ days_from_last_change(A) / last_diff_value(A,d)
194
194
  场景:
195
195
  因子是“事件驱动型”的(评级变动、ESG 评级更新等),只在变动后若干天内才有信号;
196
196
  可以构造“距上次变化时间”的信号。
197
- 七、Reduce / Combo 等(reduce_ / combo_a / self_corr 等)*
197
+ 七、Vector Operator*
198
+ 这些用于处理“向量类型数据”,需要先生成统计特征才能用。
198
199
 
199
- 这些更多在多因子/多 Alpha 组合层面用,但单因子也有场景:
200
+ 补充:常用 Vector Operators(Combo, Regular)
200
201
 
201
- reduce_*(avg / max / min / stddev / percentage等)
202
+ > 一句话描述:Vector 字段(例如一只股票一天里的一串向量值)不能直接参与普通的算术/时序/截面运算,通常需要先用 `vec_*` 把它“降维”为标量特征(均值/分位/波动/偏度等),再进入后续流程。
202
203
 
203
- 场景:
204
- 你想从一个“多维度向量”提炼单值,例如同一公司的多条 ESG 子项合成一个指标;
205
- 或在历史上把 A 的波动性/偏度/峰度作为新的单因子。
206
- combo_a(alphas, ...)
204
+ - `vec_avg(x)`(base):对向量求均值。例:输入 (2,3,5,6,3,8,10) 输出 37/7=5.29
205
+ - `vec_sum(x)`(base):对向量求和。例:输入 (2,3,5,6,3,8,10) 输出 37
206
+ - `vec_count(x)`(genius):向量元素个数
207
+ - `vec_choose(x, nth=k)`(genius):取向量中第 k 个元素(从 0 开始计数)
208
+ - `vec_max(x)`(genius):向量最大值
209
+ - `vec_min(x)`(genius):向量最小值
210
+ - `vec_range(x)`(genius):向量极差(max-min)
211
+ - `vec_stddev(x)`(genius):向量标准差
212
+ - `vec_ir(x)`(genius):向量信息比率(均值/标准差)
213
+ - `vec_skewness(x)`(genius):向量偏度
214
+ - `vec_kurtosis(x)`(genius):向量峰度
215
+ - `vec_norm(x)`(genius):向量范数(所有元素绝对值之和)
216
+ - `vec_percentage(x, percentage=0.5)`(genius):向量分位数(如 0.5 为中位数)
217
+ - `vec_powersum(x, constant=2)`(genius):向量幂和(对每个元素做幂后求和)
218
+ - `vec_filter(vec, value=nan)`(genius):按值过滤向量(可一次过滤多个值,例如 `"nan 0 10"`)。注意:输出仍然是 VECTOR 类型(还未降维)。
219
+
220
+ 注意:
221
+ - Vector type 数据不能直接用;你必须先用一个 `vec_*` 把它变成标量特征后再做后续组合。
222
+ - `vec_*` 只能作用在 VECTOR 类型数据上;普通 MATRIX 字段不能直接喂给 `vec_*`。
207
223
 
208
- 场景:
209
- 多个不同构造方式的同主题因子(比如多个 ESG 变体)组合,提升稳健性;
210
- 单一指标不够可靠,想自动根据历史 IR 给权重。
211
- self_corr(A)
212
224
 
213
- 场景:
214
- 研究同因子在截面上的相关结构,比如 ESG 因子和某个 sector pattern 是否极度重叠;
215
- 更偏研究/调试,不是直接构造单因子。
216
- 小结(对应你说的那些“现实情景”):
217
225
 
226
+ 小结:
218
227
  只头部/尾部有信号:
219
228
  想起:rank + bucket + 逻辑算子(greater/less/if_else/trade_when)、right_tail / left_tail。
220
229
  中间区间是噪音:
@@ -396,11 +405,8 @@ ts_delta(B,d) / days_from_last_change(B)
396
405
  例如 volume 爆量那几天放大 A,平时保持中立:
397
406
  b_spike = greater(ts_delta(B,1), thresh)
398
407
  core = trade_when(b_spike, 1.5*A, A)。
399
- 七、Reduce / Combo 等
400
408
 
401
- 多数用于多维/多因子的情况,不再一一展开;简单原则:
402
409
 
403
- 若 B 其实是一组值(如多个 volume 相关字段),先用 reduce_avg/reduce_max 合成一个 B_agg,再按前面逻辑当作单一 B 处理。
404
410
  最后给一个总的“使用从属 B 的模板公式”
405
411
 
406
412
  可以抽象成:
@@ -2683,6 +2683,13 @@ def inspiration_enhance_template():
2683
2683
  api_key = request.form.get('apiKey')
2684
2684
  base_url = request.form.get('baseUrl')
2685
2685
  model = request.form.get('model')
2686
+ data_type = request.form.get('dataType') or 'MATRIX'
2687
+
2688
+ session_id = request.headers.get('Session-ID') or flask_session.get('brain_session_id')
2689
+ session_info = brain_sessions.get(session_id) if session_id else None
2690
+
2691
+ if data_type not in ("MATRIX", "VECTOR"):
2692
+ data_type = "MATRIX"
2686
2693
 
2687
2694
  if not idea_files or not api_key:
2688
2695
  return jsonify({'success': False, 'error': 'Missing ideaFiles or apiKey'}), 400
@@ -2722,12 +2729,19 @@ def inspiration_enhance_template():
2722
2729
  env = os.environ.copy()
2723
2730
  env['IDEA_JSON'] = idea_path
2724
2731
  env['MOONSHOT_API_KEY'] = api_key
2732
+ env['DATA_TYPE'] = str(data_type)
2725
2733
  if base_url:
2726
2734
  env['MOONSHOT_BASE_URL'] = base_url
2727
2735
  if model:
2728
2736
  env['MOONSHOT_MODEL'] = model
2729
2737
  env['PYTHONIOENCODING'] = 'utf-8'
2730
2738
 
2739
+ # Inherit BRAIN auth from the logged-in web session (same as run-pipeline).
2740
+ # Do NOT accept raw credentials from the enhance form.
2741
+ if session_info and session_info.get('username') and session_info.get('password'):
2742
+ env['BRAIN_USERNAME'] = session_info['username']
2743
+ env['BRAIN_PASSWORD'] = session_info['password']
2744
+
2731
2745
  log_queue.put(f"=== 开始处理: {name} ({idx}/{total}) ===")
2732
2746
  proc = subprocess.Popen(
2733
2747
  [sys.executable, enhance_script],
@@ -0,0 +1,60 @@
1
+
2
+ # parsetab.py
3
+ # This file is automatically generated. Do not edit.
4
+ # pylint: disable=W,C,R
5
+ _tabversion = '3.10'
6
+
7
+ _lr_method = 'LALR'
8
+
9
+ _lr_signature = 'ASSIGN BOOLEAN CATEGORY COMMA DIVIDE EQUAL FIELD FUNCTION GREATER GREATEREQUAL IDENTIFIER LESS LESSEQUAL LPAREN MINUS NOTEQUAL NUMBER PLUS RPAREN STRING TIMESexpression : comparison\n| expression EQUAL comparison\n| expression NOTEQUAL comparison\n| expression GREATER comparison\n| expression LESS comparison\n| expression GREATEREQUAL comparison\n| expression LESSEQUAL comparisoncomparison : term\n| comparison PLUS term\n| comparison MINUS termterm : factor\n| term TIMES factor\n| term DIVIDE factorfactor : NUMBER\n| STRING\n| FIELD\n| CATEGORY\n| IDENTIFIER\n| BOOLEAN\n| MINUS factor\n| LPAREN expression RPAREN\n| function_callfunction_call : FUNCTION LPAREN args RPARENargs : arg_list\n| emptyarg_list : arg\n| arg_list COMMA argarg : expression\n| IDENTIFIER ASSIGN expressionempty :'
10
+
11
+ _lr_action_items = {'NUMBER':([0,4,12,15,16,17,18,19,20,21,22,23,24,27,46,47,],[6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,]),'STRING':([0,4,12,15,16,17,18,19,20,21,22,23,24,27,46,47,],[7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,]),'FIELD':([0,4,12,15,16,17,18,19,20,21,22,23,24,27,46,47,],[8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,]),'CATEGORY':([0,4,12,15,16,17,18,19,20,21,22,23,24,27,46,47,],[9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,]),'IDENTIFIER':([0,4,12,15,16,17,18,19,20,21,22,23,24,27,46,47,],[10,10,10,10,10,10,10,10,10,10,10,10,10,44,44,10,]),'BOOLEAN':([0,4,12,15,16,17,18,19,20,21,22,23,24,27,46,47,],[11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,]),'MINUS':([0,2,3,4,5,6,7,8,9,10,11,12,13,15,16,17,18,19,20,21,22,23,24,25,27,28,29,30,31,32,33,34,35,36,37,38,44,45,46,47,],[4,22,-8,4,-11,-14,-15,-16,-17,-18,-19,4,-22,4,4,4,4,4,4,4,4,4,4,-20,4,22,22,22,22,22,22,-9,-10,-12,-13,-21,-18,-23,4,4,]),'LPAREN':([0,4,12,14,15,16,17,18,19,20,21,22,23,24,27,46,47,],[12,12,12,27,12,12,12,12,12,12,12,12,12,12,12,12,12,]),'FUNCTION':([0,4,12,15,16,17,18,19,20,21,22,23,24,27,46,47,],[14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,]),'$end':([1,2,3,5,6,7,8,9,10,11,13,25,28,29,30,31,32,33,34,35,36,37,38,45,],[0,-1,-8,-11,-14,-15,-16,-17,-18,-19,-22,-20,-2,-3,-4,-5,-6,-7,-9,-10,-12,-13,-21,-23,]),'EQUAL':([1,2,3,5,6,7,8,9,10,11,13,25,26,28,29,30,31,32,33,34,35,36,37,38,43,44,45,49,],[15,-1,-8,-11,-14,-15,-16,-17,-18,-19,-22,-20,15,-2,-3,-4,-5,-6,-7,-9,-10,-12,-13,-21,15,-18,-23,15,]),'NOTEQUAL':([1,2,3,5,6,7,8,9,10,11,13,25,26,28,29,30,31,32,33,34,35,36,37,38,43,44,45,49,],[16,-1,-8,-11,-14,-15,-16,-17,-18,-19,-22,-20,16,-2,-3,-4,-5,-6,-7,-9,-10,-12,-13,-21,16,-18,-23,16,]),'GREATER':([1,2,3,5,6,7,8,9,10,11,13,25,26,28,29,30,31,32,33,34,35,36,37,38,43,44,45,49,],[17,-1,-8,-11,-14,-15,-16,-17,-18,-19,-22,-20,17,-2,-3,-4,-5,-6,-7,-9,-10,-12,-13,-21,17,-18,-23,17,]),'LESS':([1,2,3,5,6,7,8,9,10,11,13,25,26,28,29,30,31,32,33,34,35,36,37,38,43,44,45,49,],[18,-1,-8,-11,-14,-15,-16,-17,-18,-19,-22,-20,18,-2,-3,-4,-5,-6,-7,-9,-10,-12,-13,-21,18,-18,-23,18,]),'GREATEREQUAL':([1,2,3,5,6,7,8,9,10,11,13,25,26,28,29,30,31,32,33,34,35,36,37,38,43,44,45,49,],[19,-1,-8,-11,-14,-15,-16,-17,-18,-19,-22,-20,19,-2,-3,-4,-5,-6,-7,-9,-10,-12,-13,-21,19,-18,-23,19,]),'LESSEQUAL':([1,2,3,5,6,7,8,9,10,11,13,25,26,28,29,30,31,32,33,34,35,36,37,38,43,44,45,49,],[20,-1,-8,-11,-14,-15,-16,-17,-18,-19,-22,-20,20,-2,-3,-4,-5,-6,-7,-9,-10,-12,-13,-21,20,-18,-23,20,]),'RPAREN':([2,3,5,6,7,8,9,10,11,13,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,48,49,],[-1,-8,-11,-14,-15,-16,-17,-18,-19,-22,-20,38,-30,-2,-3,-4,-5,-6,-7,-9,-10,-12,-13,-21,45,-24,-25,-26,-28,-18,-23,-27,-29,]),'COMMA':([2,3,5,6,7,8,9,10,11,13,25,28,29,30,31,32,33,34,35,36,37,38,40,42,43,44,45,48,49,],[-1,-8,-11,-14,-15,-16,-17,-18,-19,-22,-20,-2,-3,-4,-5,-6,-7,-9,-10,-12,-13,-21,46,-26,-28,-18,-23,-27,-29,]),'PLUS':([2,3,5,6,7,8,9,10,11,13,25,28,29,30,31,32,33,34,35,36,37,38,44,45,],[21,-8,-11,-14,-15,-16,-17,-18,-19,-22,-20,21,21,21,21,21,21,-9,-10,-12,-13,-21,-18,-23,]),'TIMES':([3,5,6,7,8,9,10,11,13,25,34,35,36,37,38,44,45,],[23,-11,-14,-15,-16,-17,-18,-19,-22,-20,23,23,-12,-13,-21,-18,-23,]),'DIVIDE':([3,5,6,7,8,9,10,11,13,25,34,35,36,37,38,44,45,],[24,-11,-14,-15,-16,-17,-18,-19,-22,-20,24,24,-12,-13,-21,-18,-23,]),'ASSIGN':([44,],[47,]),}
12
+
13
+ _lr_action = {}
14
+ for _k, _v in _lr_action_items.items():
15
+ for _x,_y in zip(_v[0],_v[1]):
16
+ if not _x in _lr_action: _lr_action[_x] = {}
17
+ _lr_action[_x][_k] = _y
18
+ del _lr_action_items
19
+
20
+ _lr_goto_items = {'expression':([0,12,27,46,47,],[1,26,43,43,49,]),'comparison':([0,12,15,16,17,18,19,20,27,46,47,],[2,2,28,29,30,31,32,33,2,2,2,]),'term':([0,12,15,16,17,18,19,20,21,22,27,46,47,],[3,3,3,3,3,3,3,3,34,35,3,3,3,]),'factor':([0,4,12,15,16,17,18,19,20,21,22,23,24,27,46,47,],[5,25,5,5,5,5,5,5,5,5,5,36,37,5,5,5,]),'function_call':([0,4,12,15,16,17,18,19,20,21,22,23,24,27,46,47,],[13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,]),'args':([27,],[39,]),'arg_list':([27,],[40,]),'empty':([27,],[41,]),'arg':([27,46,],[42,48,]),}
21
+
22
+ _lr_goto = {}
23
+ for _k, _v in _lr_goto_items.items():
24
+ for _x, _y in zip(_v[0], _v[1]):
25
+ if not _x in _lr_goto: _lr_goto[_x] = {}
26
+ _lr_goto[_x][_k] = _y
27
+ del _lr_goto_items
28
+ _lr_productions = [
29
+ ("S' -> expression","S'",1,None,None,None),
30
+ ('expression -> comparison','expression',1,'p_expression','validator.py',386),
31
+ ('expression -> expression EQUAL comparison','expression',3,'p_expression','validator.py',387),
32
+ ('expression -> expression NOTEQUAL comparison','expression',3,'p_expression','validator.py',388),
33
+ ('expression -> expression GREATER comparison','expression',3,'p_expression','validator.py',389),
34
+ ('expression -> expression LESS comparison','expression',3,'p_expression','validator.py',390),
35
+ ('expression -> expression GREATEREQUAL comparison','expression',3,'p_expression','validator.py',391),
36
+ ('expression -> expression LESSEQUAL comparison','expression',3,'p_expression','validator.py',392),
37
+ ('comparison -> term','comparison',1,'p_comparison','validator.py',399),
38
+ ('comparison -> comparison PLUS term','comparison',3,'p_comparison','validator.py',400),
39
+ ('comparison -> comparison MINUS term','comparison',3,'p_comparison','validator.py',401),
40
+ ('term -> factor','term',1,'p_term','validator.py',408),
41
+ ('term -> term TIMES factor','term',3,'p_term','validator.py',409),
42
+ ('term -> term DIVIDE factor','term',3,'p_term','validator.py',410),
43
+ ('factor -> NUMBER','factor',1,'p_factor','validator.py',417),
44
+ ('factor -> STRING','factor',1,'p_factor','validator.py',418),
45
+ ('factor -> FIELD','factor',1,'p_factor','validator.py',419),
46
+ ('factor -> CATEGORY','factor',1,'p_factor','validator.py',420),
47
+ ('factor -> IDENTIFIER','factor',1,'p_factor','validator.py',421),
48
+ ('factor -> BOOLEAN','factor',1,'p_factor','validator.py',422),
49
+ ('factor -> MINUS factor','factor',2,'p_factor','validator.py',423),
50
+ ('factor -> LPAREN expression RPAREN','factor',3,'p_factor','validator.py',424),
51
+ ('factor -> function_call','factor',1,'p_factor','validator.py',425),
52
+ ('function_call -> FUNCTION LPAREN args RPAREN','function_call',4,'p_function_call','validator.py',453),
53
+ ('args -> arg_list','args',1,'p_args','validator.py',457),
54
+ ('args -> empty','args',1,'p_args','validator.py',458),
55
+ ('arg_list -> arg','arg_list',1,'p_arg_list','validator.py',465),
56
+ ('arg_list -> arg_list COMMA arg','arg_list',3,'p_arg_list','validator.py',466),
57
+ ('arg -> expression','arg',1,'p_arg','validator.py',473),
58
+ ('arg -> IDENTIFIER ASSIGN expression','arg',3,'p_arg','validator.py',474),
59
+ ('empty -> <empty>','empty',0,'p_empty','validator.py',481),
60
+ ]
@@ -170,7 +170,10 @@ supported_functions = {
170
170
  'scale_down': {'min_args': 2, 'max_args': 2, 'arg_types': ['expression', 'number'], 'param_names': ['x', 'constant']},
171
171
 
172
172
  # Arithmetic 类别函数
173
- 'add': {'min_args': 2, 'max_args': 3, 'arg_types': ['expression', 'expression', 'boolean']}, # add(x, y, filter=false)
173
+ # add(x, y, ..., filter=false)
174
+ # NOTE: add() is variadic (>=2 terms) with an optional boolean filter flag.
175
+ # We validate it with custom logic in validate_function().
176
+ 'add': {'min_args': 2, 'max_args': 101, 'arg_types': ['expression'] * 101},
174
177
  'multiply': {'min_args': 2, 'max_args': 100, 'arg_types': ['expression'] * 99 + ['boolean'], 'param_names': ['x', 'y', 'filter']}, # multiply(x, y, ..., filter=false)
175
178
  'sign': {'min_args': 1, 'max_args': 1, 'arg_types': ['expression']},
176
179
  'subtract': {'min_args': 2, 'max_args': 3, 'arg_types': ['expression', 'expression', 'boolean']}, # subtract(x, y, filter=false)
@@ -501,6 +504,10 @@ class ExpressionValidator:
501
504
  if not function_info:
502
505
  return [f"未知函数: {function_name}"]
503
506
 
507
+ # Custom validation for variadic functions with optional flags
508
+ if function_name == 'add':
509
+ return self._validate_add(args, is_in_group_arg)
510
+
504
511
  errors = []
505
512
 
506
513
  # 检查参数数量
@@ -591,9 +598,9 @@ class ExpressionValidator:
591
598
  if arg.node_type != 'number':
592
599
  errors.append(f"参数 {arg_index+1} 应该是一个数字,但得到 {arg.node_type}")
593
600
  elif expected_type == 'boolean':
594
- # 布尔值可以是数字(0/1)
595
- if arg.node_type != 'number':
596
- errors.append(f"参数 {arg_index+1} 应该是一个布尔值(0/1),但得到 {arg.node_type}")
601
+ # 布尔值可以是 true/false 或数字(0/1)
602
+ if arg.node_type not in {'boolean', 'number'}:
603
+ errors.append(f"参数 {arg_index+1} 应该是一个布尔值(true/false 或 0/1),但得到 {arg.node_type}")
597
604
  elif expected_type == 'field':
598
605
  if arg.node_type != 'field' and arg.node_type != 'category':
599
606
  # 允许field或category作为字段参数
@@ -610,6 +617,73 @@ class ExpressionValidator:
610
617
  # group函数的category参数可以是任何类型(field、category等),不进行类型校验
611
618
 
612
619
  return errors
620
+
621
+ def _validate_add(self, args: List[Any], is_in_group_arg: bool = False) -> List[str]:
622
+ """Validate add(x, y, ..., filter=false).
623
+
624
+ Rules:
625
+ - At least 2 positional expression terms.
626
+ - Optional filter flag can be provided as:
627
+ - named argument: filter=<boolean>
628
+ - last positional argument: <boolean> or 0/1
629
+ """
630
+ errors: List[str] = []
631
+
632
+ if len(args) < 2:
633
+ return [f"函数 add 需要至少 2 个参数,但只提供了 {len(args)}"]
634
+
635
+ named_filter_nodes: List[ASTNode] = []
636
+ positional_nodes: List[ASTNode] = []
637
+
638
+ for arg in args:
639
+ if isinstance(arg, dict) and arg.get('type') == 'named':
640
+ name = arg.get('name')
641
+ value = arg.get('value')
642
+ if name != 'filter':
643
+ errors.append(f"函数 add 不存在参数 '{name}'")
644
+ continue
645
+ if not hasattr(value, 'node_type'):
646
+ errors.append("函数 add 的参数 filter 格式错误")
647
+ continue
648
+ named_filter_nodes.append(value)
649
+ elif isinstance(arg, dict) and arg.get('type') == 'positional':
650
+ value = arg.get('value')
651
+ if hasattr(value, 'node_type'):
652
+ positional_nodes.append(value)
653
+ else:
654
+ errors.append("函数 add 的位置参数格式错误")
655
+ elif hasattr(arg, 'node_type'):
656
+ positional_nodes.append(arg)
657
+ else:
658
+ errors.append("函数 add 的参数格式错误")
659
+
660
+ if len(named_filter_nodes) > 1:
661
+ errors.append("函数 add 的参数 'filter' 只能出现一次")
662
+
663
+ positional_filter_node: Optional[ASTNode] = None
664
+ # Only infer a positional filter flag when:
665
+ # - no named filter is provided
666
+ # - there are at least 3 positional args (x, y, filter)
667
+ # - the last arg is boolean or numeric 0/1
668
+ if not named_filter_nodes and len(positional_nodes) >= 3:
669
+ last = positional_nodes[-1]
670
+ if last.node_type == 'boolean' or (last.node_type == 'number' and last.value in {0, 1}):
671
+ positional_filter_node = positional_nodes.pop()
672
+
673
+ if len(positional_nodes) < 2:
674
+ errors.append(f"函数 add 需要至少 2 个输入项(不含filter),但只提供了 {len(positional_nodes)}")
675
+
676
+ for idx, node in enumerate(positional_nodes):
677
+ errors.extend(self._validate_arg_type(node, 'expression', idx, 'add', is_in_group_arg))
678
+
679
+ if positional_filter_node is not None and named_filter_nodes:
680
+ errors.append("函数 add 的 filter 不能同时用位置参数和命名参数传递")
681
+ if positional_filter_node is not None:
682
+ errors.extend(self._validate_arg_type(positional_filter_node, 'boolean', len(positional_nodes), 'add', is_in_group_arg))
683
+ if named_filter_nodes:
684
+ errors.extend(self._validate_arg_type(named_filter_nodes[0], 'boolean', len(positional_nodes), 'add', is_in_group_arg))
685
+
686
+ return errors
613
687
 
614
688
  def validate_ast(self, ast: Optional[ASTNode], is_in_group_arg: bool = False) -> List[str]:
615
689
  """递归验证抽象语法树"""
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: cnhkmcp
3
- Version: 2.3.1
3
+ Version: 2.3.2
4
4
  Summary: A comprehensive Model Context Protocol (MCP) server for quantitative trading platform integration
5
5
  Home-page: https://github.com/cnhk/cnhkmcp
6
6
  Author: CNHK
@@ -1,4 +1,4 @@
1
- cnhkmcp/__init__.py,sha256=h5IX0BbSsUTcjnFACflrOIRQXeZUxRtOvELH_8MViwQ,2759
1
+ cnhkmcp/__init__.py,sha256=G9clG05CkloiDhFF62zD-wR4p-dqavWRoU7lSOzv7lA,2759
2
2
  cnhkmcp/untracked/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
3
3
  cnhkmcp/untracked/arXiv_API_Tool_Manual.md,sha256=I3hvI5mpmIjBuWptufoVSWFnuhyUc67oCGHEuR0p_xs,13552
4
4
  cnhkmcp/untracked/arxiv_api.py,sha256=-E-Ub9K-DXAYaCjrbobyfQ9H97gaZBc7pL6xPEyVHec,9020
@@ -125,13 +125,14 @@ cnhkmcp/untracked/APP/setup_tsinghua.bat,sha256=9dLWCaQTULf3d2LqiAlvQrA4wuM1dysG
125
125
  cnhkmcp/untracked/APP/setup_tsinghua.sh,sha256=mMDXTqCRIXtSHa_1pU0jCnNF-xajqfZDlUA72XpcAOk,1195
126
126
  cnhkmcp/untracked/APP/ssrn-3332513.pdf,sha256=GEwf1Srtk-fTvF03dhTEjXJstHBARIUg31k7s5kxS98,2082078
127
127
  cnhkmcp/untracked/APP/usage.md,sha256=t7D-5b2P_JZIn6F7ZRFOSZCYl3Vr5fvHGNVy73Nf_N0,16140
128
- cnhkmcp/untracked/APP/运行打开我.py,sha256=4y_sIocDWE90f-BNCNHd-AnnVVVOwRsJ5zOTmnwLEZI,115837
128
+ cnhkmcp/untracked/APP/运行打开我.py,sha256=p_j06SsMIgodYbGPxR3jShEIAvrtCjdFsfVr2vq-Gp0,116632
129
129
  cnhkmcp/untracked/APP/Tranformer/Transformer.py,sha256=C65g1A5iVdEKcDUImL9MOYHws0CtHsFHykvX0FDfrTA,189021
130
130
  cnhkmcp/untracked/APP/Tranformer/ace_lib.py,sha256=nSnmM5zfI6lxIln1vctz7TCwjAWcljVXITy7R4gS3Q0,53947
131
131
  cnhkmcp/untracked/APP/Tranformer/helpful_functions.py,sha256=Jc8gclRkvGx7el0XgTmZ67qwMSHrSluYheCUvzd6mbg,6640
132
+ cnhkmcp/untracked/APP/Tranformer/parsetab.py,sha256=L_XJWx4AmYWASQ-krdrcyu7cEFbRdKS5MWppZ0Qfjlo,7650
132
133
  cnhkmcp/untracked/APP/Tranformer/template_summary.txt,sha256=gWz5LFlPtOmw0JnLj68hgWsoSFNyA18uCJWIYWHLbe8,111054
133
134
  cnhkmcp/untracked/APP/Tranformer/transformer_config.json,sha256=ene-WntIVbcoN3_H1ztlwtZK6eadSXCfqs1SSgrGAIg,179
134
- cnhkmcp/untracked/APP/Tranformer/validator.py,sha256=bvQt55-n2FHkeBA6Ui7tc0oLk_cnriDxt5z-IgaeKZA,50789
135
+ cnhkmcp/untracked/APP/Tranformer/validator.py,sha256=qsqDg58YK40F5VJDzG-GrZ1ETAfnQ5Cw9Yvbu1NkOAI,54348
135
136
  cnhkmcp/untracked/APP/Tranformer/output/Alpha_candidates.json,sha256=vMw3zhzcwARGm92ykdGTeYTsrCje_RHt0sWv17R0qUs,368947
136
137
  cnhkmcp/untracked/APP/Tranformer/output/Alpha_candidates_示例.json,sha256=K40tcWPiUKaPnrtMdfsN2BOBG5IzqSz04XT6gRz7FVE,23139
137
138
  cnhkmcp/untracked/APP/Tranformer/output/Alpha_generated_expressions_error.json,sha256=T1PNoYwrqgwDVLtfmj7L5e0Sq02OEbqHPC8RFhICuUU,2
@@ -155,14 +156,11 @@ cnhkmcp/untracked/APP/hkSimulator/autosimulator.py,sha256=KHiwi4tCoLeOKg-14ZW06g
155
156
  cnhkmcp/untracked/APP/hkSimulator/helpful_functions.py,sha256=Jc8gclRkvGx7el0XgTmZ67qwMSHrSluYheCUvzd6mbg,6640
156
157
  cnhkmcp/untracked/APP/simulator/alpha_submitter.py,sha256=Wxx7DyFr0VwH709JhxXPj1Jiz8dShaVaYar3HTVMgv4,15652
157
158
  cnhkmcp/untracked/APP/simulator/simulator_wqb.py,sha256=NsPSTs9jmVRguN5_y3qJRNr3hSFUs9JFQgh6y_mxyHw,23774
158
- cnhkmcp/untracked/APP/simulator/wqb20260130130030.log,sha256=w1ifUFcpGBHaU2w2CVt3yChPeEYe6B9Olet61CB_d5A,7597
159
- cnhkmcp/untracked/APP/simulator/wqb20260130131757.log,sha256=JLrmpE5IAuyer_zWhY2yaRszPTC5Zkcx-nDT4JRSAlw,5389
160
- cnhkmcp/untracked/APP/simulator/wqb20260130172245.log,sha256=BXKHwA83tbpaTzusjhU9ab1hE1y_ulQ6kv915D9LzBI,3111
161
159
  cnhkmcp/untracked/APP/static/brain.js,sha256=pIRQdvyx6_LFzgRLiYfRhInr2WHd5dEjfM57-9VzUjg,20533
162
160
  cnhkmcp/untracked/APP/static/decoder.js,sha256=sKyfgsleHvokCMw6Zp-XfcjixkT8cyMvw6ASDhN6b9I,61987
163
161
  cnhkmcp/untracked/APP/static/feature_engineering.js,sha256=X6nis3FmytrNAE8mM-U6-VqmqZMAQ2X59Iy9RmOF5_8,73895
164
162
  cnhkmcp/untracked/APP/static/idea_house.js,sha256=dg6zt1mFr99gONdIDqNN_P3ChPEMzCmnWTF0OW09x9w,34225
165
- cnhkmcp/untracked/APP/static/inspiration.js,sha256=aBf0nvEU2YAuqrdtHrnUNgjp-JvbFMTnJUoPpBsxRwo,29724
163
+ cnhkmcp/untracked/APP/static/inspiration.js,sha256=3Hkd9AT28GObia6OH4Rts1dl6URlnAQJ7ytHXdZKwsc,31391
166
164
  cnhkmcp/untracked/APP/static/inspiration_house.js,sha256=U3L5vyguy10z7Ww-EFz59OlZUDw3KtIK_JyQzXYtdZ4,31795
167
165
  cnhkmcp/untracked/APP/static/paper_analysis.js,sha256=EWD6fTfC6hMLL6IeqDmstP9w6Cezq5607ucUpEpuHkg,16939
168
166
  cnhkmcp/untracked/APP/static/script.js,sha256=pal4txqlDGtD0u0Dkw6gpce_1B5ocuzecwXHKYaZdOE,113996
@@ -172,23 +170,23 @@ cnhkmcp/untracked/APP/static/usage_widget.js,sha256=nbjNFiLSaX2SllDaLrXb6OlqZ2DC
172
170
  cnhkmcp/untracked/APP/templates/alpha_inspector.html,sha256=EY919KDTPw46FBQwQaxwfpx9_CYUet7fkpD03LBGlF8,22226
173
171
  cnhkmcp/untracked/APP/templates/feature_engineering.html,sha256=SA_N46-Q_Oo68clS0-QFvbNW5v40uZPQ8Cmmc44RCP8,38443
174
172
  cnhkmcp/untracked/APP/templates/idea_house.html,sha256=oQV-vdpAi-HPof1nUClYsJALrF0JX5jhgfM3LOecBdM,20553
175
- cnhkmcp/untracked/APP/templates/index.html,sha256=5NTavsE6ZSUJehEAV9eVb7cOww6cGaXd__oII92hgqs,61178
173
+ cnhkmcp/untracked/APP/templates/index.html,sha256=9FPFb4MLPw6p9PPpcNNkebWc24qxwdHB1fRhTmdpJTY,63126
176
174
  cnhkmcp/untracked/APP/templates/inspiration_house.html,sha256=oWTEjmR0FEniFvr5NaM7_AThkRNmurKGvoTyINIVDl0,26469
177
175
  cnhkmcp/untracked/APP/templates/paper_analysis.html,sha256=vbDw4MAfmpFoXbef4roX6NKdto_a58RMIRi7Amr2P4M,4220
178
176
  cnhkmcp/untracked/APP/templates/simulator.html,sha256=dPAY-fT7oEDCW945ZLLPSUPoawF-TACnVKiqrGiaWkI,12589
179
177
  cnhkmcp/untracked/APP/templates/transformer_web.html,sha256=POhGY85pK9PBIAvOctfpSacAZgt1tn8qpigq_QfFYsY,27501
180
178
  cnhkmcp/untracked/APP/trailSomeAlphas/README.md,sha256=hhhFfkR0TGsql64NoA8VIACsDJDhBFhyQfX81mRlwGs,1243
181
179
  cnhkmcp/untracked/APP/trailSomeAlphas/ace.log,sha256=WdGM9A4HgMyO5Zin762dDsXPIffmKWHNy90V_JroNv4,1606
182
- cnhkmcp/untracked/APP/trailSomeAlphas/enhance_template.py,sha256=uU3yx59Oj3kTW3EvtwVALOsdD296gX-yZgurvmLMG3c,19954
180
+ cnhkmcp/untracked/APP/trailSomeAlphas/enhance_template.py,sha256=xOqm4y-gCQ0BvLYVNpBchYYU1BpiuHgR6CK8AprpkyA,24403
183
181
  cnhkmcp/untracked/APP/trailSomeAlphas/requirements.txt,sha256=l55Wf01tGox9oZDPfJv5_sQ59LCvBbd9cXf4SjLeqwQ,24
184
182
  cnhkmcp/untracked/APP/trailSomeAlphas/run_pipeline.py,sha256=l3r4aE_mZFjPuVoX4UFZjt_IWjlB9wFJKhh5KiItAtw,41609
185
183
  cnhkmcp/untracked/APP/trailSomeAlphas/run_pipeline_step_by_step.ipynb,sha256=70yP02c6bJJMR1S5gAIyxSHj-UDhqlMcS6I0eXrSMks,224948
186
184
  cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-data-feature-engineering/OUTPUT_TEMPLATE.md,sha256=gXGy4_TVJrJ48omleelDOmGvPqVkKtav_bWLswU-qZY,9916
187
- cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-data-feature-engineering/SKILL.md,sha256=sD0sGAsLCkA3guYv4Mm7Pwdk9S_kZBAu_iIgeQVrDHw,18223
185
+ cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-data-feature-engineering/SKILL.md,sha256=-Zo121Bhip7ND17zyQnxjq4hHaLD6GyKpJN4vjo14Y8,24131
188
186
  cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-data-feature-engineering/examples.md,sha256=D_qP9MXaCyzcDHJe50aFBH_sCGSIWmAF1vPQblLCU-c,13273
189
187
  cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-data-feature-engineering/reference.md,sha256=cDIDYeBgsLA-hxSjBtdHtFqHNo8HIniCvzWwOrvBoLg,14037
190
188
  cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-data-feature-engineering/output_report/ASI_delay1_analyst11_ideas.md,sha256=s9UJEEqdz2imNkw0Ltn-Aws-845Qz2PVqa-lfyzr-Oo,20656
191
- cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-data-feature-engineering/output_report/GLB_delay1_fundamental72_ideas.md,sha256=G8dmF4xqojCRpaZ7n23kcKnyM3neTcvHZHWESQ-56EI,30755
189
+ cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-data-feature-engineering/output_report/GLB_delay1_fundamental72_ideas.md,sha256=9LhBEsN75jtHTbXsiO5l5tvc903YO8wUe2_UfpJK0ak,33164
192
190
  cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/SKILL.md,sha256=VRu_d4XEd5fMeyGqgjEBqJ0jhMQtAPV2HcorkFdUKg0,2110
193
191
  cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/config.json,sha256=w3uin7a3EUdfxO6mWO4lDCxJtQffsAJK3HwzvD9XXkw,83
194
192
  cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/analyst11_ASI_delay1/analyst11_ASI_1_idea_1769709385783386000.json,sha256=a7oLx9itOjq05owFNCpGxndP1rc2dCNUDvK6eI5C1Kc,53831
@@ -229,33 +227,45 @@ cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/a
229
227
  cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/analyst11_ASI_delay1/analyst11_ASI_1_idea_1769710424244661800.json,sha256=z3qwbtC03LzTKu6TByMY59uzfm63B6bCAq6CHLDIsK8,848
230
228
  cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/analyst11_ASI_delay1/analyst11_ASI_delay1.csv,sha256=KFlVsHJTMsSZXhWlbPEpgh9ST1GxYzcZKLUCNNtJkE4,74927
231
229
  cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/analyst11_ASI_delay1/final_expressions.json,sha256=4h3rwjdkdIHF8PiiIjHw84HDR0vv7kQl9JNDcyqxrlo,1145237
232
- cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/final_expressions.json,sha256=E03KLfRqEoWRrA-fawjs7FTk9QZVlZ5UU170zrwbSyc,26871
233
- cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/fundamental72_GLB_1_idea_1769759441444909600.json,sha256=l3LVW6hJpLbEjwjO2ti1wQU1ldulVvyfICOQz6lMHxM,8495
234
- cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/fundamental72_GLB_1_idea_1769759441920092000.json,sha256=5XP--w8wKAMC28vKc5T0EZ06Cl6PqGe5K2CDt1H027E,2295
235
- cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/fundamental72_GLB_1_idea_1769759442418767100.json,sha256=T7hNFXIlkbikPPAiCH_mEVfOAhpm4BAU-rpGhb0XG1U,2571
236
- cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/fundamental72_GLB_1_idea_1769759442902507600.json,sha256=Ve-ffxX9yhMvmOutjmnXtn5g1waryBy_33C-UimxpMo,3758
237
- cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/fundamental72_GLB_1_idea_1769759443377036200.json,sha256=c8xm-mBj114D9ARr7AKy1oKPvAputyIPE_Kz7mPWzJg,1386
238
- cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/fundamental72_GLB_1_idea_1769759443845377000.json,sha256=JCFqwZ61zNzJClqjGkS7c6LYCw7tHVkdPur0gbAqALg,2323
239
- cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/fundamental72_GLB_1_idea_1769759444313546700.json,sha256=nj2BeA2nqUmf_E-7oSQ1F4ukEgR3jPm14kq1Oj8P3_I,1445
240
- cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/fundamental72_GLB_1_idea_1769759444784598600.json,sha256=o-ZQNcWygag3pqq8N9VOW6STv43frNfPKg5ajenK7vg,2774
241
- cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/fundamental72_GLB_1_idea_1769759445274311200.json,sha256=hm5d57yP-maCPLWbRjch-FOJpXC49suOTCnhKHVbMVY,2389
242
- cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/fundamental72_GLB_1_idea_1769759445747421700.json,sha256=4Uj9o-mrfdZiikYgofGSDSTP6PMULDt8WVpbaearh-E,1634
243
- cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/fundamental72_GLB_1_idea_1769759446222137800.json,sha256=Bwvpfm_WSt4Zc0Rg5QWrvmzuatKaE4H593v_kVar_xI,4237
244
- cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/fundamental72_GLB_1_idea_1769759446686222600.json,sha256=cHizq0Qvb6UGzv0bDxoGTHV_WijCuZY29PlCwY9gH38,2778
245
- cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/fundamental72_GLB_1_idea_1769759447154698500.json,sha256=se7EOKZJP2oRIKCkl-yFYdO3fbnd1InMuEASTPLIrjE,1462
246
- cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/fundamental72_GLB_1_idea_1769759447629677000.json,sha256=0xtIc7EW5_lqqZZNY0zMyf3ySBDEIgPPs0lctw1gPa8,1407
247
- cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/fundamental72_GLB_1_idea_1769759448102331200.json,sha256=f8uFPeb3ZWNDZ0QrIQe2U3uId49zlFhK36vnhoYWrVs,1546
248
- cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/fundamental72_GLB_1_idea_1769759448573382000.json,sha256=ycGO7GhjxdDDIpUykpHVEjNGqMcR-dMJ_C-ns73I29Q,2991
230
+ cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/final_expressions.json,sha256=8ukiPJK3CxcP2iE61UkiS-NrPphTINeX7vD03AGzUEE,12201
231
+ cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/fundamental72_GLB_1_idea_1769852468022627100.json,sha256=VF-BqKNZKo7EraogKzpeTCdCNxoYWWywE5MUhUIhAX8,4211
232
+ cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/fundamental72_GLB_1_idea_1769852468554457600.json,sha256=YoB-C2jR4qEo3sqYs7YicmB4HmRi3ZnPUdOTbGSu69c,2408
233
+ cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/fundamental72_GLB_1_idea_1769852469133324600.json,sha256=5escaDCfLwVLdUpndpvmgMzTnar6pmgxg9F_7vtxoOM,1509
234
+ cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/fundamental72_GLB_1_idea_1769852469704433900.json,sha256=sG91V8C908yjFbDyGL86ofMIUGlFh1H-9vyCuhEdPLg,1629
235
+ cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/fundamental72_GLB_1_idea_1769852470248911900.json,sha256=f6gZ9aDJ13SH24NmpF9vMlbs5QCTqv5Z6_rbwmIMF_s,1645
236
+ cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/fundamental72_GLB_1_idea_1769852470805192900.json,sha256=InH7mfQwmAWXBUiz4m43XLsD78nENSevynqry7yOlKU,1453
237
+ cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/fundamental72_GLB_1_idea_1769852471380158000.json,sha256=2F_C9uAwiCan_JRa38XodN3d8MtRnwOQxhd-t2Mn11Y,1566
238
+ cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/fundamental72_GLB_1_idea_1769852471944247400.json,sha256=UkLZHQRbxW7F7JxHlY6ZE0WekdpwzIPPo1ecarBp9gk,4513
239
+ cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/fundamental72_GLB_1_idea_1769852472483548800.json,sha256=wJJCI02UGYFbDhnnuyUuVWpblahSPndVaeG4llVUfFo,2728
240
+ cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/fundamental72_GLB_1_idea_1769852473053891800.json,sha256=z1aByVkKQ3ULpfnZTtiEfQxWs3w9UY02YeMYPw1RXSc,4686
241
+ cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/fundamental72_GLB_1_idea_1769852473617716000.json,sha256=wAno0317mcVMj766lshz1hexNHpu-7LiLb9-zdbcKkI,4864
242
+ cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/fundamental72_GLB_1_idea_1769852474172815700.json,sha256=IkcOFYyP-pQSP6OYJsuCONW9u6cZWa1-WgL3I8tiGtc,2437
243
+ cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/fundamental72_GLB_1_idea_1769852474735778500.json,sha256=lSibMLqhJjNOJCMHH867Y7DjSeOqMMEvY8nfJ3Gai0w,1676
244
+ cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/fundamental72_GLB_1_idea_1769852475315478500.json,sha256=0d2TXHim6znYceHVKNo_eO7JdMEJrWcyZ57j242QJxg,2393
245
+ cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/fundamental72_GLB_1_idea_1769852475912897000.json,sha256=3ftTMaKj1dSKXnayMaJLypoWL1fpu_P6Fqq6bek7y4I,1259
246
+ cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/fundamental72_GLB_1_idea_1769852476474911100.json,sha256=2zOrqIEjvMhz7ylv7HbkeC7k83UzhGw7QvYSAHEDqm8,1518
247
+ cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/fundamental72_GLB_1_idea_1769852978914367200.json,sha256=N-ZbNcjINFA49ewFRDaQVgLW574_SS6HAQhBy0u9tJw,1812
248
+ cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/fundamental72_GLB_1_idea_1769852979426164800.json,sha256=9XuT5tGVKZj_1nOgrpLlE6F0IS3BlSPKbQXrmPtEuRw,2928
249
+ cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/fundamental72_GLB_1_idea_1769852979945511100.json,sha256=t0Mjp2uuyW-9-MzYkoQSADE_4gGhoVBSFBxWr8xrxEY,2284
250
+ cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/fundamental72_GLB_1_idea_1769852980480251500.json,sha256=afrcd2bYJERb8yvdW2vSpOus4TMRaFUsX7Bskav7TPI,1898
251
+ cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/fundamental72_GLB_1_idea_1769852981007315500.json,sha256=ODZJ-8bTMJXhVssjHH6diYfWI9wCpiMxMv8DhtKEuzU,2878
252
+ cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/fundamental72_GLB_1_idea_1769854621979784200.json,sha256=djqq5RUkX-HMyUd1moJQu15dHFS-O02x-bRlsF6KZvs,1532
253
+ cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/fundamental72_GLB_1_idea_1769854622483457900.json,sha256=BkrU-bjgJ8jffucPoCDpwULhqqrW4q24xc5b7vGVCZQ,1672
254
+ cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/fundamental72_GLB_1_idea_1769854623010559800.json,sha256=RgOeH1fYwZgy65kIqx5_ZW4qzSrTMVX5v2qUVWywIZo,2087
255
+ cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/fundamental72_GLB_1_idea_1769854623572902300.json,sha256=zeFQY4I44kEjVoz2RlHYpv9mGHU0oRLu5H_wOyO4xF4,757
256
+ cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/fundamental72_GLB_1_idea_1769854624091016000.json,sha256=NOT4UyrzZ551YMZgIZF9SV9WfqsEoIafvuVVS3_4mnM,2100
249
257
  cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/fundamental72_GLB_delay1.csv,sha256=5xYzduaH3yAb4s_esUs-qslraV-AN2xSrzoqlYNx5Yw,174543
250
- cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/scripts/ace.log,sha256=mFFRiXX6-f44G5P1SMI_iyScmYkfwCJfvY8AgVvdtUw,73
258
+ cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/fundamental72_GLB_delay1.csv.bak_1769852868,sha256=fyzpBFNGkXF1FWq0Su4vKNLZOaTh8Ft6yr-a5ceXYLw,175530
259
+ cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental72_GLB_delay1/fundamental72_GLB_delay1.csv.bak_1769854511,sha256=5xYzduaH3yAb4s_esUs-qslraV-AN2xSrzoqlYNx5Yw,174543
260
+ cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/scripts/ace.log,sha256=fZaEql2yURw-RIHLg_TNWmDVjpUO5Z_7csJ6ur5Wgvo,365
251
261
  cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/scripts/ace_lib.py,sha256=8mKA_m_QAsICmlMgLud7jyTA_E3mQZDZdnAJvGzXvxc,55461
252
262
  cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/scripts/fetch_dataset.py,sha256=q1zPpjz9FAmyOQmRtDrrfZf-a-rH0CkUCe_HIUvplK8,4309
253
263
  cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/scripts/helpful_functions.py,sha256=1n9rds-uTJd8_cKmptDXTIyoipxa_hPTeOmMj_MKxNw,6820
254
264
  cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/scripts/implement_idea.py,sha256=8nAyiFE0X6pcGQwZ4m-S9ph7lPSAGzzX7VLKBucBfZ8,8181
255
265
  cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/scripts/merge_expression_list.py,sha256=4NzMqgwdLUx0baVm3CNRBlr17mtdnUzUdi3Depui8pc,3362
256
266
  cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/scripts/parsetab.py,sha256=29clH5xFEmKpqzRvrLN89QE8JFJNYFhH-gEFR4y7448,7650
257
- cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/scripts/validator.py,sha256=bvQt55-n2FHkeBA6Ui7tc0oLk_cnriDxt5z-IgaeKZA,50789
258
- cnhkmcp/untracked/APP/trailSomeAlphas/skills/template_final_enhance/op总结.md,sha256=Gs-2bblGj6ruwtNbgY5vrJAAaUhxDSOzwcGBqyt5MqM,19856
267
+ cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/scripts/validator.py,sha256=hENDusXW4M64pqLqnF3TowP6nJod110aoDjJPaoo8QY,54538
268
+ cnhkmcp/untracked/APP/trailSomeAlphas/skills/template_final_enhance/op总结.md,sha256=HDc8lhGdMst2QgFCqD5fJWvDZ3w1S2DEk0bMsHziflA,20562
259
269
  cnhkmcp/untracked/APP/trailSomeAlphas/skills/template_final_enhance/sample_prompt.md,sha256=vf6Ps-hzIH-MRf-cv0Dyro7StdTJ-v6RAjHCXkpRwLE,6217
260
270
  cnhkmcp/untracked/APP/trailSomeAlphas/skills/template_final_enhance/单因子思考逻辑链.md,sha256=2IfV6lOKYwoZIlN1tjXjOezJn9pQxX4K3iPmnZh01gA,13232
261
271
  cnhkmcp/untracked/APP/缘分一道桥/ace_lib.py,sha256=nSnmM5zfI6lxIln1vctz7TCwjAWcljVXITy7R4gS3Q0,53947
@@ -270,7 +280,8 @@ cnhkmcp/untracked/mcp文件论坛版2_如果原版启动不了浏览器就试这
270
280
  cnhkmcp/untracked/mcp文件论坛版2_如果原版启动不了浏览器就试这个/配置前运行我_安装必要依赖包.py,sha256=BnUyL5g6PaC62yEuS-8vcDSJ0oKu3k6jqQxi2jginuQ,6612
271
281
  cnhkmcp/untracked/skills/Claude_Skill_Creation_Guide.md,sha256=Wx4w8deBkuw0UcSwzNNQdRIuCqDXGk3-fRQBWcPQivw,5025
272
282
  cnhkmcp/untracked/skills/alpha-expression-verifier/SKILL.md,sha256=7oGzMIXUJzDCtbxND6QWmh6azkLqoFJNURIh-F-aPUQ,2213
273
- cnhkmcp/untracked/skills/alpha-expression-verifier/scripts/validator.py,sha256=bvQt55-n2FHkeBA6Ui7tc0oLk_cnriDxt5z-IgaeKZA,50789
283
+ cnhkmcp/untracked/skills/alpha-expression-verifier/scripts/parsetab.py,sha256=L_XJWx4AmYWASQ-krdrcyu7cEFbRdKS5MWppZ0Qfjlo,7650
284
+ cnhkmcp/untracked/skills/alpha-expression-verifier/scripts/validator.py,sha256=qsqDg58YK40F5VJDzG-GrZ1ETAfnQ5Cw9Yvbu1NkOAI,54348
274
285
  cnhkmcp/untracked/skills/alpha-expression-verifier/scripts/verify_expr.py,sha256=zDSlYf0XlkyML-fcL4wld445RMbztt4pDSP5b6W6JKQ,1659
275
286
  cnhkmcp/untracked/skills/brain-calculate-alpha-selfcorrQuick/SKILL.md,sha256=UKQhfHPOH8_YXnRotzXuG8BrgFeXhQoxAZIEeaQxGds,1183
276
287
  cnhkmcp/untracked/skills/brain-calculate-alpha-selfcorrQuick/reference.md,sha256=ws9oUgtEdK7aVjw6sNoVzFQ3gyoX5UIlyz3wItI0fxI,3115
@@ -339,9 +350,9 @@ cnhkmcp/untracked/skills/pull_BRAINSkill/SKILL.md,sha256=QyXQ0wr9LeZyKqkvSTto72b
339
350
  cnhkmcp/untracked/skills/pull_BRAINSkill/scripts/pull_skills.py,sha256=6v3Z3cc9_qKvBj7C6y2jWY1pAd76SA3JmiVj_KkZkmw,6341
340
351
  cnhkmcp/vector_db/_manifest.json,sha256=RBNvo1WzZ4oRRq0W9-hknpT7T8If536DEMBg9hyq_4o,2
341
352
  cnhkmcp/vector_db/_meta.json,sha256=xQwhRA0prLtwFAMAGR1ZgCR76jVEFIEfF-1SNPpTMgI,91
342
- cnhkmcp-2.3.1.dist-info/licenses/LICENSE,sha256=QLxO2eNMnJQEdI_R1UV2AOD-IvuA8zVrkHWA4D9gtoc,1081
343
- cnhkmcp-2.3.1.dist-info/METADATA,sha256=0Mmfn1GXHKMFDIXxrymHGI9gVaYm-69u1oSsHTnKijM,5171
344
- cnhkmcp-2.3.1.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
345
- cnhkmcp-2.3.1.dist-info/entry_points.txt,sha256=lTQieVyIvjhSMK4fT-XwnccY-JBC1H4vVQ3V9dDM-Pc,70
346
- cnhkmcp-2.3.1.dist-info/top_level.txt,sha256=x--ibUcSgOS9Z_RWK2Qc-vfs7DaXQN-WMaaxEETJ1Bw,8
347
- cnhkmcp-2.3.1.dist-info/RECORD,,
353
+ cnhkmcp-2.3.2.dist-info/licenses/LICENSE,sha256=QLxO2eNMnJQEdI_R1UV2AOD-IvuA8zVrkHWA4D9gtoc,1081
354
+ cnhkmcp-2.3.2.dist-info/METADATA,sha256=lWqurjB2WU1sxOcLVQPuaVetz7Dic2jtuiEAef0d3iI,5171
355
+ cnhkmcp-2.3.2.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
356
+ cnhkmcp-2.3.2.dist-info/entry_points.txt,sha256=lTQieVyIvjhSMK4fT-XwnccY-JBC1H4vVQ3V9dDM-Pc,70
357
+ cnhkmcp-2.3.2.dist-info/top_level.txt,sha256=x--ibUcSgOS9Z_RWK2Qc-vfs7DaXQN-WMaaxEETJ1Bw,8
358
+ cnhkmcp-2.3.2.dist-info/RECORD,,