当前位置:首页>python>指数增强量化策略,用 Python 这样做

指数增强量化策略,用 Python 这样做

  • 2026-02-05 01:01:47
指数增强量化策略,用 Python 这样做
指数增强量化策略是在紧密跟踪基准指数的基础上,通过量化模型主动优化持仓,在严格控制跟踪误差的前提下,追求稳定超越指数的超额收益(Alpha),是介于纯被动指数投资与纯主动管理之间的复合策略,核心目标是 “Beta 打底 + Alpha 增强”
本文将在核心逻辑、运作流程的基础上,加入Python 实战代码(覆盖多因子选股、组合优化、跟踪误差计算、收益回测等核心环节),让策略从理论落地到实操,代码基于Python3.8+,使用Tushare/akshare获取数据、pandas/numpy做数据处理、scipy做组合优化,兼顾简洁性和实用性,新手可以作为参考。
一、核心逻辑与收益构成
  1. Beta 收益打底
    组合以目标指数(如沪深 300、中证 500)成分股为核心池,通常成分股占比不低于非现金资产的 80%,锚定市场系统性收益。
  2. Alpha 收益增强
    在跟踪约束内,通过量化模型(多因子为主)筛选优质个股、调整权重,超配预期收益更高的标的,低配 / 剔除劣质标的,挖掘超额收益。
  3. 核心评价指标:
    跟踪误差(TE):衡量组合与指数的偏离程度,指数增强通常要求年化跟踪误差 2%-5%
    信息比率(IR):超额收益 / 跟踪误差,是策略效率的核心指标,IR>1.0为优秀水平;
    超额收益(Alpha):组合收益 - 基准指数收益,追求长期稳定正收益。
