Skip to content

用Python轻松实战IBS量化交易策略,捕捉市场先机!(附源码)

作者:老余捞鱼

原创不易,转载请标明出处及原作者。

写在前面的话:在这篇文章中,我将详细讲解如何使用Python实现内部条形强度(IBS)交易策略,并进行实战回测。通过对市场数据的深入分析,我发现该策略在特定市场条件下表现出色,不仅收益稳健,风险也在可控范围内。如果你对量化交易感兴趣,这篇文章将帮助你快速上手并优化这一策略。

一、什么是 IBS 策略 ?

Internal Bar Strength (IBS) 是一种技术分析交易策略,旨在通过分析价格行为来识别潜在的交易机会。该策略主要基于价格的内部条形图(即K线)强度,帮助交易者判断市场的强弱以及可能的反转点。

1.1 如何计算 IBS?

IBS是通过比较当前K线的收盘价与其最高价和最低价来评估市场的强度。其计算方式如下:

  • 选择时间框架:首先,选择一个适合的时间框架(如日线、小时线等)。
  • 获取K线数据:收集当前K线的最高价、最低价和收盘价。
  • 应用公式:将收盘价、最高价和最低价代入IBS公式进行计算。

具体来说,IBS公式为:

IBS = (Close - Low) / (High - Low)

1.2 IBS的应用

交易前提很简单:

  • 买入信号:当IBS值接近1时,表明市场强劲,可能是一个买入信号。
  • 卖出信号:当IBS值接近0时,表明市场疲软,可能是一个卖出信号。

在使用IBS策略时,我们还应结合其他技术指标(如移动平均线、相对强弱指数等)进行确认,以降低风险。此外,设置止损和止盈点也是保护资本的重要措施。

二、技术实现

我们将用Python实现下面几个核心模块,实现后的图形分析效果如下:

现在对代码逐步展开分析。

2.1 数据处理和策略设置

代码从导入基础库和构建完整的指标计算功能起步:

import yfinance as yf
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from scipy import stats
from typing import Dict, Tuple

def calculate_metrics(returns: pd.Series) -> Dict:
    """
    Calculate comprehensive trading metrics
    """
    # Basic return metrics
    total_return = (returns + 1).cumprod().iloc[-1] - 1
    annual_return = (1 + total_return) ** (252/len(returns)) - 1

    # Risk metrics
    daily_vol = returns.std()
    annual_vol = daily_vol * np.sqrt(252)
    sharpe_ratio = np.sqrt(252) * returns.mean() / daily_vol if daily_vol != 0 else 0

    # Drawdown analysis corregida
    cum_returns = (1 + returns).cumprod()
    running_max = np.maximum.accumulate(cum_returns)
    drawdown = (cum_returns - running_max) / running_max
    max_drawdown = drawdown.min()

    # Win rate analysis
    winning_days = returns[returns > 0]
    losing_days = returns[returns < 0]
    win_rate = len(winning_days) / len(returns[returns != 0])

代码释义:

  • 下载和准备市场数据
  • 计算 IBS 并生成交易信号
  • 计算全面的性能指标

2.2 信号生成

信号生成是策略核心:

data["IBS"] = (data["Close"] - data["Low"]) / (data["High"] - data["Low"])
data["Signal"] = np.where(data["IBS"] <= low_threshold, 1, 0)
data["Signal"] = np.where(data["IBS"] >= high_threshold, -1, data["Signal"])

代码释义:

  • 当 IBS 低于低阈值 (0.10) 时,发出长信号 (1)
  • 当 IBS 升至我们的高临界值 (0.95) 以上时,发出做空信号 (-1)
  • 当 IBS 位于阈值之间时,处于中性位置 (0)

2.3 源代码下载

源代码请从我的Google Colab中申请下载:
https://colab.research.google.com/drive/1e2SHqZPIh4wsiz2cl0o4W9a4C-O9moJD?usp=sharing

三、策略绩效分析

从 2015 年到 2025 年的$QQQ指数基金回测结果来看,我们发现了几个有趣的指标:

Detailed Strategy Analysis:
--------------------------------------------------
Total Return: 102.38
Annual Return: 7.28
Annual Volatility: 15.36
Sharpe Ratio: 0.53
Sortino Ratio: 0.61
Max Drawdown: -23.55
Win Rate: 49.33
Profit Factor: 1.16
Number of Trades: 1119.00
Best Month: 73.62
Worst Month: -6.55
Average Monthly Return: 0.78
Monthly Return Std: 7.33

Monthly Analysis:
--------------------------------------------------
Profitable Months: 64 out of 121
Average Monthly Return: 0.78%
Monthly Return Std: 7.33%

这份策略报告显示$QQQ的投资策略年化收益达7.28%,具有中等的长期回报。而夏普比率表现优异,风险可控。虽然最大回撤和波动性较高,但整体回报和盈利因子表明策略在长期内是可行的。

四、观点总结

本文主要介绍了内部条形图强度(IBS)交易策略的Python实现与分析,并通过对$QQQ从2015年到2025年的回溯测试,展示了该策略的性能指标。

  • 简单的量化交易策略往往最为稳健,IBS策略虽然概念简单,但在适当实施风险管理和全面分析的情况下,能够取得显著的交易结果。
  • IBS指标是一种均值回复工具,用于衡量资产收盘价相对于当日区间的位置,以此来判断市场可能的超买或超卖状态。
  • 策略实施需要注意信号生成,通过设定的阈值来决定何时进入或退出市场。
  • 绩效分析显示了IBS策略的多项指标,包括但不限于总回报、年化回报、年化波动率、夏普比率、索提诺比率、最大回撤、胜率和利润因子等,这些指标有助于评估策略的风险与回报。
  • 月度分析提供了更细致的策略表现信息,如盈利月份的数量、平均月度回报和月度回报的标准差。
  • 交易策略需要不断地监控和调整,以适应市场变化,确保策略的持续有效性。
  • 过去的交易表现并不能保证未来的结果,因此任何交易策略都应该在实际执行前进行充分的测试和验证。

感谢您阅读到最后,希望这篇文章为您带来了新的启发和实用的知识!如果觉得有帮助,请不吝点赞和分享,您的支持是我持续创作的动力。祝您投资顺利,收益长虹!如果对文中内容有任何疑问,欢迎留言,我会尽快回复!


本文内容仅限技术探讨和学习,不构成任何投资建议。

Published inAI&Invest专栏

Be First to Comment

    发表回复