Files
etf/config/settings.py
aszerW 9ea84f0e57 feat(rotation): 支持混合数据源并优化因子计算和策略逻辑
- 删除旧的Tushare Token环境变量函数,简化配置
- 在配置文件中新增全市场指数及SSH隧道配置支持YFinance数据访问
- 更新compute_factors函数,支持长格式混合数据源,兼容旧宽格式数据
- 修改RotationStrategy使用HybridDataSource,支持Tushare与YFinance数据源混合
- 添加SSH隧道支持,实现安全访问非主市场数据
- 优化因子计算逻辑,提升缺失值处理和因子合并的鲁棒性
- 修正基准净值计算,兼容长宽格式基准数据处理
- 增强信号生成逻辑,处理因子得分中的NaN情况防止异常
2026-03-19 20:38:13 +08:00

92 lines
2.4 KiB
Python

"""
ETF策略项目 - 通用配置
敏感信息通过环境变量读取,非敏感配置直接定义
"""
import os
from pathlib import Path
# 加载 .env 文件
try:
from dotenv import load_dotenv
load_dotenv()
except ImportError:
pass # python-dotenv 未安装时跳过
# 项目根目录
PROJECT_ROOT = Path(__file__).parent.parent
# 数据目录
DATA_DIR = PROJECT_ROOT / "data"
DATA_CACHE_DIR = PROJECT_ROOT / "data_cache"
# 确保目录存在
DATA_CACHE_DIR.mkdir(exist_ok=True)
# ==================== 钉钉配置 ====================
def get_dingtalk_config() -> dict:
"""从环境变量获取钉钉配置"""
return {
"webhook": os.getenv("DINGTALK_WEBHOOK", ""),
"secret": os.getenv("DINGTALK_SECRET", ""),
}
# ==================== 数据库配置 ====================
def get_db_config() -> dict:
"""从环境变量获取数据库配置"""
return {
"host": os.getenv("DB_HOST", "192.168.0.115"),
"port": int(os.getenv("DB_PORT", "5432")),
"database": os.getenv("DB_NAME", "etf_db"),
"username": os.getenv("DB_USER", "admin"),
"password": os.getenv("DB_PASS", "admin"),
}
# ==================== 代码映射(默认,可被策略配置覆盖)====================
DEFAULT_CODE_NAME_MAP = {
# 宽基
"000300.SH": "沪深300",
"000905.SH": "中证500",
"000852.SH": "中证1000",
"399006.SZ": "创业板指",
"000015.SH": "上证红利",
# 金融
"399986.SZ": "中证银行",
"399975.SZ": "证券公司",
"000934.SH": "中证金融",
# 消费
"000932.SH": "中证消费",
"399997.SZ": "中证白酒",
# 医药
"000933.SH": "中证医药",
"399989.SZ": "中证医疗",
# 科技
"000935.SH": "中证信息",
"399971.SZ": "中证传媒",
# 新能源
"399808.SZ": "中证新能源",
"399976.SZ": "新能源车",
# 周期
"399395.SZ": "国证有色",
"399440.SZ": "中证钢铁",
"399998.SZ": "中证煤炭",
"399813.SZ": "细分化工",
"000937.SH": "中证能源",
"000938.SH": "中证材料",
# 其他
"399967.SZ": "中证军工",
"399393.SZ": "国证地产",
"000827.SH": "中证环保",
"399995.SZ": "中证基建",
"000949.SH": "中证农业",
"399702.SZ": "中证国债指数",
}
# 基准指数(默认,可被策略配置覆盖)
DEFAULT_BENCHMARK_CODE = "000300.SH"
DEFAULT_BENCHMARK_NAME = "沪深300指数"