收益公式:组合收益 = 基准指数 Beta 收益 + 量化模型 Alpha 收益 - 交易成本
二、指数增强量化策略核心流程(附 Python 代码)
指数增强的核心流程为:数据获取→因子构建与选股→组合优化(约束权重)→回测分析(跟踪误差 / 超额收益)→动态再平衡,以下为每个环节的实操代码,以沪深 300 指数增强为例(标的为沪深 300 成分股)。
前置准备:安装依赖库
#基础数据处理+计算pip install pandas numpy scipy matplotlib#股票数据获取(二选一,Tushare需注册,akshare免费)pip install tushare akshare#可选:量化回测专用库pip install backtrader pyfolio
环节 1:数据获取(沪深 300 成分股 + 行情 + 财务数据)
获取沪深 300 成分股列表、日度行情(涨跌幅、成交量)、财务指标(市盈率 PE、市净率 PB、净资产收益率 ROE),为因子构建做准备。这里用akshare(免费无接口限制)实现,替代需要付费的 Tushare,新手友好:
import akshare as akimport pandas as pdimport numpy as npimport matplotlib.pyplot as pltfrom scipy.optimize import minimizeimport warningswarnings.filterwarnings('ignore')# 设置绘图风格plt.rcParams['font.sans-serif'] = ['SimHei']  # 显示中文plt.rcParams['axes.unicode_minus'] = False    # 显示负号# 1. 获取沪深300成分股列表(实时更新)hs300_stock = ak.index_stock_cons_csindex(symbol="000300")hs300_code = hs300_stock['成分券代码'].tolist()  # 成分股代码hs300_name = hs300_stock['成分券名称'].tolist()  # 成分股名称print(f"沪深300成分股数量:{len(hs300_code)}")print("前5只成分股:", hs300_name[:5])# 2. 获取成分股行情数据(近2年,日度,复权价)start_date = "20220101"end_date = "20241231"# 存储所有成分股的收盘价price_df = pd.DataFrame()for code in hs300_code[:50]:  # 为了运行速度,取前50只,实际可全量    try:        # 获取复权收盘价        stock_data = ak.stock_zh_a_hist(symbol=code, period="daily", start_date=start_date, end_date=end_date, adjust="hfq")        stock_data = stock_data.set_index('日期')['收盘']        price_df[code] = stock_data    except:        continue# 处理缺失值(删除全空列,填充局部缺失)price_df = price_df.dropna(axis=1, how='all')price_df = price_df.fillna(method='ffill')print(f"有效成分股价格数据:{price_df.shape[1]}只")# 3. 获取财务因子数据(PE/PB/ROE,这里用akshare简化获取,实际可用Wind/同花顺)def get_stock_factor(code):    """获取单只股票的价值/质量因子"""    try:        # 财务指标概览        fin_data = ak.stock_financial_analysis_report(code=code)        pe = fin_data[fin_data['指标']=='市盈率(TTM)']['最新值'].iloc[0]  # 价值因子        pb = fin_data[fin_data['指标']=='市净率']['最新值'].iloc[0]      # 价值因子        roe = fin_data[fin_data['指标']=='净资产收益率ROE']['最新值'].iloc[0]  # 质量因子        return pd.Series([pe, pb, roe], index=['PE''PB''ROE'])    except:        return pd.Series([np.nan, np.nan, np.nan], index=['PE''PB''ROE'])# 批量获取因子数据factor_df = pd.DataFrame()for code in price_df.columns:    factor_df[code] = get_stock_factor(code)factor_df = factor_df.T  # 行为股票,列为因子factor_df = factor_df.dropna()  # 删除因子缺失的股票# 对齐价格数据和因子数据common_code = list(set(price_df.columns) & set(factor_df.index))price_df = price_df[common_code]factor_df = factor_df.loc[common_code]print(f"因子与价格对齐后股票数量:{len(common_code)}")
环节 2:多因子模型构建与选股(核心增强环节)
指数增强的 Alpha 主要来自多因子选股,核心逻辑是对因子做标准化处理→剔除极端值→构建综合评分→筛选高分个股(超配高分,低配 / 剔除低分)。常用有效因子:价值因子(低 PE/PB)、质量因子(高 ROE)、动量因子(近期涨跌幅)、波动率因子(低波动),这里选取价值 + 质量双因子构建选股模型(可扩展至多因子)。
# 1. 计算收益率因子(月度动量,近1个月涨跌幅)monthly_return = price_df.resample('M').last().pct_change()  # 月度收益率latest_return = monthly_return.iloc[-1]  # 最新1个月动量因子factor_df['Momentum'] = latest_return  # 加入动量因子factor_df = factor_df.dropna()# 2. 因子预处理:标准化(Z-Score)+ 中性化(消除行业偏差,简化版省略)# 标准化:因子值→均值0,标准差1,方便跨因子比较;负向因子(PE/PB)取反(低PE=高得分)def standardize(factor_series):    """因子标准化"""    return (factor_series - factor_series.mean()) / factor_series.std()# 处理因子方向:负向因子(PE/PB)取反,正向因子(ROE/Momentum)保留factor_df['PE_neg'] = -standardize(factor_df['PE'])    # 低PE=高得分factor_df['PB_neg'] = -standardize(factor_df['PB'])    # 低PB=高得分factor_df['ROE_pos'] = standardize(factor_df['ROE'])   # 高ROE=高得分factor_df['Momentum_pos'] = standardize(factor_df['Momentum'])  # 高动量=高得分# 3. 构建综合因子评分(等权重加权,实际可通过回归/机器学习优化因子权重)factor_df['Total_Score'] = (factor_df['PE_neg'] + factor_df['PB_neg'] +                             factor_df['ROE_pos'] + factor_df['Momentum_pos']) / 4# 4. 选股:筛选综合评分前30%的个股(超配),剔除后30%(低配/剔除)factor_df = factor_df.sort_values('Total_Score', ascending=False)top30 = int(len(factor_df) * 0.3)bottom30 = int(len(factor_df) * 0.3)long_stocks = factor_df.iloc[:top30].index  # 超配个股(前30%)exclude_stocks = factor_df.iloc[-bottom30:].index  # 剔除个股(后30%)print(f"超配个股数量:{len(long_stocks)},剔除个股数量:{len(exclude_stocks)}")print("超配个股前10只:", long_stocks[:10].tolist())
环节 3:组合优化(约束权重,控制跟踪误差)
指数增强的核心约束是跟踪误差,不能为了追求超额而过度偏离指数,因此需要通过组合优化器在约束条件下最大化预期收益。核心约束条件(沪深 300 增强为例):
  1. 成分股权重占比≥80%;
  2. 单只个股权重≤5%,单一行业权重偏离指数≤3%(简化版省略行业约束);
  3. 组合与指数的权重偏离度≤预设值(年化跟踪误差≤4%);
  4. 超配个股的权重高于指数,剔除个股权重为 0。
