同花顺回测2月策略代码

策略思想`
2月持有中证1000ETF 其他月份持有招商双债

# 股票策略模板
# 初始化函数,全局只运行一次
def init(context):
    # 设置基准收益:中证1000指数
    set_benchmark('512100.SH')  # 中证1000指数代码
    # 打印日志
    log.info('策略开始运行,初始化函数全局只运行一次')
    # 设置股票每笔交易的手续费为万分之二(手续费在买卖成交后扣除,不包括税费,税费在卖出成交后扣除)
    set_commission(PerShare(type='stock', cost=0.0002))
    # 设置股票交易滑点0.5%,表示买入价为实际价格乘1.005,卖出价为实际价格乘0.995
    set_slippage(PriceSlippage(0.000))
    # 设置日级最大成交比例25%,分钟级最大成交比例50%
    # 日频运行时,下单数量超过当天真实成交量25%,则全部不成交
    # 分钟频运行时,下单数量超过当前分钟真实成交量50%,则全部不成交
    set_volume_limit(0.25, 0.5)
    # 设置要操作的股票:中证1000ETF和招商双债LOF
    context.security_1 = '512100.SH'  # 中证1000ETF代码
    context.security_2 = '161716.SZ'  # 假设招商双债LOF代码为161716.SZ
    # 回测区间、初始资金、运行频率请在右上方设置

# 每日开盘前9:00被调用一次,用于储存自定义参数、全局变量,执行盘前选股等
def before_trading(context):
    # 获取日期
    date = get_datetime().strftime('%Y-%m-%d %H:%M:%S')
    # 打印日期
    log.info('{} 盘前运行'.format(date))

# 开盘时运行函数
def handle_bar(context, bar_dict):
    # 获取时间
    time = get_datetime().strftime('%Y-%m-%d %H:%M:%S')
    # 打印时间
    log.info('{} 盘中运行'.format(time))

    # 获取当前日期的月份
    current_month = get_datetime().month

    # 获取当前账户持仓股票列表
    stocklist = list(context.portfolio.stock_account.positions)

    # 如果当前月份是2月
    if current_month == 2:
        log.info("当前月份是2月,检查是否满仓中证1000ETF")
        # 如果未满仓中证1000ETF,则清仓并买入中证1000ETF
        if context.security_1 not in stocklist or len(stocklist) > 1:
            log.info("未满仓中证1000ETF,清仓并买入中证1000ETF")
            # 先清仓所有持仓
            for stock in stocklist:
                order_target(stock, 0)
            # 然后全仓买入中证1000ETF
            order_target_percent(context.security_1, 1)
        else:
            log.info("已满仓中证1000ETF,保持不动")

    # 如果当前月份不是2月
    else:
        log.info("当前月份不是2月,检查是否满仓招商双债LOF")
        # 如果未满仓招商双债LOF,则清仓并买入招商双债LOF
        if context.security_2 not in stocklist or len(stocklist) > 1:
            log.info("未满仓招商双债LOF,清仓并买入招商双债LOF")
            # 先清仓所有持仓
            for stock in stocklist:
                order_target(stock, 0)
            # 然后全仓买入招商双债LOF
            order_target_percent(context.security_2, 1)
        else:
            log.info("已满仓招商双债LOF,保持不动")

# 收盘后运行函数,用于储存自定义参数、全局变量,执行盘后选股等
def after_trading(context):
    # 获取时间
    time = get_datetime().strftime('%Y-%m-%d %H:%M:%S')
    # 打印时间
    log.info('{} 盘后运行'.format(time))
    log.info('一天结束')

结果年化9% (17年-25年) 还是可以的
在这里插入图片描述

综合分析

策略优势:
策略的总收益和年化收益率都非常高,表明策略在市场整体表现不佳的情况下,仍然能够实现显著的超额收益。
策略的波动率较低,最大回撤可控,表明策略在风险控制方面表现较好。
策略的Sharpe比率较高,说明在承担单位风险时,能够获得较高的回报。
潜在问题:
Alpha值较低,表明策略的超额收益并不显著,可能需要进一步优化。
Sortino比率较低,表明策略在控制下行风险方面表现一般。
胜率较低(35%),表明策略的盈利交易比例较低,可能需要优化交易信号的准确性。
改进建议:
优化交易信号:提高胜率,减少亏损交易的比例。
增强风险控制:进一步降低下行风险,提高Sortino比率。
调整策略逻辑:如果策略与基准相关性较低(低Beta),可以考虑增加对市场趋势的敏感性,以提高Alpha值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

鸭梨山大哎

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值