量化交易入门笔记-策略回测与评估

本文介绍了量化交易的基础,包括编写简单的双均线策略,理解Bar概念,以及详细探讨了风险指标,如Alpha、Beta、Sharpe比率、Sortino比率、Information Ratio、Volatility和Max Drawdown,帮助读者深入理解策略评估。
摘要由CSDN通过智能技术生成

首先,编写一个简单的“双均线量化策略”

代码如下:

def initialize(context):
    """双均线量化策略的初始化函数"""
    
    # 定义一个局部变量,保存要操作的股票
    g.security = '000002.XSHE'  # 万科A
    # 设定沪深300作为基准
    set_benchmark('000300.XSHG')
    # 开启动态复权,使用真实价格交易
    set_option('use_real_price', True)
    # 设定成交量比例
    set_option('order_volume_ratio', 1)
    # 股票类交易手续费:买入时佣金的万分之三,卖出时ew佣金的万分之三加
    # 千分之一的印花税,每笔交易佣金最低扣5元钱
    set_order_cost(OrderCost(open_tax=0,
        close_tax=0.001,
        open_commission=0.0003,
        close_commission=0.0003,
        close_today_commission=0, 
        min_commission=5), type='stock')
    # 运行函数
    run_daily(trade, 'every_bar')
    
    
def trade(context):
    """双均线量化策略的交易程序函数"""
    
    security = g.security
    # 设定均线
    n1 = 5
    n2 = 10
    # 获取股票的收盘价
    close_data = attribute_history(
        security=security, 
        count=n2+2, 
        unit='1d', 
        fields=['close'], 
        df=True)
    # 取得过去 ma_n1 天的平均价格
    ma_n1 = close_data['close'][-n1:].mean()
    # 取得过去 ma_n2 天的平均价格
    ma_n2 = close_data['close'][-n2:].mean()
    # 取得当前的现金
    cash = context.portfolio.cash
    # 如果当前有余额,并且 n1 日无线大于 n2 日无线
    if ma_n1 > ma_n2:
        # 用所有 cash 买入股票
        order_value(security, cash)
        # 记录这次买入
        log.info('Buying %s' % (security))
    # 如果 n1 日无线小于 n2 日无线,并且目前有头寸    
    elif ma_n1 < ma_n2 and context.portfolio.positions[security].closeable_amount > 0:
        # 全部卖出
        order_target(security, 0)
        # 记录这次卖出
        log.info('Selling %s' % (security))
    # 绘制 n1 日均线价格
    record(ma_n1=ma_n1)
    # 绘制 ma_n2 日均线价格
    record(ma_n2=ma_n2)

然后设置回测的开始时间、结束时间、回测资金和回测频率,点击“运行回测”

回测结果如下:

了解Bar的概念

一根完整的K线相当于一个Bar,根据时间序列的不同,有分钟Bar、小时Bar、日Bar等

当选择“每天”频率时,算法在每根日线Bar上都会运行一次,即每天运行一次

同理,选择“分钟”频率时,算法会在每根分钟Bar上运行一次,即每分钟运行一次

了解量化策略的风险指标

一个策略的好坏,可以能过以下几个指标来判断

风险指标有利于投资者对策略进行客观的评价。需要注意的是,无论是回测还是模拟,所有风险指标都只会根据每天收盘后的收益计算并每天更新一次,并不会考虑盘中的收益情况

Alpha(阿尔法)

意义:

投资中面临着系统性风险(即Beta)和非系统性风险(即Alpha),Alpha是投资者获得与市场波动无关的回报。比如投资者获得了15%的回报,其基准获得了10%的回报,那么Alpha或者价值增值部分就是5%

公式:
A l p h a = α = R p − [ R f + β p ( R m − R f ) ] Alpha = α = R_p - [R_f + β_p(R_m - R_f)] Alpha=α=Rp[R

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值