跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客GitHub 精选镜像AI 生图工具UI配色美学隐私政策关于联系
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
PythonAI算法

基于 Python 的轻量级 AI 量化交易系统实现

基于 Python 构建轻量级 AI 量化交易系统,涵盖数据获取、特征工程、LightGBM 模型训练及事件驱动回测框架。系统利用 ccxt 接口对接交易所,集成技术指标与情绪代理特征,通过风控模块管理回撤与仓位。模拟结果显示策略具备一定夏普比率,适合学习量化交易流程与 AI 模型在金融时序数据中的应用。

SparkGeek发布于 2026/3/23更新于 2026/7/2343 浏览

基于 Python 的轻量级 AI 量化交易系统实现

┌-------------┐    ┌-------------┐    ┌-------------┐    ┌-------------┐
│  数据层      │───▶│  特征工程   │───▶│  模型层     │───▶│  执行层     │
│             │    │             │    │             │    │             │
│ ① REST/WebSocket │ ② 技术指标 + 情绪 │ ③ LightGBM  │ ④ 现货/合约报单 │
│ 历史 + 实时   │    │ 时序交叉特征  │    │ 二分类/回归  │    │ 风控 + 仓位 + 滑点 │
└-------------┘    └-------------┘    └-------------┘    └-------------┘

环境准备

依赖版本一键安装
Python3.10+conda create -n ai_quant python=3.10
ccxt4.2.xpip install ccxt
LightGBM4.xpip install lightgbm
ta0.10pip install ta
pandas/numpylatestpip install pandas numpy

提示:支持 Win/Mac/Linux;主流交易所均提供 REST 端点。

数据层:K 线数据获取

import ccxt, pandas as pd, time

def fetch_ohlcv(exchange='okx', symbol='BTC/USDT', timeframe='15m', limit=1000):
    ex = getattr(ccxt, exchange)({'hostname': 'okx.com'})
    ohlcv = ex.fetch_ohlcv(symbol, timeframe, limit=limit)
    df = pd.DataFrame(ohlcv, columns=['ts','open','high','low','close','vol'])
    df['ts'] = pd.to_datetime(df['ts'], unit='ms')
    return df

df = fetch_ohlcv()
print(df.tail())

特征工程:K 线特征提取

特征类别具体字段说明
基础价格return_1,return_5,return_151/5/15 根 K 线累收益
技术指标rsi_14,macd,atr_14ta 库一行代码
时序交叉ma_5/ma_30,macd_signal多周期共振
情绪代理vol_pct(成交量 5 日均比)放量突破信号
import ta
def add_feature(df):
    df = df.copy()
    df['ret'] = df['close'].pct_change()
    for i in [1,5,15]:
        df[f'ret_{i}'] = df['ret'].rolling(i).sum()
    df['rsi'] = ta.momentum.rsi(df['close'], 14)
    macd = ta.trend.MACD(df['close'])
    df['macd'] = macd.macd()
    df['atr'] = ta.volatility.AverageTrueRange(df['high'],df['low'],df['close']).average_true_range()
    df['vol_pct'] = df['vol']/df['vol'].rolling(5).mean()
    return df.dropna()

模型层:LightGBM 预测

目标:预测下一根 K 线涨跌(分类),或收益率(回归)。这里使用分类,胜率高且好调仓。

import lightgbm as lgb
from sklearn.model_selection import train_test_split

def build_label(df, horizon=1):
    df['label'] = (df['close'].shift(-horizon) > df['close']).astype(int)
    return df.dropna()

feature_cols = [c for c in df.columns if c not in ['ts','label','close']]
X, y = df[feature_cols], df['label']
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, shuffle=False)
clf = lgb.LGBMClassifier(n_estimators=300, max_depth=-1, learning_rate=0.05)
clf.fit(X_train, y_train, eval_set=[(X_test, y_test)], early_stopping_rounds=50, verbose=0)
print('AUC:', clf.best_score_['valid_0']['auc'])

回测:事件驱动框架

不依赖 backtrader,纯 pandas 向量化,高效回测。

