量化交易基础:核心概念、策略回测框架与夏普比率

各位同学,欢迎来到第二章。今天咱们聊聊量化交易的基础。说实话,很多人一上来就追求复杂的模型,结果连最基础的东西都没搞明白。我个人习惯是,先把地基打牢,再往上盖楼。

量化交易的核心概念

量化交易,说白了就是用数学模型和计算机程序来做交易决策。它不是玄学,而是把交易逻辑变成可执行的代码。

几个核心概念,我一个个说:

  • 策略:你的交易逻辑。比如“当5日均线上穿20日均线时买入”。
  • 信号:策略触发的具体指令。买入、卖出、持仓不动。
  • 头寸:你持有的资产数量。100股茅台,还是10手螺纹钢。
  • 滑点:理论成交价和实际成交价的差异。嗯,这里要注意,滑点往往是策略实盘跑偏的元凶。
  • 手续费:交易成本。别小看它,高频策略里手续费能吃掉大部分利润。

我在项目中遇到过一件事:有个同事写了个看起来很美的策略,回测年化收益30%。结果一上实盘,直接亏成狗。为什么?因为他没考虑滑点和手续费。你想想看,回测里每次都能以理想价格成交,现实中哪有这种好事?

重要提醒:量化交易的核心不是预测未来,而是管理风险和收益的平衡。预测对了不一定赚钱,预测错了也不一定亏钱,关键看你怎么管理头寸和风险。

策略回测框架

回测,就是拿历史数据模拟你的策略表现。我建议每个量化交易者都要有自己的回测框架。为什么?因为市面上的框架虽然多,但真正理解底层逻辑的没几个。

一个完整的回测框架,至少包含这几个模块:

  1. 数据模块:获取和处理历史行情数据。包括价格、成交量、财务数据等。
  2. 策略模块:实现你的交易逻辑。这里要写清楚买入和卖出的条件。
  3. 执行模块:模拟交易过程。考虑滑点、手续费、资金限制等。
  4. 绩效模块:计算策略的各项指标。收益率、最大回撤、夏普比率等。

我曾经踩过一个坑:用了一个第三方回测框架,结果发现它的滑点模型是固定的,根本不适用于我的高频策略。后来我干脆自己写了一个。虽然费时间,但至少心里有底。

下面是一个简单的回测框架代码示例,用Python写的:

import pandas as pd
import numpy as np

class SimpleBacktester:
    def __init__(self, data, initial_capital=100000):
        self.data = data
        self.capital = initial_capital
        self.position = 0
        self.trades = []
    
    def run_strategy(self, strategy_func):
        for i in range(1, len(self.data)):
            signal = strategy_func(self.data.iloc[:i])
            if signal == 1 and self.position == 0:
                # 买入
                self.position = self.capital / self.data.iloc[i]['close']
                self.capital = 0
                self.trades.append(('buy', self.data.index[i], self.data.iloc[i]['close']))
            elif signal == -1 and self.position > 0:
                # 卖出
                self.capital = self.position * self.data.iloc[i]['close']
                self.position = 0
                self.trades.append(('sell', self.data.index[i], self.data.iloc[i]['close']))
    
    def get_performance(self):
        # 计算最终资产
        final_asset = self.capital + self.position * self.data.iloc[-1]['close']
        return final_asset

这个框架虽然简单,但核心逻辑都在了。你可以在它的基础上加滑点、手续费、多品种等。

夏普比率:定义与计算

夏普比率,是衡量策略风险调整后收益的指标。说白了,就是看你每承担一单位风险,能换来多少超额收益。

公式长这样:

夏普比率 = (策略收益率 - 无风险利率) / 策略收益率的标准差

举个例子:

  • 策略年化收益率:20%
  • 无风险利率:3%(比如国债收益率)
  • 策略年化波动率:15%
  • 夏普比率 = (20% - 3%) / 15% = 1.13

夏普比率大于1,说明策略还不错。大于2,那就是优秀了。我曾经见过一个高频策略,夏普比率做到了3.5,但那是极少数。

小技巧:计算夏普比率时,注意频率要一致。如果你用日收益率算,年化时要乘以根号252(一年约252个交易日)。别搞混了。

下面是一个计算夏普比率的Python函数:

def calculate_sharpe_ratio(returns, risk_free_rate=0.03, periods_per_year=252):
    """
    计算夏普比率
    :param returns: 收益率序列(pandas Series)
    :param risk_free_rate: 年化无风险利率
    :param periods_per_year: 每年周期数(日数据用252,周数据用52)
    :return: 年化夏普比率
    """
    excess_returns = returns - risk_free_rate / periods_per_year
    sharpe = np.sqrt(periods_per_year) * excess_returns.mean() / returns.std()
    return sharpe

为什么夏普比率这么重要?因为它能帮你区分“运气”和“实力”。

举个例子:策略A年化收益50%,但最大回撤40%;策略B年化收益20%,但最大回撤只有5%。你选哪个?

我建议你算算夏普比率。策略A的波动率可能很高,夏普比率反而不如策略B。在实盘中,高波动率的策略很容易让人心态崩掉,拿不住单子。

注意:夏普比率也有局限性。它假设收益率是正态分布的,但实际金融市场中,极端行情(黑天鹅)发生的概率远高于正态分布。所以,别只看夏普比率,还要结合最大回撤、卡玛比率等指标一起看。

本章知识体系

下面我用一张SVG图来展示本章的核心逻辑,方便你理解各个概念之间的关系:

量化交易基础核心逻辑 核心概念 策略 信号 头寸 滑点 / 手续费 回测框架 数据模块 策略模块 执行模块 绩效模块 夏普比率 风险调整收益 超额收益 / 波动 评估策略优劣 三者关系 核心概念是基础,告诉你量化交易是什么 回测框架是工具,帮你验证策略是否有效 夏普比率是标尺,衡量策略的风险收益性价比 三者缺一不可,共同构成量化交易的核心闭环

这张图把本章的三个核心模块串起来了。你想想看,没有核心概念,你连策略都写不出来;没有回测框架,你没法验证策略;没有夏普比率,你分不清策略好坏。三者缺一不可。

好了,这一章的内容就到这里。记住,量化交易不是魔法,而是科学。把基础打牢,后面的路才能走稳。


公众号:蓝海资料掘金营,微信deep3321