#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
关羽策略配置文件
=================

定义策略的各种参数和配置
"""

# 风险偏好配置
RISK_PROFILES = {
    'conservative': {
        'name': '保守型',
        'description': '低风险偏好，追求稳健收益',
        'pe_max': 15,
        'pb_max': 1.5,
        'roe_min': 12.0,
        'single_stock_max': 0.08,      # 单票最大仓位8%
        'industry_max': 0.20,           # 单行业最大仓位20%
        'stock_count': (15, 20),        # 持股数量范围
        'stop_loss_pct': 0.05,          # 止损幅度5%
        'max_drawdown': 0.20,           # 最大回撤控制20%
    },
    'balanced': {
        ' 'name': '平衡型',
        'description': '中等风险偏好，平衡收益与风险',
        'pe_max': 25,
        'pb_max': 2.5,
        'roe_min': 10.0,
        'single_stock_max': 0.15,      # 单票最大仓位15%
        'industry_max': 0.25,           # 单行业最大仓位25%
        'stock_count': (10, 15),        # 持股数量范围
        'stop_loss_pct': 0.06,          # 止损幅度6%
        'max_drawdown': 0.30,           # 最大回撤控制30%
    },
    'aggressive': {
        'name': '进取型',
        'description': '高风险偏好，追求更高收益',
        'pe_max': 35,
        'pb_max': 3.0,
        'roe_min': 8.0,
        'single_stock_max': 0.25,      # 单票最大仓位25%
        'industry_max': 0.30,           # 单行业最大仓位30%
        'stock_count': (5, 10),         # 持股数量范围
        'stop_loss_pct': 0.08,          # 止损幅度8%
        'max_drawdown': 0.40,           # 最大回撤控制40%
    },
}

# 技术指标配置
TECHNICAL_CONFIG = {
    'ma_days': 20,                      # 均线天数
    'atr_period': 14,                   # ATR周期
    'max_drawdown_period': 20,          # 回撤检查周期
    'max_drawdown_limit': 0.20,         # 最大允许回撤20%
    'volume_surge_threshold': 3.0,      # 放量阈值3倍
}

# 价值筛选配置
VALUE_FILTER_CONFIG = {
    'min_market_cap': 100000,           # 最小流通市值10亿（万元）
    'min_turnover': 0.5,                # 最小换手率0.5%
    'max_new_stock_days': 180,          # 新股过滤天数
}

# 止损配置
STOP_LOSS_CONFIG = {
    'methods': ['ma', 'atr', 'pct'],    # 支持的止损方法
    'default_method': 'ma',             # 默认止损方法
    'atr_multiplier': 2.0,              # ATR止损倍数
}

# 止盈配置（可选）
TAKE_PROFIT_CONFIG = {
    'enabled': False,                    # 是否启用止盈
    'target_profit_pct': 0.30,          # 目标收益率30%
    'partial_profit_levels': [          # 分批止盈
        {'pct': 0.20, 'sell_ratio': 0.3},   # 20%收益时卖出30%
        {'pct': 0.30, 'sell_ratio': 0.4},   # 30%收益时卖出40%
        {'pct': 0.50, 'sell_ratio': 0.3},   # 50%收益时卖出30%
    ],
}

# 数据配置
DATA_CONFIG = {
    'source': 'akshare',                # 数据源
    'default_history_days': 120,        # 默认获取历史数据天数
}

# 日志配置
LOG_CONFIG = {
    'enabled': True,
    'level': 'INFO',
    'file': 'guanyu_strategy.log',
}

# 获取默认配置
def get_default_config():
    """获取默认配置"""
    return {
        'risk_profile': 'balanced',
        'total_capital': 1000000.0,
        'technical': TECHNICAL_CONFIG,
        'value_filter': VALUE_FILTER_CONFIG,
        'stop_loss': STOP_LOSS_CONFIG,
        'take_profit': TAKE_PROFIT_CONFIG,
        'data': DATA_CONFIG,
    }


if __name__ == '__main__':
    # 打印所有配置
    print("=" * 60)
    print("关羽策略配置")
    print("=" * 60)
    
    print("\n风险偏好配置:")
    for profile_name, profile_config in RISK_PROFILES.items():
        print(f"\n  {profile_name}:")
        for key, value in profile_config.items():
            if key == 'stock_count':
                print(f"    {key}: {value[0]}-{value[1]}只")
            elif isinstance(value, float):
                print(f"    {key}: {value*100:.1f}%")
            else:
                print(f"    {key}: {value}")
    
    print("\n技术指标配置:")
    for key, value in TECHNICAL_CONFIG.items():
        print(f"  {key}: {value}")
    
    print("\n价值筛选配置:")
    for key, value in VALUE_FILTER_CONFIG.items():
        print(f"  {key}: {value}")
    
    print("\n止损配置:")
    for key, value in STOP_LOSS_CONFIG.items():
        print(f"  {key}: {value}")