class EventBacktest:
    def __init__(self, df, clf, initial=10_000, fee=0.0005):
        self.df = df
        self.clf = clf
        self.cash, self.pos = initial, 0.
        self.fee = fee
        self.records = []

    def run(self):
        for i, row in self.df.iterrows():
            if i < 200: continue  # 冷启动
            feat = row[feature_cols].values.reshape(1,-1)
            pred = self.clf.predict_proba(feat)[0,1]
            price = row['close']
            # 信号>0.55 满仓,<0.45 清仓
            if pred > 0.55 and self.pos == 0:
                self.pos = (self.cash * 0.99) / price
                self.cash -= self.pos * price * (1+self.fee)
                self.records.append(('buy', price, self.pos, self.cash))
            elif pred < 0.45 and self.pos > 0:
                self.cash += self.pos * price * (1-self.fee)
                self.records.append(('sell', price, 0, self.cash))
                self.pos = 0
            # 强平
            if self.pos > 0:
                price = self.df['close'].iloc[-1]
                self.cash += self.pos * price * (1-self.fee)
        return self.cash

bt = EventBacktest(df, clf)
final = bt.run()
print('最终净值:', final)

风控模块:资金管理

规则参数触发动作
最大回撤10%暂停交易 24h
单日亏损5%降半仓
连续亏损次数3强制冷静期

代码可直接嵌入 EventBacktest 中。

实盘部署:交易所对接

  • 使用 ccxt 统一接口,现货/合约切换只需改一行 symbol
  • 采用'异步心跳 + 队列'模式,降低滑点
  • 支持'测试网'一键切换,低成本验证策略
def place_order(ex, symbol, side, amount, price=None, type_='market'):
    if price: type_ = 'limit'
    return ex.create_order(symbol, type_, side, amount, price)

结果展示:模拟回测

指标数值
初始资金100 USDT
期末净值128.4 USDT
最大回撤6.2%
胜率58.7%
夏普2.1(无风险利率 0)

后续优化方向

  1. 引入限价簿 + 成交切片做高频特征
  2. 采用强化学习动态调仓位
  3. 多币种协整套利池化

目录

  1. 基于 Python 的轻量级 AI 量化交易系统实现
  2. 环境准备
  3. 数据层:K 线数据获取
  4. 特征工程:K 线特征提取
  5. 模型层:LightGBM 预测
  6. 回测:事件驱动框架
  7. 风控模块:资金管理
  8. 实盘部署:交易所对接
  9. 结果展示:模拟回测
  10. 后续优化方向
  • 免费图片AI生成工具免费生成了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 免费图片视频在线生成30秒,将你的创意变成现实开始设计
  • X/Twitter免费视频下载器免登陆无限额度免费视频解析下载了解详情
  • 100+免费在线小游戏爽一把
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • Python 环境安装与配置 Gurobi 求解器
  • Python 数据采集与处理实战:从网络爬虫到 Excel 存储
  • llama.cpp 与 llama-server 安装部署验证
  • VSCode Copilot 无法登录原因分析及快速恢复指南
  • 网络安全基础与黑客技术入门知识详解
  • ROS2 slam_toolbox 雷达建图配置指南
  • Midscene.js跨语言调用教程:Python与Java SDK集成
  • 基于 OpenClaw 和飞书搭建 7x24 小时服务器运维机器人
  • Python GIL 深度解析:原理、实现与优化策略
  • 机器人脑部药物递送三大技术路径的可转化性分析研究
  • Transformer 架构详解与大模型应用实战指南
  • ComfyUI-Manager 插件管理工具与 AI 绘画环境搭建
  • Xilinx 7 系列 FPGA 在线升级调试枢纽模块解析
  • OpenClaw 对接 QQ 机器人:本地及腾讯云部署方案
  • 宇树 Unitree 机器人 ROS 2 Humble 环境部署指南 (Go2/B2/H1)
  • STL 标准模板库 string 类详解
  • 用 Claude Code 和 Python 搭建内容创作流水线:灵感捕捉、生成与审查
  • 国自然基金年度计划与预期成果撰写指南
  • 使用 Docker 部署 Ollama 与 Open-WebUI 本地大模型教程
  • C++ STL 容器适配器:优先队列 priority_queue 原理与实现

相关免费在线工具

  • 加密/解密文本

    使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online

  • RSA密钥对生成器

    生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online

  • Mermaid 预览与可视化编辑

    基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online

  • 随机西班牙地址生成器

    随机生成西班牙地址(支持马德里、加泰罗尼亚、安达卢西亚、瓦伦西亚筛选),支持数量快捷选择、显示全部与下载。 在线工具,随机西班牙地址生成器在线工具,online

  • Gemini 图片去水印

    基于开源反向 Alpha 混合算法去除 Gemini/Nano Banana 图片水印,支持批量处理与下载。 在线工具,Gemini 图片去水印在线工具,online

  • curl 转代码

    解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online