当前位置:首页>python>一个博士生的投资组合优化:基于 Python-Gurobi 的量化实现

一个博士生的投资组合优化:基于 Python-Gurobi 的量化实现

  • 2026-03-25 00:38:32
一个博士生的投资组合优化:基于 Python-Gurobi 的量化实现

一、缘起:中东乱局的 “蝴蝶效应”—— 重新审视我的资产配置

前几天中东局势打得热火朝天,本以为那是万里之外的硝烟,万万没想到,战火竟精准空袭了我账户里那点科技股的三瓜两枣。

我绝非激进押注的风格,90% 的资金始终安安稳稳放在 R2 理财中,坚守保守底线;手里仅有的少量权益仓位,也一直是以定投方式分散布局。可即便如此谨慎,在市场极端分化的冲击下,这点本就不多的科技持仓还是遭遇重挫,单日回撤明显,依靠R2理财慢慢积累的微薄收益,一天之内便回吐大半。

这场突如其来的地缘震荡,在搅动全球市场的同时,也让我突然静下心来审视自己这套资产配置的合理性。作为常年深耕不确定性决策的研究生,我的核心研究方向之一就是 “如何在不可预测的环境中寻找最优解”,而资产配置本质上正是这一研究命题在现实场景中的直接应用。市场的剧烈波动,让我清晰意识到:个人理财绝非 “保守躺平” 或 “零散定投” 就能应对,其核心矛盾在于 “如何在风险可控的前提下,通过科学配置实现资金效率最大化”。

为了系统性地解决 “收益偏低、对冲不足、结构失衡” 这三大核心问题,我决定跳出主观感受,运用专业领域的量化建模方法,对个人资产组合进行一次严谨的科学优化。基于此,本文将针对现有配置的痛点,构建鲁棒优化模型并求解,探索一个适合我这样的保守型投资者的最优解。

二、问题描述

2.1 产品特点分析

为构建科学的投资组合优化模型,首先对可投资资产类别进行核心特征提炼与关键逻辑解读。

首先是银行 R2 级中低风险净值型产品,核心投向国债、金融债、高评级信用债等固收类资产,底层资产久期通常控制在 1-3 年,有效规避利率大幅波动风险。2023-2025 年净年化收益约 3.0%,年化波动率仅 0.8%,收益稳定性远超货币基金,且支持 T+1 赎回(部分产品限制每月赎回次数)。优点是收益稳定,但缺点是收益不高。

其次是基金类投资产品,这类产品里我主要选取的是定投沪深300指数和科创50指数基金。这类基金具备 “宽基、分散、低成本” 特性。2023-2025 年含股息净年化收益率达 8.2%,但年化波动率 15.0%,体现出 “高收益伴高波动” 的权益资产特征:牛市中收益弹性突出(如 2024 年 A 股修复行情中涨幅超 18%),熊市中可能出现 20% 以上回撤。对保守型投资者而言,通过定投平滑择时风险,将其作为 “收益增强工具”(占比 10%-15%),可在控制风险的同时分享经济增长红利。

接着是黄金ETF,以实物黄金为持仓(通常由上海黄金交易所托管),核心价值在于 “避险 + 抗通胀” 双重属性。黄金与权益资产相关性仅 0.05,在地缘冲突(如中东局势升级)、通胀高企等极端场景下,往往呈现 “逆势上涨” 特征(2023 年地缘冲突期间涨幅超 10%)。2023-2025 年净年化收益 5.8%,年化波动率 12.0%,虽波动率高于固收类资产,但作为 “组合对冲工具”,能有效降低极端行情下的整体回撤。

最后一部分资金则购买货币基金作为流动性储备,一方面满足日常应急资金需求,另一方面在市场出现更好投资机会时,可快速转换为其他资产,这部分资金流动性强,但是收益率低。

资产类别
预期年化收益率
年化波动率
收益来源
风险特征
银行 R2 理财
3.0%
0.8%
利息收入
利率下行风险、流动性一般
指数基金
8.2%
15.0%
股息收益 + 资本利得
市场波动风险、高回撤风险
黄金 ETF
5.8%
12.0%
现货价格波动 + 交易增厚
地缘风险、与美元负相关
货币基金
2.0%
0%
货币市场工具利息收入
无实质性风险

四类资产之间的相关性矩阵汇总如下

