当前位置:首页>python>量化交易实战:用 Python 构建 ETF 分析与策略回测系统

量化交易实战:用 Python 构建 ETF 分析与策略回测系统

  • 2026-02-07 23:21:29
量化交易实战:用 Python 构建 ETF 分析与策略回测系统

欢迎加入专注于财经数据与量化投研的【数据科学实战】知识星球!在这里,您将获取持续更新的《财经数据宝典》和《量化投研宝典》,这两部宝典相辅相成,为您在量化投研道路上提供明确指引。 我们提供了精选的国内外量化投研的 250+ 篇高质量文章,并每日更新最新研究成果,涵盖策略开发、因子分析、风险管理等核心领域。 无论您是量化投资新手还是经验丰富的研究者,星球社区都能帮您少走弯路,事半功倍,共同探索数据驱动的投资世界!

引言

你是否想过,华尔街的量化交易员是如何用算法在市场中寻找盈利机会的?今天,我将带你深入一个完整的量化交易项目——从 ETF 市场分析到策略回测,手把手教你用 Python 构建自己的量化交易工具包。

这个项目涵盖了三大核心功能:市场探索与分析、危机对冲策略(Crisis Alpha)、以及策略回测与模拟。无论你是量化交易新手还是想要提升技能的开发者,这篇文章都能让你收获满满。

一、项目概览:我们要做什么?

这个量化交易框架主要解决三个问题:

  1. 市场探索与分析:了解 ETF 的资产分布、费用、收益率和流动性
  2. 战略对冲:找到在市场崩盘时能保护投资组合的资产
  3. 策略回测:验证交易策略在历史数据上的表现

二、环境配置:搭建你的量化实验室

首先,我们需要配置 Python 环境并导入必要的库:

# 启用内联绘图,让图表直接显示在 Notebook 中
%matplotlib inline

import numpy as np  # 数值计算库
import pandas as pd  # 数据处理库
from pandas.io.data import DataReader  # 数据读取器
from datetime import datetime  # 日期时间处理
import matplotlib as mpl
import matplotlib.pyplot as plt

# 导入在线投资组合选择库
import universal as up
from universal import tools
from universal import algos

# 配置日志,方便追踪算法运行状态
import logging
logging.basicConfig(format='%(asctime)s %(message)s', level=logging.DEBUG)

# 调整图表大小和样式
mpl.rcParams['figure.figsize'] = (1610)  # 增大图表尺寸
mpl.rcParams['legend.fontsize'] = 12# 图例字体大小
mpl.rcParams['lines.linewidth'] = 1# 线条宽度

为什么要记录版本信息? 这是一个好习惯,能确保实验的可重复性:

import sys
print('Python: ' + sys.version)  # 打印 Python 版本
print('Pandas: ' + pd.__version__)  # 打印 Pandas 版本

import pkg_resources
print('universal-portfolios: ' + pkg_resources.get_distribution("universal-portfolios").version)

三、数据加载:获取 ETF 历史数据

我们使用 2005-2012 年的数据进行训练,2013-2014 年的数据进行测试:

# 定义 ETF 组合(斯文森配置)
etfs = ['VTI''EFA''EEM''TLT''TIP''VNQ']

# 斯文森资产配置比例
# VTI: 美国全市场 30%,EFA: 发达市场 15%,EEM: 新兴市场 10%
# TLT: 长期国债 15%,TIP: 通胀保护债券 15%,VNQ: 房地产 15%
swensen_allocation = [0.30.150.10.150.150.15]

# 基准指数
benchmark = ['SPY']

# 设置训练和测试时间段
train_start = datetime(200511)
train_end = datetime(20121231)
test_start = datetime(201311)
test_end = datetime(20141231)

# 从 Yahoo Finance 加载数据
train = DataReader(etfs, 'yahoo', start=train_start, end=train_end)['Adj Close']
test = DataReader(etfs, 'yahoo', start=test_start, end=test_end)['Adj Close']
train_b = DataReader(benchmark, 'yahoo', start=train_start, end=train_end)['Adj Close']
test_b = DataReader(benchmark, 'yahoo', start=test_start, end=test_end)['Adj Close']

