51 lines
2.2 KiB
Python
51 lines
2.2 KiB
Python
import numpy as np
|
|
import sys
|
|
import os
|
|
|
|
# 添加项目根目录到Python路径
|
|
sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
|
|
|
|
from app.features.extended_factors import ExtendedFactors
|
|
from app.features.validation import validate_factor_value
|
|
|
|
def test_validated_micro_factors():
|
|
"""测试修正后的微观结构因子验证"""
|
|
# 创建因子引擎
|
|
engine = ExtendedFactors()
|
|
|
|
# 测试场景:极端行情 - 大幅波动(会产生超出原配置范围的值)
|
|
close_prices = np.array([100, 110, 90, 120, 80, 130, 70, 140, 60, 150, 50], dtype=float)
|
|
volume_prices = np.array([1000, 2000, 500, 2500, 300, 3000, 200, 3500, 100, 4000, 50], dtype=float)
|
|
|
|
# 计算因子值
|
|
tick_result = engine.compute_factor("micro_tick_direction", close_prices, volume_prices)
|
|
imbalance_result = engine.compute_factor("micro_trade_imbalance", close_prices, volume_prices)
|
|
|
|
print(f"micro_tick_direction: {tick_result}")
|
|
print(f"micro_trade_imbalance: {imbalance_result}")
|
|
|
|
# 验证因子值是否在新配置的范围内
|
|
ts_code = "000001.SZ"
|
|
trade_date = "20230101"
|
|
|
|
validated_tick = validate_factor_value("micro_tick_direction", tick_result, ts_code, trade_date)
|
|
validated_imbalance = validate_factor_value("micro_trade_imbalance", imbalance_result, ts_code, trade_date)
|
|
|
|
print(f"\n验证结果:")
|
|
print(f"micro_tick_direction验证: {validated_tick} (原始值: {tick_result})")
|
|
print(f"micro_trade_imbalance验证: {validated_imbalance} (原始值: {imbalance_result})")
|
|
|
|
# 测试各种边界值
|
|
print(f"\n边界值测试:")
|
|
test_values = [-2.0, -1.0, -0.5, 0.0, 0.5, 1.0, 2.0, 100.0, 150.0]
|
|
|
|
for value in test_values:
|
|
validated = validate_factor_value("micro_tick_direction", value, ts_code, trade_date)
|
|
print(f"micro_tick_direction值 {value}: {'通过' if validated is not None else '拒绝'}")
|
|
|
|
for value in test_values:
|
|
validated = validate_factor_value("micro_trade_imbalance", value, ts_code, trade_date)
|
|
print(f"micro_trade_imbalance值 {value}: {'通过' if validated is not None else '拒绝'}")
|
|
|
|
if __name__ == "__main__":
|
|
test_validated_micro_factors() |