增强风险管理师分析功能
This commit is contained in:
@@ -0,0 +1,173 @@
|
||||
"""
|
||||
风险数据获取功能测试脚本
|
||||
测试pywencai获取限售解禁、大股东减持、重要事件数据
|
||||
"""
|
||||
|
||||
from risk_data_fetcher import RiskDataFetcher
|
||||
|
||||
|
||||
def test_risk_data_fetcher():
|
||||
"""测试风险数据获取器"""
|
||||
|
||||
print("=" * 80)
|
||||
print("风险数据获取功能测试")
|
||||
print("=" * 80)
|
||||
|
||||
# 初始化获取器
|
||||
fetcher = RiskDataFetcher()
|
||||
|
||||
# 测试股票列表(建议使用大盘股,数据更全)
|
||||
test_symbols = [
|
||||
"600000", # 浦发银行
|
||||
"000001", # 平安银行
|
||||
"600519", # 茅台
|
||||
]
|
||||
|
||||
for symbol in test_symbols:
|
||||
print(f"\n{'=' * 80}")
|
||||
print(f"测试股票: {symbol}")
|
||||
print(f"{'=' * 80}")
|
||||
|
||||
# 获取风险数据
|
||||
risk_data = fetcher.get_risk_data(symbol)
|
||||
|
||||
# 显示结果
|
||||
print(f"\n数据获取成功: {risk_data.get('data_success', False)}")
|
||||
|
||||
if risk_data.get('error'):
|
||||
print(f"错误信息: {risk_data['error']}")
|
||||
continue
|
||||
|
||||
# 显示限售解禁数据
|
||||
lifting_ban = risk_data.get('lifting_ban')
|
||||
if lifting_ban and lifting_ban.get('has_data'):
|
||||
print(f"\n✅ 限售解禁数据:")
|
||||
print(f" 查询语句: {lifting_ban.get('query')}")
|
||||
df_data = lifting_ban.get('data')
|
||||
if df_data is not None and not df_data.empty:
|
||||
print(f" 记录数: {len(df_data)}")
|
||||
print(f" 字段: {', '.join(df_data.columns.tolist())}")
|
||||
print(f" 前3条记录:")
|
||||
print(df_data.head(3).to_string(index=False))
|
||||
else:
|
||||
print(f"\nℹ️ 暂无限售解禁数据")
|
||||
|
||||
# 显示股东减持数据
|
||||
reduction = risk_data.get('shareholder_reduction')
|
||||
if reduction and reduction.get('has_data'):
|
||||
print(f"\n✅ 大股东减持数据:")
|
||||
print(f" 查询语句: {reduction.get('query')}")
|
||||
df_data = reduction.get('data')
|
||||
if df_data is not None and not df_data.empty:
|
||||
print(f" 记录数: {len(df_data)}")
|
||||
print(f" 字段: {', '.join(df_data.columns.tolist())}")
|
||||
print(f" 前3条记录:")
|
||||
print(df_data.head(3).to_string(index=False))
|
||||
else:
|
||||
print(f"\nℹ️ 暂无大股东减持数据")
|
||||
|
||||
# 显示重要事件数据
|
||||
events = risk_data.get('important_events')
|
||||
if events and events.get('has_data'):
|
||||
print(f"\n✅ 重要事件数据:")
|
||||
print(f" 查询语句: {events.get('query')}")
|
||||
df_data = events.get('data')
|
||||
if df_data is not None and not df_data.empty:
|
||||
print(f" 记录数: {len(df_data)}")
|
||||
print(f" 字段: {', '.join(df_data.columns.tolist())}")
|
||||
print(f" 前3条记录:")
|
||||
print(df_data.head(3).to_string(index=False))
|
||||
else:
|
||||
print(f"\nℹ️ 暂无重要事件数据")
|
||||
|
||||
# 显示格式化后的数据
|
||||
print(f"\n{'=' * 80}")
|
||||
print("格式化供AI分析的数据:")
|
||||
print(f"{'=' * 80}")
|
||||
formatted_data = fetcher.format_risk_data_for_ai(risk_data)
|
||||
print(formatted_data)
|
||||
|
||||
print(f"\n{'=' * 80}")
|
||||
print("测试完成!")
|
||||
print(f"{'=' * 80}")
|
||||
|
||||
|
||||
def test_risk_management_agent():
|
||||
"""测试风险管理师功能"""
|
||||
|
||||
print("\n" + "=" * 80)
|
||||
print("风险管理师AI分析测试")
|
||||
print("=" * 80)
|
||||
|
||||
# 需要配置API Key才能测试
|
||||
try:
|
||||
from ai_agents import StockAnalysisAgents
|
||||
from risk_data_fetcher import RiskDataFetcher
|
||||
|
||||
# 测试股票
|
||||
test_symbol = "600000"
|
||||
|
||||
print(f"\n测试股票: {test_symbol}")
|
||||
|
||||
# 获取风险数据
|
||||
fetcher = RiskDataFetcher()
|
||||
risk_data = fetcher.get_risk_data(test_symbol)
|
||||
|
||||
if not risk_data.get('data_success'):
|
||||
print("未获取到风险数据,跳过AI分析测试")
|
||||
return
|
||||
|
||||
# 模拟股票信息和指标
|
||||
stock_info = {
|
||||
'symbol': test_symbol,
|
||||
'name': '测试股票',
|
||||
'current_price': 10.5,
|
||||
'beta': 1.2,
|
||||
'52_week_high': 12.0,
|
||||
'52_week_low': 8.5
|
||||
}
|
||||
|
||||
indicators = {
|
||||
'rsi': 65.5,
|
||||
'macd': 0.15
|
||||
}
|
||||
|
||||
# 初始化AI分析系统
|
||||
print("\n初始化AI分析系统...")
|
||||
agents = StockAnalysisAgents()
|
||||
|
||||
# 运行风险管理师分析
|
||||
print("\n运行风险管理师分析...")
|
||||
result = agents.risk_management_agent(stock_info, indicators, risk_data)
|
||||
|
||||
# 显示分析结果
|
||||
print(f"\n{'=' * 80}")
|
||||
print(f"分析师: {result['agent_name']}")
|
||||
print(f"职责: {result['agent_role']}")
|
||||
print(f"关注领域: {', '.join(result['focus_areas'])}")
|
||||
print(f"{'=' * 80}")
|
||||
print("\n分析报告:")
|
||||
print(result['analysis'])
|
||||
|
||||
except ImportError as e:
|
||||
print(f"⚠️ 导入模块失败: {e}")
|
||||
print("提示:请确保已安装所有依赖并配置API Key")
|
||||
except Exception as e:
|
||||
print(f"❌ 测试失败: {e}")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
# 测试1:风险数据获取
|
||||
test_risk_data_fetcher()
|
||||
|
||||
# 测试2:AI分析(需要API Key)
|
||||
print("\n\n是否测试AI分析功能?(需要配置DeepSeek API Key)")
|
||||
user_input = input("输入 y 继续,其他键跳过: ")
|
||||
|
||||
if user_input.lower() == 'y':
|
||||
test_risk_management_agent()
|
||||
else:
|
||||
print("\n跳过AI分析测试")
|
||||
|
||||
print("\n✅ 所有测试完成!")
|
||||
|
||||
Reference in New Issue
Block a user