65 lines
2.1 KiB
Python
65 lines
2.1 KiB
Python
"""
|
||
阿尔法模块配置
|
||
|
||
敏感信息(数据库密码等)通过环境变量管理:
|
||
- 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 |