""" 阿尔法模块配置 敏感信息(数据库密码等)通过环境变量管理: - DB_HOST : 数据库主机地址(默认 localhost) - DB_PORT : 数据库端口(默认 12345) - DB_NAME : 数据库名称(默认 quant_db) - DB_USER : 数据库用户(默认 postgres) - DB_PASSWORD : 数据库密码 设置方式: Windows: set DB_PASSWORD=your_password Linux: export DB_PASSWORD=your_password 也可创建 .env 文件(参考 .env.example) """ import os from dataclasses import dataclass, field from typing import List, Optional @dataclass class AlphaConfig: """阿尔法研究全局配置""" # ---- 数据库 ---- db_host: str = field( default_factory=lambda: os.getenv("DB_HOST", "localhost") ) db_port: int = field( default_factory=lambda: int(os.getenv("DB_PORT", "12345")) ) db_name: str = field( default_factory=lambda: os.getenv("DB_NAME", "quant_db") ) db_user: str = field( default_factory=lambda: os.getenv("DB_USER", "postgres") ) db_password: str = field( default_factory=lambda: os.getenv("DB_PASSWORD", "") ) # ---- 回测基础参数 ---- initial_cash: float = 1_000_000.0 # 初始资金 benchmark: str = "000300.SH" # 基准指数(沪深300) start_date: str = "2020-01-01" end_date: str = "2025-12-31" # ---- 交易成本 ---- commission_rate: float = 0.0003 # 佣金费率 slippage: float = 0.001 # 滑点(百分比) stamp_tax: float = 0.001 # 印花税(仅卖出) # ---- 组合约束 ---- max_position_pct: float = 0.10 # 单票最大仓位 max_turnover: float = 0.20 # 单日最大换手率 min_holding_period: int = 1 # 最小持仓天数 # ---- 因子研究参数 ---- factor_windows: List[int] = field(default_factory=lambda: [5, 10, 20, 60]) ic_decay_days: int = 20 # IC 衰减分析天数 # ---- 输出 ---- output_dir: str = "./output" save_trade_log: bool = True verbose: bool = False