关键点解析:

  • 使用 Adj Close(调整后收盘价)是因为它已经考虑了股息和拆股的影响
  • 训练集和测试集分开是为了避免"未来函数"问题,确保回测的真实性

四、数据可视化:归一化价格对比

将所有 ETF 的价格归一化到同一起点,方便对比表现:

# 归一化价格:将每个 ETF 的价格除以其初始价格
# 这样所有 ETF 都从 1 开始,便于比较相对收益
ax1 = (train / train.iloc[0, :]).plot()
(train_b / train_b.iloc[0, :]).plot(ax=ax1)

五、OLPS 算法对比:14 种策略大比拼

这是整个项目的核心——对比多种在线投资组合选择(OLPS)算法:

# 定义所有要对比的算法
olps_algos = [
    algos.Anticor(),      # 反相关策略
    algos.BAH(),          # 买入并持有
    algos.BCRP(),         # 最优固定再平衡组合(事后最优)
    algos.BNN(),          # 贝叶斯近邻
    algos.CORN(),         # 相关驱动策略
    algos.CRP(b=swensen_allocation),  # 固定权重再平衡(斯文森配置)
    algos.CWMR(),         # 置信加权均值回归
    algos.EG(),           # 指数梯度
    algos.Kelly(),        # 凯利准则
    algos.OLMAR(),        # 在线移动平均回归
    algos.ONS(),          # 在线牛顿步
    algos.PAMR(),         # 被动攻击均值回归
    algos.RMR(),          # 鲁棒均值回归
    algos.UP()            # 万能组合
]

算法分类解读:

  • 基准策略:BAH(买入持有)、BCRP(理论最优)、CRP(固定再平衡)
  • 均值回归类:OLMAR、PAMR、RMR、CWMR——假设价格会回归均值
  • 动量/趋势类:EG、Kelly——跟随近期表现好的资产
  • 模式匹配类:CORN、BNN——寻找历史上的相似模式

六、创建结果表格并运行回测

# 获取算法名称列表
algo_names = [a.__class__.__name__ for a in olps_algos]

# 定义要记录的数据列
algo_data = ['algo''results''profit''sharpe''information'
'annualized_return''drawdown_period''winning_pct']
metrics = algo_data[2:]  # 只取性能指标列

# 创建训练集结果表格
olps_train = pd.DataFrame(index=algo_names, columns=algo_data)
olps_train.algo = olps_algos

# 运行所有算法(这一步可能需要几分钟)
for name, alg in zip(olps_train.index, olps_train.algo):
    olps_train.loc[name, 'results'] = alg.run(train)

七、添加交易费用:让回测更真实

真实交易中,每笔交易都有成本。我们设置 0.1% 的交易费用:

# 设置交易费用:每 1000 美元交易支付 1 美元
for k, r in olps_train.results.items():
    r.fee = 0.001# 0.1% 的交易费用

八、性能统计函数

定义一个函数来计算各种性能指标:

defolps_stats(df):
"""
    计算并填充 OLPS 算法的性能统计指标

    参数:
        df: 包含算法结果的 DataFrame
    返回:
        填充了性能指标的 DataFrame
    """

for name, r in df.results.items():
        df.loc[name, 'profit'] = r.profit_factor        # 盈利因子
        df.loc[name, 'sharpe'] = r.sharpe               # 夏普比率
        df.loc[name, 'information'] = r.information     # 信息比率
        df.loc[name, 'annualized_return'] = r.annualized_return * 100# 年化收益率(%)
        df.loc[name, 'drawdown_period'] = r.drawdown_period  # 最大回撤周期
        df.loc[name, 'winning_pct'] = r.winning_pct * 100# 胜率(%)
return df

# 计算统计指标并按盈利排序
olps_stats(olps_train)
olps_train[metrics].sort_values('profit', ascending=False)

九、深入研究 OLMAR 策略

OLMAR(在线移动平均回归)是一个值得深入研究的策略。我们可以测试不同的参数组合:

