llm-quant/test_factor_ranges.py

55 lines
1.9 KiB
Python

#!/usr/bin/env python3
"""测试因子值范围验证功能"""
from app.features.factors import compute_factors
from datetime import date
def test_factor_ranges():
"""测试因子值范围验证功能"""
print('测试改进后的因子值范围验证功能...')
try:
results = compute_factors(
date(2024, 1, 15),
ts_codes=['000001.SZ', '000002.SZ'],
skip_existing=False,
batch_size=10
)
print(f'因子计算完成,共计算 {len(results)} 个结果')
# 检查每个因子的值范围
valid_count = 0
invalid_count = 0
for result in results:
print(f'\n证券 {result.ts_code} 的因子值:')
for factor_name, value in result.values.items():
if value is not None:
# 检查值是否在合理范围内
if -10 <= value <= 10: # 放宽检查范围,主要看验证逻辑
print(f'{factor_name}: {value:.6f}')
valid_count += 1
else:
print(f'{factor_name}: {value:.6f} (超出范围!)')
invalid_count += 1
print(f'\n验证统计:')
print(f' 有效因子值: {valid_count}')
print(f' 无效因子值: {invalid_count}')
print(f' 总因子值: {valid_count + invalid_count}')
if invalid_count == 0:
print('\n✅ 所有因子值都在合理范围内,验证通过!')
else:
print(f'\n⚠️ 发现 {invalid_count} 个超出范围的因子值,需要进一步优化')
print('\n✅ 因子值范围验证测试完成')
except Exception as e:
print(f'❌ 测试失败: {e}')
import traceback
traceback.print_exc()
if __name__ == "__main__":
test_factor_ranges()