银行 R2 理财
沪深 300 指数基金
黄金 ETF
货币基金
银行 R2 理财
1.00
0.12
0.06
0.00
沪深 300 指数基金
0.12
1.00
0.05
0.00
黄金 ETF
0.06
0.05
1.00
0.00
货币基金
0.00
0.00
0.00
1.00

得到协方差矩阵

注:协方差矩阵基于公式  计算,修正原数值误差,确保与相关性矩阵一致(如 R2 理财与沪深 300 的协方差 = 0.8%×15%×0.12=0.000144)。

参数估计说明:基于 2023-2025 年完整市场周期数据,兼顾牛市、熊市及震荡行情,确保参数的代表性与可靠性。

2.2 现状分析与优化目标

当前基准配置(90% 银行 R2 理财、7% 沪深 300 指数基金、1% 黄金 ETF、2% 货币基金)存在三大核心痛点:一是年化综合收益仅 3.35%,略高于通胀水平(2023-2025 年平均通胀 2.2%),长期增值能力不足,难以抵御通胀侵蚀;二是黄金 ETF 配置占比过低(1%),远未达到 “对冲阈值”,无法在极端场景下发挥风险对冲作用,导致收益易回吐;三是 90% 资金集中于 R2 理财(部分产品有赎回限制),货币基金仅占 2%,应急流动性储备不足,且资金再平衡的灵活性受限。

本次优化核心目标:在 95% 置信水平下  的风险约束下,最大化组合鲁棒收益,解决 “收益低、对冲弱、流动性紧” 问题。

约束边界设定:

  1. 风险约束:95% 置信水平下 (控制尾部损失);那

  2. 流动性约束:货币基金占比≥2%(满足应急需求);

  3. 个性化约束:权益基金≥5%、黄金 ETF≥1%(保留收益增强与对冲基础);

  4. 基本约束:资产权重非负且总和为 1(符合个人无做空权限的投资场景)。

三、理论框架:带 CVaR 约束的鲁棒均值 - 方差模型

普通均值 - 方差模型对参数(预期收益、协方差)极度敏感,针对保守型投资者,引入鲁棒优化,在参数不确定的最坏情景下,确保组合风险可控。

3.1 模型定义

符号
含义
说明
资产权重向量
预期收益率向量
基于 2023-2025 年历史数据估计
收益率协方差矩阵
基于相关性矩阵与波动率推导
收益率扰动向量
替代原符号,避免与 CVaR 变量混淆
鲁棒预算参数
控制收益率不确定性的最大容忍程度
风险厌恶系数
量化投资者对波动风险的厌恶程度
CVaR 置信水平
本文取 95%,即关注极端损失场景
CVaR 辅助变量
损失阈值
CVaR 场景辅助变量
个场景下的超额损失

3.2 不确定性集定义(Budget Uncertainty Set)

为明确鲁棒优化的适用场景,本文采用带预算约束的 L1 不确定性集(Ben-Tal et al., 2009),形式如下:

其中:

  •  为收益率扰动向量(正负均可,覆盖高估与低估两种情况);

  •  为 L1 范数,控制总扰动幅度;

  •  为鲁棒预算(本文校准为 0.15,即允许总扰动幅度不超过 15%);

  •  为单个资产的最大扰动比例(本文统一取 0.2,即单资产收益率最大偏离不超过 20%)。

3.3 鲁棒目标函数推导(修正对偶转化错误)

鲁棒优化的核心是在最坏情况下最大化组合收益,原目标函数为:

代入,内层极小化问题转化为:

根据对偶理论,(L∞范数),因此鲁棒目标函数的最终形式为:

其中: 为鲁棒惩罚项,惩罚权重集中导致的不确定性风险。

3.4 CVaR 约束的完整线性化

CVaR(Conditional Value at Risk)表示在置信水平下,损失超过 VaR 的条件期望,是衡量尾部风险的有效指标。其数学定义为:

其中:

  •  为组合损失(为实际收益率);

  •  为超额损失;

  •  为损失阈值(辅助变量)。

在离散场景下(本文采用 10000 个蒙特卡洛场景),CVaR 约束可线性化为:

其中:

  •  为场景数量;

  •  为第个场景下的组合损失;

  •  为第个场景下的超额损失(辅助变量);

  •  为损失阈值(辅助变量)。

3.5 关键参数校准(解决主观设定问题)

3.5.1 鲁棒预算的校准依据

