Files

65 lines
2.1 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
"""
阿尔法模块配置
敏感信息(数据库密码等)通过环境变量管理:
- 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