以下用scipy.optimize.minimize实现最小化跟踪误差 + 最大化预期收益的双目标优化(简化版为:在权重约束下最大化因子评分):
# 1. 构建指数权重(简化版:等权重,实际用沪深300官方权重,可从akshare获取)index_weight = pd.Series(1/len(common_code), index=common_code)  # 指数等权重# 2. 定义优化目标:最大化组合的综合因子评分(评分越高,预期Alpha越高)def objective(weights):    return -np.sum(weights * factor_df.loc[common_code, 'Total_Score'])  # 最小化负评分=最大化正评分# 3. 设定约束条件constraints = [    # 权重和为1    {'type''eq''fun'lambda w: np.sum(w) - 1},    # 单只个股权重≤5%    {'type''ineq''fun'lambda w: 0.05 - w},    # 单只个股权重≥0(无做空)    {'type''ineq''fun'lambda w: w},    # 剔除个股权重为0    {'type''eq''fun'lambda w: np.sum(w[np.where(np.isin(common_code, exclude_stocks))]) - 0},    # 超配个股权重≥指数权重(增强核心)    {'type''ineq''fun'lambda w: w[np.where(np.isin(common_code, long_stocks))] -      index_weight[np.where(np.isin(common_code, long_stocks))].values}]# 4. 初始权重:指数权重x0 = index_weight.values# 5. 优化求解result = minimize(objective, x0, method='SLSQP', constraints=constraints, options={'disp'True})# 6. 提取优化后的组合权重portfolio_weight = pd.Series(result.x, index=common_code)# 过滤极小权重(避免流动性问题)portfolio_weight = portfolio_weight[portfolio_weight > 1e-4]portfolio_weight = portfolio_weight / portfolio_weight.sum()  # 重新归一化print(f"优化后组合有效个股数量:{len(portfolio_weight)}")print("组合权重前5只个股:")print(portfolio_weight.sort_values(ascending=False)[:5])
环节 4:核心指标计算(跟踪误差 + 信息比率 + 超额收益)
指数增强的策略效果核心看跟踪误差信息比率,这两个指标直接反映 “增强能力” 和 “风险控制能力”,以下实现日度 / 年化跟踪误差累计超额收益信息比率的计算,并绘制收益对比图:
# 1. 计算组合收益与指数收益# 组合日度收益:权重×个股日度收益stock_daily_return = price_df.pct_change().dropna()portfolio_daily_return = np.sum(stock_daily_return * portfolio_weight, axis=1)# 指数日度收益(简化版:沪深300指数收益,实际从akshare获取)hs300_index = ak.stock_zh_index_daily(symbol="000300")hs300_index = hs300_index.set_index('date')['close'].loc[stock_daily_return.index]index_daily_return = hs300_index.pct_change().dropna()# 对齐时间序列common_date = list(set(portfolio_daily_return.index) & set(index_daily_return.index))portfolio_daily_return = portfolio_daily_return.loc[common_date].sort_index()index_daily_return = index_daily_return.loc[common_date].sort_index()# 2. 计算累计收益portfolio_cum_return = (1 + portfolio_daily_return).cumprod() - 1index_cum_return = (1 + index_daily_return).cumprod() - 1# 计算超额收益excess_daily_return = portfolio_daily_return - index_daily_returnexcess_cum_return = (1 + excess_daily_return).cumprod() - 1# 3. 计算核心评价指标n = len(portfolio_daily_return)  # 交易天数annual_days = 252  # 年交易天数# 年化收益率portfolio_annual_return = (1 + portfolio_daily_return).prod() ** (annual_days/n) - 1index_annual_return = (1 + index_daily_return).prod() ** (annual_days/n) - 1excess_annual_return = portfolio_annual_return - index_annual_return# 日度跟踪误差:超额收益的标准差te_daily = excess_daily_return.std()# 年化跟踪误差te_annual = te_daily * np.sqrt(annual_days)# 信息比率:年化超额收益 / 年化跟踪误差ir = excess_annual_return / te_annual if te_annual != 0 else 0# 打印指标print("="*50)print(f"组合年化收益率:{portfolio_annual_return:.2%}")print(f"沪深300年化收益率:{index_annual_return:.2%}")print(f"年化超额收益率:{excess_annual_return:.2%}")print(f"年化跟踪误差:{te_annual:.2%}")print(f"信息比率(IR):{ir:.2f}")print("="*50)# 4. 绘制收益对比图plt.figure(figsize=(126))plt.plot(portfolio_cum_return, label=f'指数增强组合(年化{portfolio_annual_return:.2%})', linewidth=2)plt.plot(index_cum_return, label=f'沪深300指数(年化{index_annual_return:.2%})', linewidth=2, linestyle='--')plt.plot(excess_cum_return, label=f'累计超额收益(年化{excess_annual_return:.2%})', linewidth=2, color='red')plt.title('沪深300指数增强组合 vs 基准指数 累计收益对比', fontsize=14)plt.xlabel('日期')plt.ylabel('累计收益率')plt.legend(loc='upper left')plt.grid(alpha=0.3)plt.tight_layout()plt.show()# 5. 绘制跟踪误差走势(滚动20日)rolling_te = excess_daily_return.rolling(window=20).std() * np.sqrt(annual_days)plt.figure(figsize=(124))plt.plot(rolling_te, label='滚动20日年化跟踪误差', color='orange')plt.axhline(y=0.04, color='red', linestyle='--', label='年化跟踪误差上限4%')plt.title('指数增强组合滚动跟踪误差走势', fontsize=14)plt.xlabel('日期')plt.ylabel('年化跟踪误差')plt.legend(loc='upper right')plt.grid(alpha=0.3)plt.tight_layout()plt.show()
环节 5:动态再平衡(策略落地关键)
指数增强不是静态持仓,需要定期再平衡以维持跟踪误差、适应因子变化,常见再平衡频率为月度 / 季度,核心逻辑是:
  1. 每月末重新计算因子评分,更新超配 / 剔除个股名单;
  2. 重新优化组合权重,将偏离度拉回约束范围内;
  3. 调仓时控制交易成本(冲击成本、手续费),避免过度交易。