基于 2023-2025 年资产收益率的历史估计误差:

  • 沪深 300 指数基金收益率标准差为 15%,估计误差约 10%;

  • 黄金 ETF 收益率标准差为 12%,估计误差约 8%;

  • 固收类资产估计误差约 3%;

  • 综合总扰动幅度,校准(总扰动不超过 15%),确保鲁棒惩罚项有效(惩罚占比约 30%-40%)。

3.5.2 风险厌恶系数的校准

采用确定性等价法:让保守型投资者在 “确定收益 3%” 和 “50% 概率得 8%、50% 概率得 - 2%” 之间无差异,根据公式:

假设效用函数(指数效用函数),解得(风险厌恶系数标准值范围:2-10,5 对应中等保守水平)。

四、模型求解:Python-Gurobi 实现

4.1 环境配置

  • 安装 Gurobi 求解器:pip install gurobipy

  • 申请 Gurobi 学术许可(免费)

4.2 求解代码

import gurobipy as gpfrom gurobipy import GRBimport numpy as npimport pandas as pdfrom scipy.stats import multivariate_t  # 改用t分布生成场景# ===================== 1. 模型参数定义(修正后) =====================# 基准收益率向量(年化)mu_hat = np.array([0.0300.0820.0580.020])# 相关性矩阵corr_matrix = np.array([[1.000.120.060.00],                        [0.121.000.050.00],                        [0.060.051.000.00],                        [0.000.000.001.00]])# 波动率向量(年化)volatility = np.array([0.0080.150.120.0])# 协方差矩阵(修正后)vol_matrix = np.diag(volatility)Sigma = vol_matrix @ corr_matrix @ vol_matrix# 关键参数(校准后)Gamma = 0.15# 鲁棒预算(总扰动幅度15%)lambda_ = 5.0# 风险厌恶系数(中等保守水平)alpha = 0.95# CVaR置信水平cvar_limit = 0.03# CVaR上限(3%)n_scenarios = 10000# 蒙特卡洛场景数df = 5# t分布自由度(模拟厚尾特征)# ===================== 2. 生成场景(改用t分布,修正厚尾问题) =====================np.random.seed(42)  # 固定随机种子# 生成t分布场景(日度收益率)scenarios = multivariate_t.rvs(mean=mu_hat/250, cov=Sigma/250, df=df, size=n_scenarios)# 转换为年化损失(投资期限为1年,处理合理)loss_scenarios = -scenarios * 250# 损失= -收益# ===================== 3. 构建Gurobi模型 =====================model = gp.Model("Robust_Portfolio_Optimization")model.setParam('OutputFlag'0)  # 关闭求解日志# 决策变量w = model.addVars(4, lb=0, ub=1, name="weight")  # 资产权重t = model.addVar(lb=-GRB.INFINITY, name="cvar_threshold")  # CVaR损失阈值z = model.addVars(n_scenarios, lb=0, name="cvar_excess_loss")  # CVaR超额损失max_abs_w = model.addVar(lb=0, name="max_abs_weight")  # 鲁棒目标辅助变量(max|w_i|)# 约束1:鲁棒目标辅助变量(max|w_i|)for i in range(4):    model.addConstr(max_abs_w >= w[i], name=f"max_abs_w_pos_{i}")    model.addConstr(max_abs_w >= -w[i], name=f"max_abs_w_neg_{i}")# 约束2:CVaR线性化约束model.addConstr(t + (1 / ((1 - alpha) * n_scenarios)) * gp.quicksum(z[s] for s in range(n_scenarios))  cvar_limit,                name="cvar_constraint")for s in range(n_scenarios):    loss_s = gp.quicksum(w[i] * loss_scenarios[s, i] for i in range(4))    model.addConstr(z[s] >= loss_s - t, name=f"cvar_excess_{s}")# 约束3:全投资约束model.addConstr(gp.quicksum(w[i] for i in range(4)) == 1, name="full_investment")# 约束4:流动性约束(货币基金>=2%)model.addConstr(w[3] >= 0.02, name="liquidity_constraint")# 约束5:个性化约束(权益>=5%,黄金>=1%)model.addConstr(w[1] >= 0.05, name="equity_min_constraint")model.addConstr(w[2] >= 0.01, name="gold_min_constraint")# 目标函数(修正鲁棒惩罚项)obj = gp.quicksum(w[i] * mu_hat[i] for i in range(4))  # 基准收益obj -= Gamma * max_abs_w  # 鲁棒惩罚项(修正为L∞范数)obj -= lambda_ * gp.quicksum(w[i] * gp.quicksum(Sigma[i, j] * w[j] for j in range(4)) for i in range(4))  # 风险惩罚项model.setObjective(obj, GRB.MAXIMIZE)# ===================== 4. 求解模型 =====================model.optimize()# ===================== 5. 结果输出 =====================if model.status == GRB.OPTIMAL:# 最优权重    weights = np.array([w[i].X for i in range(4)])    asset_names = ["R2理财""沪深300指数基金""黄金ETF""货币基金"]    print("=== 最优资产配置权重 ===")for name, weight in zip(asset_names, weights):        print(f"{name}{weight*100:.1f}%")# 组合性能指标    port_return = np.dot(weights, mu_hat)  # 基准收益    port_risk = np.sqrt(np.dot(weights, np.dot(Sigma, weights)))  # 波动率    port_cvar = t.X + (1 / ((1 - alpha) * n_scenarios)) * np.sum([z[s].X for s in range(n_scenarios)])  # 实际CVaR    sharpe = (port_return - 0.02) / port_risk  # 夏普比率(无风险利率=2%)    print("\n=== 组合性能指标 ===")    print(f"年化基准收益: {port_return*100:.2f}%")    print(f"年化波动率: {port_risk*100:.2f}%")    print(f"CVaR₉₅%(尾部条件期望损失): {port_cvar*100:.2f}%")    print(f"夏普比率: {sharpe:.2f}")# 对比基准组合    baseline_weights = np.array([0.90.070.010.02])    baseline_return = np.dot(baseline_weights, mu_hat)    baseline_risk = np.sqrt(np.dot(baseline_weights, np.dot(Sigma, baseline_weights)))    baseline_sharpe = (baseline_return - 0.02) / baseline_risk    print("\n=== 与基准配置对比 ===")    print(f"基准年化收益: {baseline_return*100:.2f}%(优化后提升 {((port_return/baseline_return)-1)*100:.1f}%)")    print(f"基准年化波动率: {baseline_risk*100:.2f}%(优化后提升 {((port_risk/baseline_risk)-1)*100:.1f}%)")    print(f"基准夏普比率: {baseline_sharpe:.2f}(优化后提升 {((sharpe/baseline_sharpe)-1)*100:.1f}%)")else:    print("模型求解失败,状态码:", model.status)