# 测试不同的窗口期参数
train_olmar = algos.OLMAR.run_combination(
    train, 
    window=[351015],  # 测试 3、5、10、15 日窗口
    eps=10# 阈值参数
)
train_olmar.plot()  # 绘制结果对比图

# 查看详细统计
print(train_olmar.summary())

OLMAR 工作原理:

  1. 计算每个资产的移动平均价格
  2. 预测价格会向移动平均回归
  3. 增加低于移动平均的资产权重,减少高于的
  4. 通过投影确保权重合法(非负且和为 1)

十、OLMAR vs CRP 对比

比较 OLMAR 与固定再平衡策略的表现:

# 选择最佳 OLMAR 配置
best_olmar = train_olmar[1]

# 绘制对比图
ax1 = best_olmar.plot(
    ucrp=True,   # 显示均匀 CRP 基准
    bah=True,    # 显示买入持有基准
    weights=False,
    assets=False,
    portfolio_label='OLMAR'
)

# 叠加 CRP 策略结果
olps_train.loc['CRP'].results.plot(
    ucrp=False,
    bah=False,
    weights=False,
    assets=False,
    ax=ax1[0],
    portfolio_label='CRP'
)

十一、收益分解分析

了解每个 ETF 对投资组合收益的贡献:

# 绘制收益分解图(对数坐标)
best_olmar.plot_decomposition(legend=True, logy=True)

# 绘制收益分解图(线性坐标)
best_olmar.plot_decomposition(legend=True, logy=False)

分解图告诉我们什么?

  • 哪些 ETF 贡献了主要收益
  • 收益是来自广泛分散还是集中在少数资产
  • 不同时期的收益来源变化

十二、剔除最赚钱的资产:稳健性测试

验证策略是否过度依赖某一个资产:

# 找出贡献最大的资产
most_profitable = best_olmar.equity_decomposed.iloc[-1].argmax()

# 在剔除该资产后重新运行算法
result_without = algos.OLMAR().run(train.drop([most_profitable], axis=1))

# 打印结果并绘图
print(result_without.summary())
result_without.plot(
    weights=False,
    assets=False,
    bah=True,
    ucrp=True,
    logy=True,
    portfolio_label='OLMAR (剔除最佳资产)'
)

十三、SPY 与 TLT 的简化组合

用两个 ETF 展示 OLMAR 的工作方式:

# 加载 SPY(股票)和 TLT(债券)数据
spy_tlt_data = DataReader(
    ['SPY''TLT'],
'yahoo',
    start=datetime(201011)
)['Adj Close']

# 运行 OLMAR
spy_tlt_olmar = algos.OLMAR().run(spy_tlt_data)
spy_tlt_olmar.plot(
    assets=True,   # 显示资产价格
    weights=True,  # 显示权重变化
    ucrp=True,
    bah=True,
    portfolio_label='OLMAR'
)

# 与 70/30 固定配置对比
spy_tlt_crp = algos.CRP(b=[0.70.3]).run(spy_tlt_data)

十四、行业 ETF 分析

将策略应用到 9 个行业 ETF:

# 定义行业 ETF 列表
sectors = [
'XLY',  # 可选消费
'XLF',  # 金融
'XLK',  # 科技
'XLE',  # 能源
'XLV',  # 医疗保健
'XLI',  # 工业
'XLP',  # 必需消费
'XLB',  # 材料
'XLU'# 公用事业
]

# 加载行业 ETF 数据
train_sectors = DataReader(sectors, 'yahoo'
                          start=train_start_2010, 
                          end=train_end_2010)['Adj Close']

# 运行 OLMAR
train_olmar_sectors = algos.OLMAR().run(train_sectors)
train_olmar_sectors.plot(
    assets=True,
    weights=False,
    ucrp=True,
    bah=True,
    portfolio_label='OLMAR'
)

十五、核心发现与实战建议

通过这个项目,我们得到了以下重要发现:

1. 交易费用的影响巨大

  • 无费用时表现优异的策略,加入 0.1% 费用后夏普比率可能下降一半
  • OLMAR 等高频再平衡策略受费用影响更大