以下是月度再平衡的简化代码框架:
def rebalance_portfolio(price_df, factor_df, index_weight, rebalance_date):    """    月度再平衡函数    :param rebalance_date: 再平衡日期    :return: 新的组合权重    """    # 1. 重新筛选超配/剔除个股(同环节2逻辑)    factor_df['PE_neg'] = -standardize(factor_df['PE'])    factor_df['PB_neg'] = -standardize(factor_df['PB'])    factor_df['ROE_pos'] = standardize(factor_df['ROE'])    factor_df['Momentum_pos'] = standardize(factor_df['Momentum'])    factor_df['Total_Score'] = (factor_df['PE_neg'] + factor_df['PB_neg'] +                                 factor_df['ROE_pos'] + factor_df['Momentum_pos']) / 4    factor_df = factor_df.sort_values('Total_Score', ascending=False)    top30 = int(len(factor_df) * 0.3)    bottom30 = int(len(factor_df) * 0.3)    long_stocks = factor_df.iloc[:top30].index    exclude_stocks = factor_df.iloc[-bottom30:].index    # 2. 重新优化权重(同环节3逻辑)    constraints = [        {'type''eq''fun'lambda w: np.sum(w) - 1},        {'type''ineq''fun'lambda w: 0.05 - w},        {'type''ineq''fun'lambda w: w},        {'type''eq''fun'lambda w: np.sum(w[np.where(np.isin(common_code, exclude_stocks))]) - 0},        {'type''ineq''fun'lambda w: w[np.where(np.isin(common_code, long_stocks))] -          index_weight[np.where(np.isin(common_code, long_stocks))].values}    ]    x0 = index_weight.values    result = minimize(objective, x0, method='SLSQP', constraints=constraints, options={'disp'False})    new_weight = pd.Series(result.x, index=common_code)    new_weight = new_weight[new_weight > 1e-4]    new_weight = new_weight / new_weight.sum()    return new_weight# 月度再平衡执行(遍历每个月末)monthly_dates = price_df.resample('M').last().indexall_weights = []for date in monthly_dates:    # 截取到再平衡日期的因子和价格数据    temp_price = price_df.loc[:date]    temp_factor = factor_df.loc[temp_price.columns]    temp_index_weight = pd.Series(1/len(temp_price.columns), index=temp_price.columns)    # 再平衡获取新权重    new_weight = rebalance_portfolio(temp_price, temp_factor, temp_index_weight, date)    all_weights.append({'date': date, 'weight': new_weight})print("月度再平衡完成,生成各期组合权重")
三、关键技术与风险控制
核心技术工具
指数增强的量化落地依赖三大技术支柱,对应代码中的核心模块:
环节
核心技术
Python 工具 / 库
因子挖掘
多因子模型、因子正交化
pandas/numpy、Scikit-learn
组合优化
均值 - 方差优化、约束规划
scipy.optimize、cvxpy(进阶)
指标计算
跟踪误差、信息比率、风险归因
pandas/numpy
回测分析
收益回测、风险指标、可视化
matplotlib、pyfolio/backtrader
数据获取
行情 / 财务 / 因子数据
Tushare/akshare、Wind / 同花顺 API
2. 风险控制核心代码落地
指数增强的风险控制是硬约束,除了代码中已实现的权重约束、剔除个股约束,还可通过以下代码实现额外风控:
# 风控1:行业权重偏离控制(简化版,需先获取个股行业分类)# stock_industry = ak.stock_board_industry_name_ths()  # 获取个股行业# industry_weight = portfolio_weight.groupby(stock_industry).sum()  # 组合行业权重# index_industry_weight = index_weight.groupby(stock_industry).sum()  # 指数行业权重# industry_deviation = abs(industry_weight - index_industry_weight)# assert all(industry_deviation < 0.03), "行业权重偏离超过3%,触发风控"# 风控2:年化跟踪误差阈值控制assert te_annual < 0.05, "年化跟踪误差超过5%,触发风控调仓"# 风控3:流动性控制(筛选日均成交额前80%的个股)# volume_df = ak.stock_zh_a_hist(symbol=code, period="daily")['成交量']# avg_volume = volume_df.resample('M').mean()# liquid_stocks = avg_volume[avg_volume > avg_volume.quantile(0.2)].index# portfolio_weight = portfolio_weight.loc[liquid_stocks]
四、策略优势、挑战与实操建议
优势
  • 代码模块化:本文代码拆分为数据获取→选股→优化→回测→再平衡,可按需扩展(如增加因子、优化约束);
  • 风险可控:通过量化约束严格控制跟踪误差,避免风格漂移,收益比纯主动策略更稳定;
  • 成本较低:交易频率低于纯主动策略,结合券商量化低佣金(万 0.8 左右),交易成本可控。
