cnhkmcp 1.8.7__py3-none-any.whl → 1.8.10__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.
@@ -598,7 +598,7 @@ class BrainApiClient:
598
598
  response.raise_for_status()
599
599
 
600
600
  self.log(f"Alpha {alpha_id} submitted successfully", "SUCCESS")
601
- return True
601
+ return response.__dict__
602
602
 
603
603
  except Exception as e:
604
604
  self.log(f"❌ Failed to submit alpha: {str(e)}", "ERROR")
@@ -1101,14 +1101,46 @@ class BrainApiClient:
1101
1101
  else:
1102
1102
  continue
1103
1103
 
1104
- # Analyze correlation data
1105
- if correlation_data and 'results' in correlation_data:
1106
- correlations = correlation_data['results']
1107
- max_correlation = max([corr.get('correlation', 0) for corr in correlations]) if correlations else 0
1108
- passes_check = max_correlation < threshold
1104
+ # Analyze correlation data (robust to schema/records format)
1105
+ if isinstance(correlation_data, dict):
1106
+ # Prefer strict access to schema.max or top-level max; otherwise error
1107
+ schema = correlation_data.get('schema') or {}
1108
+ if isinstance(schema, dict) and 'max' in schema:
1109
+ max_correlation = float(schema['max'])
1110
+ elif 'max' in correlation_data:
1111
+ # Some endpoints place max at top-level
1112
+ max_correlation = float(correlation_data['max'])
1113
+ else:
1114
+ # Attempt to derive from records; if none found, raise error instead of defaulting
1115
+ records = correlation_data.get('records') or []
1116
+ if isinstance(records, list) and records:
1117
+ candidate_max = None
1118
+ for row in records:
1119
+ if isinstance(row, (list, tuple)):
1120
+ for v in row:
1121
+ try:
1122
+ vf = float(v)
1123
+ if -1.0 <= vf <= 1.0:
1124
+ candidate_max = vf if candidate_max is None else max(candidate_max, vf)
1125
+ except Exception:
1126
+ continue
1127
+ elif isinstance(row, dict):
1128
+ for key in ('correlation', 'prodCorrelation', 'selfCorrelation', 'max'):
1129
+ try:
1130
+ vf = float(row.get(key))
1131
+ if -1.0 <= vf <= 1.0:
1132
+ candidate_max = vf if candidate_max is None else max(candidate_max, vf)
1133
+ except Exception:
1134
+ continue
1135
+ if candidate_max is None:
1136
+ raise ValueError("Unable to derive max correlation from records")
1137
+ max_correlation = float(candidate_max)
1138
+ else:
1139
+ raise KeyError("Correlation response missing 'schema.max' or top-level 'max' and no 'records' to derive from")
1109
1140
  else:
1110
- max_correlation = 0
1111
- passes_check = True
1141
+ raise TypeError("Correlation data is not a dictionary")
1142
+
1143
+ passes_check = max_correlation < threshold
1112
1144
 