2. 参数选择很重要

  • OLMAR 的最优参数:window=5,eps=5
  • 不同市场环境可能需要不同参数

3. 单一资产依赖风险

  • 2008 年后 VNQ(房地产)成为主要收益来源
  • 需要进行稳健性测试,剔除最佳资产后策略是否仍然有效

4. Kelly 策略的风险

  • Kelly 策略在多个测试中表现不稳定,容易"崩溃"
  • 实际应用中需要谨慎使用或进行改进

总结

本文介绍了一个完整的量化交易框架,包括:

  1. 数据准备:获取和预处理 ETF 历史数据
  2. 算法对比:14 种 OLPS 算法的系统比较
  3. 性能评估:夏普比率、最大回撤、年化收益等指标
  4. 费用建模:考虑真实交易成本的影响
  5. 稳健性测试:验证策略的可靠性

量化交易的核心在于"用数据说话"。通过系统的回测和分析,我们可以在实盘之前发现策略的优缺点,避免踩坑。

记住:历史表现不代表未来收益,但科学的方法可以帮助我们做出更理性的决策。

参考文章

加入专注于财经数据与量化投研的知识星球【数据科学实战】,获取本文完整研究解析、代码实现细节。

财经数据与量化投研知识社区

核心权益如下:

  1. 赠送《财经数据宝典》完整文档,汇集多年财经数据维护经验
  2. 赠送《量化投研宝典》完整文档,汇集多年量化投研领域经验
  3. 赠送《PyBroker-入门及实战》视频课程,手把手学习量化策略开发
  4. 每日分享高质量量化投研文章(已更新 180+篇)、代码和相关资料
  5. 定期更新高频财经数据
  6. 参与年度不少于 10 次专属直播与录播课程
  7. 与核心开发者直接交流,解决实际问题
  8. 获取专业微信群交流机会和课程折扣

星球已有丰富内容积累,包括量化投研论文、财经高频数据、 PyBroker 视频教程、定期直播、数据分享和答疑解难。适合对量化投研和财经数据分析有兴趣的学习者及从业者。欢迎加入我们!

好文推荐

1. 用 Python 打造股票预测系统:Transformer 模型教程(一)

2. 用 Python 打造股票预测系统:Transformer 模型教程(二)

3. 用 Python 打造股票预测系统:Transformer 模型教程(三)

4. 用 Python 打造股票预测系统:Transformer 模型教程(完结)

5. 揭秘隐马尔可夫模型:因子投资的制胜武器

6. YOLO 也能预测股市涨跌?计算机视觉在股票市场预测中的应用

7. 金融 AI 助手:FinGPT 让你轻松掌握市场分析

8. 量化交易秘籍:为什么专业交易员都在用对数收益率?

9. Python 量化投资利器:Ridge、Lasso 和 Elastic Net 回归详解

10. 掌握金融波动率模型:完整 Python 实现指南