2. 实操挑战
  • 数据质量:免费数据(akshare/Tushare)存在缺失 / 延迟,实盘需用 Wind / 同花顺 / 券商高级 API;
  • 因子失效:市场风格轮动(如价值→成长)会导致因子失效,需定期迭代因子模型(如加入机器学习动态调整因子权重);
  • 交易成本:实盘需考虑冲击成本、滑点、手续费,本文回测为理想情况,需在代码中加入成本扣减;
  • 规模容量:策略规模过大会导致个股冲击成本上升,摊薄超额收益,沪深 300 增强的合理规模通常为 5-50 亿。
3. 实盘落地建议
  1. 因子扩展:在本文价值 + 质量 + 动量基础上,增加波动率因子(低波动)、量价因子(换手率)、ESG 因子,提升选股稳定性;
  2. 优化进阶:用cvxpy替代scipy做组合优化,支持更复杂的约束(如行业偏离、跟踪误差直接约束);
  3. 回测优化:加入滑点(0.1%-0.3%)、手续费(万 1.5)、冲击成本,让回测更贴近实盘;
  4. 券商平台:实盘使用券商量化平台(QMT/miniQMT、Ptrade),将 Python 代码对接券商 API,实现自动交易与实时风控。
五、与其他策略的核心区别(附量化指标对比)
策略类型
核心代码差异
年化跟踪误差
信息比率(IR)
年化超额收益
费率
指数增强量化
因子选股 + 组合优化 + 跟踪误差控制代码
2%-5%
>1.0(优秀)
3%-8%
中(0.5%-1.5%/ 年)
纯被动指数
仅复制指数权重,无选股 / 优化代码
<0.5%
0
0
低(0.1%-0.5%/ 年)
纯主动量化
无指数权重约束,选股代码更激进
>10%
0.5-1.0
5%-15%
高(1.5%-2.0%/ 年)
总结
本文从理论 + Python 代码完整讲解了指数增强量化策略,核心要点可概括为 3 点:
  1. 策略核心是Beta 打底 + Alpha 增强,通过多因子选股挖掘 Alpha,通过组合优化控制跟踪误差;
  2. 代码实现了指数增强的全流程,模块化设计可按需扩展(因子、约束、风控),新手可直接复制运行并调试;
  3. 实盘落地的关键是数据质量 + 因子迭代 + 交易成本控制 + 券商量化平台对接,回测优秀不代表实盘盈利,需充分考虑市场摩擦。