1113
1145
  results['checks'][check_type] = {
1114
1146
  'max_correlation': max_correlation,
@@ -2009,7 +2041,7 @@ async def submit_alpha(alpha_id: str) -> Dict[str, Any]:
2009
2041
  """
2010
2042
  try:
2011
2043
  success = await brain_client.submit_alpha(alpha_id)
2012
- return {"success": success, "alpha_id": alpha_id}
2044
+ return {"submit_result": success, "alpha_id": alpha_id}
2013
2045
  except Exception as e:
2014
2046
  return {"error": str(e)}
2015
2047
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: cnhkmcp
3
- Version: 1.8.7
3
+ Version: 1.8.10
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
@@ -2,7 +2,7 @@ cnhkmcp/__init__.py,sha256=6HAUbLyRJK-E8TxYkbuGHZ57oAxeH8LgrUVK19ttNhY,2758
2
2
  cnhkmcp/untracked/arXiv_API_Tool_Manual.md,sha256=I3hvI5mpmIjBuWptufoVSWFnuhyUc67oCGHEuR0p_xs,13552
3
3
  cnhkmcp/untracked/arxiv_api.py,sha256=-E-Ub9K-DXAYaCjrbobyfQ9H97gaZBc7pL6xPEyVHec,9020
4
4
  cnhkmcp/untracked/forum_functions.py,sha256=QW-CplAsqDkw-Wcwq-1tuZBq48dEO-vXZ8xw7X65EuE,42303
5
- cnhkmcp/untracked/platform_functions.py,sha256=KQQlh-ZFQn6541H2DMoL3mEn4BiNkr-cg87lTSy6qMs,121144
5
+ cnhkmcp/untracked/platform_functions.py,sha256=3tXQnlYlXJyrYdEvys6q-4L-PMAk2sOVkBlntsbB4Ig,123322
6
6
  cnhkmcp/untracked/sample_mcp_config.json,sha256=QSFvZ086bxUQsvmLjcE6pL9ObzKn4FGnt9npWPo7Eps,1044
7
7
  cnhkmcp/untracked/user_config.json,sha256=_INn1X1qIsITrmEno-BRlQOAGm9wnNCw-6B333DEvnk,695
8
8
  cnhkmcp/untracked/示例参考文档_BRAIN_Alpha_Test_Requirements_and_Tips.md,sha256=W4dtQrqoTN72UyvIsvkGRF0HFOJLHSDeeSlbR3gqQg0,17133
@@ -50,6 +50,7 @@ cnhkmcp/untracked/APP/custom_templates/templates.json,sha256=ARrpRsxGcUpC2iepS6j
50
50
  cnhkmcp/untracked/APP/hkSimulator/ace.log,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
51
51
  cnhkmcp/untracked/APP/hkSimulator/ace_lib.py,sha256=v5i16oVc7o2ndacm7GPnq_RBc4D1NHgc8fQA2F_Y1oA,52669
52
52
  cnhkmcp/untracked/APP/hkSimulator/autosim_20251205_145240.log,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
53
+ cnhkmcp/untracked/APP/hkSimulator/autosim_20251215_030103.log,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
53
54
  cnhkmcp/untracked/APP/hkSimulator/autosimulator.py,sha256=JmhmboakiDDQetWmn8t0-k6dgbbm0T3i-W6imVwuuGA,18641
54
55
  cnhkmcp/untracked/APP/hkSimulator/helpful_functions.py,sha256=VS-rh4T2CMWLFK4clI7-DYsnqwO5dx5L-rgL8U8BmT8,6622
55
56
  cnhkmcp/untracked/APP/simulator/alpha_submitter.py,sha256=Wxx7DyFr0VwH709JhxXPj1Jiz8dShaVaYar3HTVMgv4,15652
@@ -80,9 +81,9 @@ cnhkmcp/untracked/mcp文件论坛版2_如果原版启动不了浏览器就试这
80
81
  cnhkmcp/untracked/mcp文件论坛版2_如果原版启动不了浏览器就试这个/user_config.json,sha256=_INn1X1qIsITrmEno-BRlQOAGm9wnNCw-6B333DEvnk,695
81
82
  cnhkmcp/untracked/mcp文件论坛版2_如果原版启动不了浏览器就试这个/让AI读这个文档来学会下载浏览器.md,sha256=v5QPSMjRDh52ZjgC4h8QjImnaqlVRLjTHGxmGjTo36g,3396
82
83
  cnhkmcp/untracked/mcp文件论坛版2_如果原版启动不了浏览器就试这个/配置前运行我_安装必要依赖包.py,sha256=BnUyL5g6PaC62yEuS-8vcDSJ0oKu3k6jqQxi2jginuQ,6612
83
- cnhkmcp-1.8.7.dist-info/licenses/LICENSE,sha256=QLxO2eNMnJQEdI_R1UV2AOD-IvuA8zVrkHWA4D9gtoc,1081
84
- cnhkmcp-1.8.7.dist-info/METADATA,sha256=oTYPt95K7x8HhlxDWiy-UFvGuMw3gQSxXIBhsJetxow,5171
85
- cnhkmcp-1.8.7.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
86
- cnhkmcp-1.8.7.dist-info/entry_points.txt,sha256=lTQieVyIvjhSMK4fT-XwnccY-JBC1H4vVQ3V9dDM-Pc,70
87
- cnhkmcp-1.8.7.dist-info/top_level.txt,sha256=x--ibUcSgOS9Z_RWK2Qc-vfs7DaXQN-WMaaxEETJ1Bw,8
88
- cnhkmcp-1.8.7.dist-info/RECORD,,
84
+ cnhkmcp-1.8.10.dist-info/licenses/LICENSE,sha256=QLxO2eNMnJQEdI_R1UV2AOD-IvuA8zVrkHWA4D9gtoc,1081
85
+ cnhkmcp-1.8.10.dist-info/METADATA,sha256=R8kffKcSeBFyONUaL_z9ndUq8rS7DxPPSQIVd6NyQm8,5172
86
+ cnhkmcp-1.8.10.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
87
+ cnhkmcp-1.8.10.dist-info/entry_points.txt,sha256=lTQieVyIvjhSMK4fT-XwnccY-JBC1H4vVQ3V9dDM-Pc,70
88
+ cnhkmcp-1.8.10.dist-info/top_level.txt,sha256=x--ibUcSgOS9Z_RWK2Qc-vfs7DaXQN-WMaaxEETJ1Bw,8
89
+ cnhkmcp-1.8.10.dist-info/RECORD,,