好书推荐

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-02-08 19:58:22 HTTP/2.0 GET : https://f.mffb.com.cn/a/461215.html
  2. 运行时间 : 0.527269s [ 吞吐率:1.90req/s ] 内存消耗:4,566.31kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=93334fec7117cb7a56241d874f7c0172
  1. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/public/index.php ( 0.79 KB )
  2. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/autoload.php ( 0.17 KB )
  3. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/autoload_real.php ( 2.49 KB )
  4. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/platform_check.php ( 0.90 KB )
  5. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/ClassLoader.php ( 14.03 KB )
  6. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/autoload_static.php ( 4.90 KB )
  7. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper.php ( 8.34 KB )
  8. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-validate/src/helper.php ( 2.19 KB )
  9. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/helper.php ( 1.47 KB )
  10. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/stubs/load_stubs.php ( 0.16 KB )
  11. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Exception.php ( 1.69 KB )
  12. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-container/src/Facade.php ( 2.71 KB )
  13. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/deprecation-contracts/function.php ( 0.99 KB )
  14. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/polyfill-mbstring/bootstrap.php ( 8.26 KB )
  15. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/polyfill-mbstring/bootstrap80.php ( 9.78 KB )
  16. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/var-dumper/Resources/functions/dump.php ( 1.49 KB )
  17. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-dumper/src/helper.php ( 0.18 KB )
  18. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/var-dumper/VarDumper.php ( 4.30 KB )
  19. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/App.php ( 15.30 KB )
  20. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-container/src/Container.php ( 15.76 KB )
  21. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/container/src/ContainerInterface.php ( 1.02 KB )
  22. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/provider.php ( 0.19 KB )
  23. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Http.php ( 6.04 KB )
  24. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper/Str.php ( 7.29 KB )
  25. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Env.php ( 4.68 KB )
  26. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/common.php ( 0.03 KB )
  27. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/helper.php ( 18.78 KB )
  28. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Config.php ( 5.54 KB )
  29. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/app.php ( 0.95 KB )
  30. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/cache.php ( 0.78 KB )
  31. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/console.php ( 0.23 KB )
  32. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/cookie.php ( 0.56 KB )
  33. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/database.php ( 2.48 KB )
  34. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/Env.php ( 1.67 KB )
  35. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/filesystem.php ( 0.61 KB )
  36. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/lang.php ( 0.91 KB )
  37. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/log.php ( 1.35 KB )
  38. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/middleware.php ( 0.19 KB )
  39. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/route.php ( 1.89 KB )
  40. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/session.php ( 0.57 KB )
  41. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/trace.php ( 0.34 KB )
  42. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/view.php ( 0.82 KB )
  43. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/event.php ( 0.25 KB )
  44. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Event.php ( 7.67 KB )
  45. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/service.php ( 0.13 KB )
  46. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/AppService.php ( 0.26 KB )
  47. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Service.php ( 1.64 KB )
  48. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Lang.php ( 7.35 KB )
  49. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/lang/zh-cn.php ( 13.70 KB )
  50. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/Error.php ( 3.31 KB )
  51. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/RegisterService.php ( 1.33 KB )
  52. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/services.php ( 0.14 KB )
  53. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/PaginatorService.php ( 1.52 KB )
  54. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/ValidateService.php ( 0.99 KB )
  55. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/ModelService.php ( 2.04 KB )
  56. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/Service.php ( 0.77 KB )
  57. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Middleware.php ( 6.72 KB )
  58. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/BootService.php ( 0.77 KB )
  59. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/Paginator.php ( 11.86 KB )
  60. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-validate/src/Validate.php ( 63.20 KB )
  61. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/Model.php ( 23.55 KB )
  62. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/Attribute.php ( 21.05 KB )
  63. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/AutoWriteData.php ( 4.21 KB )
  64. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/Conversion.php ( 6.44 KB )
  65. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/DbConnect.php ( 5.16 KB )
  66. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/ModelEvent.php ( 2.33 KB )
  67. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/RelationShip.php ( 28.29 KB )
  68. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/contract/Arrayable.php ( 0.09 KB )
  69. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/contract/Jsonable.php ( 0.13 KB )
  70. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/contract/Modelable.php ( 0.09 KB )
  71. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Db.php ( 2.88 KB )
  72. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/DbManager.php ( 8.52 KB )
  73. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Log.php ( 6.28 KB )
  74. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Manager.php ( 3.92 KB )
  75. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/log/src/LoggerTrait.php ( 2.69 KB )
  76. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/log/src/LoggerInterface.php ( 2.71 KB )
  77. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Cache.php ( 4.92 KB )
  78. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/simple-cache/src/CacheInterface.php ( 4.71 KB )
  79. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper/Arr.php ( 16.63 KB )
  80. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/cache/driver/File.php ( 7.84 KB )
  81. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/cache/Driver.php ( 9.03 KB )
  82. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/CacheHandlerInterface.php ( 1.99 KB )
  83. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/Request.php ( 0.09 KB )
  84. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Request.php ( 55.78 KB )
  85. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/middleware.php ( 0.25 KB )
  86. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Pipeline.php ( 2.61 KB )
  87. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/TraceDebug.php ( 3.40 KB )
  88. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/middleware/SessionInit.php ( 1.94 KB )
  89. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Session.php ( 1.80 KB )
  90. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/session/driver/File.php ( 6.27 KB )
  91. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/SessionHandlerInterface.php ( 0.87 KB )
  92. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/session/Store.php ( 7.12 KB )
  93. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Route.php ( 23.73 KB )
  94. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleName.php ( 5.75 KB )
  95. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Domain.php ( 2.53 KB )
  96. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleGroup.php ( 22.43 KB )
  97. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Rule.php ( 26.95 KB )
  98. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleItem.php ( 9.78 KB )
  99. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/route/app.php ( 1.72 KB )
  100. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/Route.php ( 4.70 KB )
  101. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/dispatch/Controller.php ( 4.74 KB )
  102. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Dispatch.php ( 10.44 KB )
  103. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/controller/Index.php ( 4.81 KB )
  104. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/BaseController.php ( 2.05 KB )
  105. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/facade/Db.php ( 0.93 KB )
  106. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/connector/Mysql.php ( 5.44 KB )
  107. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/PDOConnection.php ( 52.47 KB )
  108. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Connection.php ( 8.39 KB )
  109. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/ConnectionInterface.php ( 4.57 KB )
  110. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/builder/Mysql.php ( 16.58 KB )
  111. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Builder.php ( 24.06 KB )
  112. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/BaseBuilder.php ( 27.50 KB )
  113. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Query.php ( 15.71 KB )
  114. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/BaseQuery.php ( 45.13 KB )
  115. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/TimeFieldQuery.php ( 7.43 KB )
  116. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/AggregateQuery.php ( 3.26 KB )
  117. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ModelRelationQuery.php ( 20.07 KB )
  118. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ParamsBind.php ( 3.66 KB )
  119. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ResultOperation.php ( 7.01 KB )
  120. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/WhereQuery.php ( 19.37 KB )
  121. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/JoinAndViewQuery.php ( 7.11 KB )
  122. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/TableFieldInfo.php ( 2.63 KB )
  123. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/Transaction.php ( 2.77 KB )
  124. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/log/driver/File.php ( 5.96 KB )
  125. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/LogHandlerInterface.php ( 0.86 KB )
  126. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/log/Channel.php ( 3.89 KB )
  127. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/event/LogRecord.php ( 1.02 KB )
  128. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/Collection.php ( 16.47 KB )
  129. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/View.php ( 1.70 KB )
  130. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/View.php ( 4.39 KB )
  131. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Response.php ( 8.81 KB )
  132. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/response/View.php ( 3.29 KB )
  133. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Cookie.php ( 6.06 KB )
  134. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-view/src/Think.php ( 8.38 KB )
  135. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/TemplateHandlerInterface.php ( 1.60 KB )
  136. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/Template.php ( 46.61 KB )
  137. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/template/driver/File.php ( 2.41 KB )
  138. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/template/contract/DriverInterface.php ( 0.86 KB )
  139. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/runtime/temp/067d451b9a0c665040f3f1bdd3293d68.php ( 11.98 KB )
  140. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/Html.php ( 4.42 KB )
  1. CONNECT:[ UseTime:0.001055s ] mysql:host=127.0.0.1;port=3306;dbname=f_mffb;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.001483s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.037659s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.029705s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.001494s ]
  6. SELECT * FROM `set` [ RunTime:0.011614s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.001605s ]
  8. SELECT * FROM `article` WHERE `id` = 461215 LIMIT 1 [ RunTime:0.043062s ]
  9. UPDATE `article` SET `lasttime` = 1770551902 WHERE `id` = 461215 [ RunTime:0.073893s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 66 LIMIT 1 [ RunTime:0.008406s ]
  11. SELECT * FROM `article` WHERE `id` < 461215 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.020932s ]
  12. SELECT * FROM `article` WHERE `id` > 461215 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.019722s ]
  13. SELECT * FROM `article` WHERE `id` < 461215 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.010225s ]
  14. SELECT * FROM `article` WHERE `id` < 461215 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.042742s ]
  15. SELECT * FROM `article` WHERE `id` < 461215 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.055053s ]
0.532269s