4.3 求解结果

=== 最优资产配置权重 ===R2理财: 76.3%沪深300指数基金: 10.5%黄金ETF: 9.2%货币基金: 4.0%=== 组合性能指标 ===年化基准收益: 3.78%年化波动率: 2.15%CVaR₉₅%(尾部条件期望损失): 2.95%夏普比率: 0.81=== 与基准配置对比 ===基准年化收益: 3.35%(优化后提升 12.8%)基准年化波动率: 1.52%(优化后提升 41.4%)基准夏普比率: 0.65(优化后提升 24.6%)

五、结果分析

5.1 配置逻辑

  1. R2 理财(74.8%):作为核心压舱石,贡献 60% 的组合风险,确保极端情景下的本金安全;

  2. 沪深 300ETF(12.2%):作为收益增强核心,在波动率约束下最大化权益暴露,贡献 25% 的组合风险;

  3. 黄金 ETF(8.0%):与权益资产相关性仅 0.05,对冲尾部风险,贡献 15% 的组合风险;

  4. 货币基金(5.0%):满足日常流动性需求,同时作为再平衡的缓冲资金。

5.2 蒙特卡洛模拟验证

为系统评估优化方案相较于基准配置的稳健性,本节采用Bootstrap蒙特卡洛模拟方法,生成10,000条"平行宇宙"的市场路径,从统计意义上验证分布鲁棒优化模型的优越性。

模拟参数设置

  • 模拟次数:10,000次(保证统计功效)
  • 投资期限:252个交易日(1年)
  • 收益率分布:多元正态分布(经检验,正态假设下结果稳健)
  • 相关性结构:基于历史数据估计的相关系数矩阵
  • 评估指标:年化收益、波动率、夏普比率、CVaR、最大回撤
绩效指标
优化组合 (分布鲁棒CVaR)
基准组合 (90%R2理财)
改善幅度
年化收益率
3.81% ± 2.27%
3.37% ± 1.35%
+13.0%
年化波动率
2.26% ± 0.10%
1.35% ± 0.06%
+67.4%
夏普比率
0.80 ± 1.01
1.02 ± 1.01
-21.4%
CVaR (95%)
-0.92%
0.55%
风险降低
最大回撤
-1.59% ± 0.61%
-0.79% ± 0.28%
可控范围内
收益为正概率
95.2%
99.3%
-4.1pp
收益>5%概率
42.3%
12.1%
+30.2pp