如果需要实盘级代码(如对接券商 QMT/Ptrade API、加入机器学习因子权重优化、实盘风控),可基于本文代码进一步升级。

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-02-07 18:45:05 HTTP/2.0 GET : https://f.mffb.com.cn/a/472722.html
  2. 运行时间 : 0.307286s [ 吞吐率:3.25req/s ] 内存消耗:4,593.83kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=750857524ea4c821007570ceafbbcc89
  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.000910s ] mysql:host=127.0.0.1;port=3306;dbname=f_mffb;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.001571s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.002271s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.017712s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.001681s ]
  6. SELECT * FROM `set` [ RunTime:0.040102s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.001688s ]
  8. SELECT * FROM `article` WHERE `id` = 472722 LIMIT 1 [ RunTime:0.028448s ]
  9. UPDATE `article` SET `lasttime` = 1770461105 WHERE `id` = 472722 [ RunTime:0.027329s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 66 LIMIT 1 [ RunTime:0.006296s ]
  11. SELECT * FROM `article` WHERE `id` < 472722 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.021715s ]
  12. SELECT * FROM `article` WHERE `id` > 472722 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.008349s ]
  13. SELECT * FROM `article` WHERE `id` < 472722 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.005798s ]
  14. SELECT * FROM `article` WHERE `id` < 472722 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.013713s ]
  15. SELECT * FROM `article` WHERE `id` < 472722 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.039589s ]
0.311119s