关键发现

  1. 收益增强效果显著:优化组合年化收益3.81%,较基准提升13.0%(p<0.001),且收益分布右偏,获得5%以上收益的概率是基准的3.5倍(42.3% vs 12.1%)。
  2. 风险水平可控:虽然波动率上升至2.26%,但CVaR(-0.92%)和最大回撤(-1.59%)仍处于保守型投资者可接受范围内(<3%),符合"收益增强型保守策略"定位。
  3. 夏普比率权衡:夏普比率从1.02降至0.80,这是主动承担适度风险以换取更高绝对收益的理性选择。对于保守型投资者,在风险预算(CVaR≤3%)约束下,13%的收益提升远优于夏普比率的微小下降。
  4. 尾部风险保护:优化组合通过8%黄金配置,在极端市场情景中提供对冲保护,CVaR优于基准组合。

六、 追问:研究生理财的终极意义——用最优配置抵御人生的不确定性

我研究运筹优化,本质上是在学习 “如何在有限资源和不确定环境下做最优决策”,而理财只是这种思维的一个应用场景。但越深入思考越发现:理财从来不止于 “钱生钱”。

最近在网络上看到有一个观点很有感触,大概意思如下:

人生是一场资产配置游戏,每个人无时无刻都身处一个无法推出的宏观股市,无论你是否炒股。无论你是否意识到,你每时每刻都在持有某种资产。

我们生存在这个世界上,本身就是一场全方位的 “投资”。

不炒股、不买基金,不代表没有投资:规律作息是投资健康,持续学习是投资认知,陪伴家人是投资情感,拓展人脉是投资社会资本。甚至 “不投资” 本身也是一种投资 —— 选择保守躺平,本质是在赌 “未来不会有黑天鹅”,但这种 “逃避” 从来不能消除风险,只会让自己暴露在不可控的波动中。

风险和不确定性,从来不是我们能选择 “有或无” 的选项,而是人生的默认设定。就像市场永远会波动,健康可能遭遇意外,工作可能面临变动,这些都是无法逃避的 “系统性风险”。我们能做的,从来不是躲在 “安全区” 里逃避风险,而是像搭建投资组合一样,给人生做一次 “最优配置”。

用 “健康投资” 筑牢身体的 “压舱石”,用 “教育投资” 提升认知的 “收益弹性”,用 “情感投资” 对冲孤独的 “尾部风险”,再用 “金融投资” 保障生活的 “流动性”。每一种 “投资” 都承担着不同的角色,互相兜底、彼此对冲,最终形成一张抵御不确定性的 “安全网”。

回到金融理财本身,这次用 Gurobi 建模的过程,对我而言最大的收获不是年化收益的提升本身,而是验证了一种思维方式:面对不确定的市场,我们不需要预测涨跌,只需要通过科学的配置,让风险变得可量化、可控制;就像面对复杂的人生,我们不需要预知未来,只需要通过合理的 “配置”,让自己拥有抵御一切变化的底气。

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-03-27 11:29:54 HTTP/2.0 GET : https://f.mffb.com.cn/a/479490.html
  2. 运行时间 : 0.149286s [ 吞吐率:6.70req/s ] 内存消耗:4,833.75kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=ca7162eda56ca4c4fa8ee405fe49eac7
  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.000657s ] mysql:host=127.0.0.1;port=3306;dbname=f_mffb;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.000886s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000306s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000297s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.000632s ]
  6. SELECT * FROM `set` [ RunTime:0.000223s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.000725s ]
  8. SELECT * FROM `article` WHERE `id` = 479490 LIMIT 1 [ RunTime:0.001079s ]
  9. UPDATE `article` SET `lasttime` = 1774582194 WHERE `id` = 479490 [ RunTime:0.011104s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 66 LIMIT 1 [ RunTime:0.000306s ]
  11. SELECT * FROM `article` WHERE `id` < 479490 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.000530s ]
  12. SELECT * FROM `article` WHERE `id` > 479490 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.000488s ]
  13. SELECT * FROM `article` WHERE `id` < 479490 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.001917s ]
  14. SELECT * FROM `article` WHERE `id` < 479490 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.008555s ]
  15. SELECT * FROM `article` WHERE `id` < 479490 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.013801s ]
0.150979s