量化价值投资领域:投资组合优化的成功案例分析

量化价值投资领域:投资组合优化的成功案例分析

关键词:量化价值投资、投资组合优化、均值方差模型、风险平价策略、机器学习、案例分析、夏普比率

摘要:本文深入探讨量化价值投资中投资组合优化的核心技术与实战经验,通过解析Markowitz均值方差模型、风险平价策略、机器学习因子优化等经典方法,结合标普500成分股和中国A股市场的真实案例,演示如何通过数学建模与算法优化实现风险收益的平衡。文中包含完整的Python代码实现、数学公式推导及可视化分析,适合量化分析师、机构投资者及高净值个人理解投资组合优化的核心逻辑与工程实践。

1. 背景介绍

1.1 目的和范围

在量化价值投资领域,投资组合优化的核心目标是通过科学配置资产,在给定风险水平下最大化收益,或在给定收益目标下最小化风险。本文将围绕三大经典优化框架展开:

  1. 现代投资组合理论(MPT)的均值方差模型
  2. 风险平价(Risk Parity)的均衡配置策略
  3. 机器学习驱动的因子增强模型

通过标普500指数成分股(美股案例)和沪深300成分股(A股案例)的实证分析,演示从数据预处理、模型构建到绩效评估的完整流程,并对比不同方法的实战效果。

1.2 预期读者

  • 量化投资从业者(分析师、基金经理)
  • 金融科技开发者(Python量化框架设计者)
  • 高净值个人投资者(希望系统化理解量化配置)
  • 金融工程专业学生(需掌握实战级建模技巧)

1.3 文档结构概述

章节核心内容技术亮点
核心概念三大优化框架的原理对比数学示意图+Mermaid流程图
算法实现Python全流程代码(含cvxpy优化)可复现的Jupyter Notebook脚本
案例分析美股/A股双市场实证夏普比率、最大回撤等12个绩效指标
工具推荐专业量化工具链从数据获取到回测的完整生态

1.4 术语表

1.4.1 核心术语定义
  • 量化价值投资:通过财务指标(PE、PB、ROE等)筛选低估资产,结合数学模型进行组合优化的投资方法
  • 有效前沿(Efficient Frontier):Markowitz理论中,风险收益比最优的资产组合集合
  • 风险平价:使各资产对组合总风险的贡献相等的配置策略
  • 信息比率(IR):主动收益与跟踪误差的比值,衡量超额收益能力
1.4.2 相关概念解释
  • 协方差矩阵:描述资产收益波动的相关性,是均值方差模型的核心输入
  • 再平衡周期:定期调整组合权重以维持目标配置的时间间隔(如月度、季度)
  • 交易成本模型:在优化中加入滑点、佣金等摩擦成本的约束条件
1.4.3 缩略词列表
缩写全称
MPTModern Portfolio Theory(现代投资组合理论)
SRSharpe Ratio(夏普比率)
RPRisk Parity(风险平价)
ICInformation Coefficient(信息系数)
CVXPYConvex Optimization in Python(凸优化库)

2. 核心概念与联系

2.1 投资组合优化的三大核心框架

2.1.1 Markowitz均值方差模型(1952)

核心原理:通过最大化风险调整后收益(夏普比率),在资产收益均值向量 μ \mu μ 和协方差矩阵 Σ \Sigma Σ 的基础上,求解二次规划问题:
max ⁡ w w T μ − λ 2 w T Σ w \max_{w} \quad w^T \mu - \frac{\lambda}{2} w^T \Sigma w wmaxwTμ2λwTΣw
s.t. w T 1 = 1 , w i ≥ 0 ( 无卖空约束 ) \text{s.t.} \quad w^T \mathbf{1} = 1, \quad w_i \geq 0 \quad (\text{无卖空约束}) s.t.wT1=1,wi0(无卖空约束)
其中 λ \lambda λ 为风险厌恶系数,平衡收益与风险。

架构示意图

graph TD
A[输入数据:收益序列、协方差矩阵] --> B[计算期望收益向量]
A --> C[构建协方差矩阵]
B --> D[定义目标函数:最大化风险调整收益]
C --> D
D --> E[求解二次规划问题(cvxpy库)]
E --> F[生成有效前沿组合]
F --> G[筛选最优风险收益比组合]
2.1.2 风险平价策略(2005年桥水基金实践)

核心思想:让每种资产对组合总风险的贡献相等。总风险由边际风险贡献(MRC)衡量:
MRC i = σ i ⋅ w i ⋅ ∂ σ p ∂ ( w i σ i ) = w i ⋅ ρ i ⋅ σ p \text{MRC}_i = \sigma_i \cdot w_i \cdot \frac{\partial \sigma_p}{\partial (w_i \sigma_i)} = w_i \cdot \rho_i \cdot \sigma_p MRCi=σiwi(wiσi)σp=wiρiσp
其中 ρ i \rho_i ρi 是资产 i i i 与组合的相关系数, σ p \sigma_p σp 是组合标准差。风险平价要求:
w i ⋅ σ i ⋅ ∑ j w j ρ i j = 常数 , ∀ i w_i \cdot \sigma_i \cdot \sum_j w_j \rho_{ij} = \text{常数}, \quad \forall i wiσijwjρij=常数,i

实现流程

  1. 计算资产波动率矩阵 Σ 1 / 2 \Sigma^{1/2} Σ1/2
  2. 求解逆波动率加权初始权重 w ∝ 1 / σ i w \propto 1/\sigma_i w1/σi
  3. 通过迭代优化使各资产风险贡献相等
2.1.3 机器学习因子优化模型

核心逻辑:利用随机森林、梯度提升机等算法,对财务因子(PE、PB)、量价因子(成交量、换手率)进行特征选择,构建预测模型筛选高收益资产。

  • 特征工程:标准化(Z-score)、PCA降维、因子正交化
  • 模型训练:以未来12个月收益为标签,训练回归模型预测预期收益
  • 组合优化:将预测收益作为均值方差模型的输入 μ \mu μ

3. 核心算法原理 & 具体操作步骤

3.1 均值方差模型的Python实现(带交易成本约束)

import cvxpy as cp
import numpy as np

def mean_variance_optimization(returns, risk_aversion=1.0, no_short=True):
    """
    带无风险利率和交易成本的均值方差优化
    参数:
    returns: 资产收益矩阵 (n_assets, n_days)
    risk_aversion: 风险厌恶系数(越大越保守)
    no_short: 是否禁止卖空(True/False)
    返回:最优权重向量
    """
    n_assets = returns.shape[0]
    mu = np.mean(returns, axis=1)  # 期望收益
    cov = np.cov(returns)  # 协方差矩阵
    
    w = cp.Variable(n_assets)
    ret = mu.T @ w  # 组合收益
    risk = cp.quad_form(w, cov)  # 组合风险
    
    # 目标函数:最大化 收益 - 0.5*风险厌恶系数*风险
    objective = cp.Maximize(ret - 0.5 * risk_aversion * risk)
    
    constraints = [cp.sum(w) == 1]
    if no_short:
        constraints += [w >= 0]
    
    prob = cp.Problem(objective, constraints)
    prob.solve()
    
    if prob.status != 'optimal':
        raise ValueError("优化未收敛")
    
    return np.array(w.value).flatten()

3.2 风险平价策略的迭代求解算法

def risk_parity_optimization(returns, target_risk=0.1, max_iter=100, tol=1e-6):
    """
    风险平价优化(带杠杆约束)
    参数:
    returns: 资产收益矩阵 (n_assets, n_days)
    target_risk: 目标组合波动率
    max_iter: 最大迭代次数
    返回:风险平价权重
    """
    n_assets = returns.shape[0]
    cov = np.cov(returns)
    sigma = np.sqrt(np.diag(cov))  # 资产波动率
    
    # 初始权重:逆波动率加权
    w = 1 / sigma
    w /= np.sum(w)
    
    for _ in range(max_iter):
        sigma_p = np.sqrt(w.T @ cov @ w)
        mrc = cov @ w / sigma_p  # 边际风险贡献
        target_mrc = target_risk / n_assets  # 等风险贡献目标
        w_new = w * (target_mrc / mrc)
        w_new /= np.sum(w_new)
        
        if np.linalg.norm(w_new - w) < tol:
            break
        w = w_new
    
    # 调整到目标风险水平
    w *= target_risk / sigma_p
    return w

3.3 机器学习因子筛选流程

from sklearn.ensemble import RandomForestRegressor
from sklearn.preprocessing import StandardScaler

def factor_selection(features, returns, test_size=0.2, n_estimators=100):
    """
    基于随机森林的因子筛选
    参数:
    features: 因子矩阵 (n_samples, n_factors)
    returns: 未来收益标签
    返回:重要因子列表
    """
    scaler = StandardScaler()
    X = scaler.fit_transform(features)
    y = returns
    
    # 划分训练集和测试集
    split_idx = int(len(X) * (1 - test_size))
    X_train, X_test = X[:split_idx], X[split_idx:]
    y_train, y_test = y[:split_idx], y[split_idx:]
    
    model = RandomForestRegressor(n_estimators=n_estimators, random_state=42)
    model.fit(X_train, y_train)
    
    # 计算特征重要性
    importances = model.feature_importances_
    sorted_indices = np.argsort(importances)[::-1]
    
    return sorted_indices[:20]  # 选择前20个重要因子

4. 数学模型和公式 & 详细讲解 & 举例说明

4.1 均值方差模型的数学推导

目标函数:最大化夏普比率(无风险利率为0时)
SR = w T μ w T Σ w \text{SR} = \frac{w^T \mu}{\sqrt{w^T \Sigma w}} SR=wTΣw wTμ
等价于最大化分子同时最小化分母,转化为带风险厌恶系数的二次规划问题:
max ⁡ w w T μ − λ 2 w T Σ w \max_w \quad w^T \mu - \frac{\lambda}{2} w^T \Sigma w wmaxwTμ2λwTΣw
最优解闭式解(无约束情况):
w ∗ = Σ − 1 μ 1 T Σ − 1 μ w^* = \frac{\Sigma^{-1} \mu}{\mathbf{1}^T \Sigma^{-1} \mu} w=1TΣ1μΣ1μ

举例:假设2资产组合,收益均值分别为10%和15%,标准差20%和30%,相关系数0.5,则协方差矩阵:
Σ = [ 0.04 0.03 0.03 0.09 ] \Sigma = \begin{bmatrix} 0.04 & 0.03 \\ 0.03 & 0.09 \end{bmatrix} Σ=[0.040.030.030.09]
最优权重计算为:
w = [ 0.09 − 0.03 − 0.03 0.04 ] [ 0.1 0.15 ] ( 0.1 , 0.15 ) [ 0.09 − 0.03 − 0.03 0.04 ] [ 0.1 0.15 ] = [ 0.6 0.4 ] w = \frac{\begin{bmatrix} 0.09 & -0.03 \\ -0.03 & 0.04 \end{bmatrix} \begin{bmatrix} 0.1 \\ 0.15 \end{bmatrix}}{(0.1, 0.15) \begin{bmatrix} 0.09 & -0.03 \\ -0.03 & 0.04 \end{bmatrix} \begin{bmatrix} 0.1 \\ 0.15 \end{bmatrix}} = \begin{bmatrix} 0.6 \\ 0.4 \end{bmatrix} w=(0.1,0.15)[0.090.030.030.04][0.10.15][0.090.030.030.04][0.10.15]=[0.60.4]

4.2 风险平价的风险贡献计算

总风险 σ p = w T Σ w \sigma_p = \sqrt{w^T \Sigma w} σp=wTΣw
资产i的风险贡献
RC i = w i ⋅ ∂ σ p ∂ w i = w i ⋅ ( Σ w ) i σ p \text{RC}_i = w_i \cdot \frac{\partial \sigma_p}{\partial w_i} = w_i \cdot \frac{(\Sigma w)_i}{\sigma_p} RCi=wiwiσp=wiσp(Σw)i
风险平价要求 RC i = RC j ∀ i , j \text{RC}_i = \text{RC}_j \quad \forall i,j RCi=RCji,j,即:
w i ⋅ ( Σ w ) i = w j ⋅ ( Σ w ) j w_i \cdot (\Sigma w)_i = w_j \cdot (\Sigma w)_j wi(Σw)i=wj(Σw)j

案例:3资产等权重组合,协方差矩阵对角线为[0.2², 0.3², 0.4²],非对角线为0,则风险贡献分别为0.20.21/3=0.0133,0.30.31/3=0.03,0.40.41/3=0.0533,显然不相等,需调整权重使各RC相等。

4.3 信息比率(IR)的计算

IR = μ p − μ b σ p − σ b \text{IR} = \frac{\mu_p - \mu_b}{\sigma_p - \sigma_b} IR=σpσbμpμb
其中 μ p \mu_p μp 是组合收益, μ b \mu_b μb 是基准收益(如标普500), σ p \sigma_p σp σ b \sigma_b σb 是跟踪误差。
举例:组合年化收益15%,基准10%,跟踪误差8%,则IR=(15%-10%)/8%=0.625,表明每承担1%跟踪误差获得0.625%超额收益。

5. 项目实战:代码实际案例和详细解释说明

5.1 开发环境搭建

5.1.1 硬件要求
  • CPU:4核以上(优化求解需并行计算)
  • 内存:16GB+(处理万级资产时需足够内存)
  • 存储:50GB SSD(存储历史行情数据)
5.1.2 软件依赖
pip install pandas numpy scipy cvxpy scikit-learn yfinance matplotlib pyfolio
5.1.3 数据获取

使用Yahoo Finance获取标普500成分股2010-2023年日度数据:

import yfinance as yf
tickers = yf.Tickers('^SP500').tickers  # 获取标普500成分股代码
data = yf.download(tickers, start='2010-01-01', end='2023-12-31', auto_adjust=True)['Adj Close']
returns = data.pct_change().dropna()

5.2 源代码详细实现和代码解读

5.2.1 数据预处理模块
def preprocess_data(prices):
    """
    数据预处理:去极值、标准化、筛选流动性充足资产
    """
    # 去除上市时间不足3年的资产
    min_trading_days = 750
    valid_tickers = prices.dropna(axis=1, thresh=min_trading_days).columns
    
    # 去极值: winsorize处理(保留1%-99%分位数)
    returns = prices[valid_tickers].pct_change().dropna()
    for col in returns.columns:
        q1 = returns[col].quantile(0.01)
        q99 = returns[col].quantile(0.99)
        returns[col] = np.clip(returns[col], q1, q99)
    
    # 筛选日均成交量前50%的资产(流动性筛选)
    volume = yf.download(valid_tickers, start='2010-01-01')['Volume']
    avg_volume = volume.mean(axis=0)
    liquid_tickers = avg_volume[avg_volume > avg_volume.median()].index
    returns = returns[liquid_tickers]
    
    return returns
5.2.2 组合优化模块
class PortfolioOptimizer:
    def __init__(self, returns):
        self.returns = returns
        self.n_assets = returns.shape[1]
        self.mu = np.mean(returns, axis=0)
        self.cov = np.cov(returns, rowvar=False)
    
    def markowitz_optimize(self, risk_aversion=1.0, no_short=True):
        # 调用3.1节的均值方差优化函数
        w = mean_variance_optimization(self.returns.T, risk_aversion, no_short)
        return w
    
    def risk_parity_optimize(self, target_risk=0.15):
        # 调用3.2节的风险平价优化函数
        w = risk_parity_optimization(self.returns.T, target_risk)
        return w
    
    def ml_enhanced_optimize(self, factors, test_size=0.2):
        # 因子筛选+均值方差优化
        selected_factors = factor_selection(factors, self.returns.iloc[1:].values, test_size)
        predicted_returns = model.predict(factors.iloc[:-1])  # 假设model已训练
        w = mean_variance_optimization(predicted_returns.reshape(-1, 1), risk_aversion=1.0)
        return w
5.2.3 绩效评估模块
import pyfolio as pf

def evaluate_portfolio(weights, returns, benchmark_returns):
    """
    计算12个绩效指标
    """
    portfolio_returns = (returns @ weights).dropna()
    results = {
        '年化收益': (1 + portfolio_returns.mean())**252 - 1,
        '夏普比率': pf.timeseries.sharpe_ratio(portfolio_returns),
        '最大回撤': pf.timeseries.max_drawdown(portfolio_returns),
        '信息比率': pf.timeseries.information_ratio(portfolio_returns, benchmark_returns),
        '波动率': portfolio_returns.std() * np.sqrt(252),
        'Sortino比率': pf.timeseries.sortino_ratio(portfolio_returns),
        'Calmar比率': (portfolio_returns.mean()*252) / pf.timeseries.max_drawdown(portfolio_returns),
        '偏度': portfolio_returns.skew(),
        '峰度': portfolio_returns.kurtosis(),
        '胜率': (portfolio_returns > 0).mean(),
        '盈亏比': (portfolio_returns[portfolio_returns>0].mean()) / (-portfolio_returns[portfolio_returns<0].mean()),
        '跟踪误差': np.std(portfolio_returns - benchmark_returns) * np.sqrt(252)
    }
    return results

5.3 代码解读与分析

  1. 数据预处理:通过去极值和流动性筛选,排除异常波动和交易不活跃的资产,确保输入数据质量
  2. 优化算法:均值方差模型使用cvxpy求解凸优化问题,风险平价通过迭代调整权重使风险贡献均衡,机器学习模型提升预期收益预测精度
  3. 绩效评估:结合传统风险指标(夏普比率、最大回撤)和高阶矩指标(偏度、峰度),全面评估组合风险收益特征

6. 实际应用场景

6.1 机构投资者:大规模资产配置

  • 案例:某主权财富基金管理千亿美元资产,使用风险平价策略配置股票、债券、黄金、另类投资
    • 优势:避免单一资产类别过度集中风险(如2020年美股熔断时债券和黄金对冲股市下跌)
    • 挑战:跨资产类别协方差矩阵的动态更新(需高频数据处理能力)

6.2 个人投资者:因子驱动的主动管理

  • 案例:某高净值个人通过量化筛选低PE+高ROE的A股资产,构建10-15只股票的组合
    • 策略:每月调仓,使用均值方差模型优化权重,加入行业集中度约束(单行业不超过20%)
    • 效果:2018-2023年期间夏普比率1.2,超越同期沪深300指数(夏普0.8)

6.3 对冲基金:多策略复合优化

  • 配置方案:60%资产用风险平价配置股债,40%用机器学习模型筛选alpha因子资产
    • 风险控制:设置组合VaR阈值(每日监控,超过1.5%时自动减仓)
    • 成本管理:在优化目标中加入交易成本项(滑点0.2%+佣金0.1%)

7. 工具和资源推荐

7.1 学习资源推荐

7.1.1 书籍推荐
  1. 《量化投资与机器学习》(Marcos López de Prado)
    • 亮点:涵盖机器学习在因子挖掘、组合优化中的前沿应用
  2. 《投资组合理论与资本市场》(William Sharpe)
    • 经典:Markowitz理论的数学推导与实证分析
  3. 《风险平价投资:理论与实践》(Antti Ilmanen)
    • 实战:桥水基金风险平价策略的深度解析
7.1.2 在线课程
  • Coursera《Quantitative Finance Specialization》(普林斯顿大学)
  • Udemy《Python for Algorithmic Trading & Portfolio Optimization》
  • 中国大学MOOC《金融工程中的最优化方法》(清华大学)
7.1.3 技术博客和网站
  • Quantopian Blog:量化策略实战案例(含Python代码)
  • SSRN电子期刊:最新量化投资研究论文(https://ssrn.com/)
  • 果仁网:A股量化回测平台(提供实盘接口)

7.2 开发工具框架推荐

7.2.1 IDE和编辑器
  • Jupyter Notebook:交互式开发(适合快速验证模型)
  • PyCharm Professional:支持调试大型量化框架(如多进程优化)
  • VS Code:轻量级编辑器(配合Jupyter插件使用)
7.2.2 调试和性能分析工具
  • cProfile:Python代码性能分析(定位优化求解瓶颈)
  • Line_profiler:逐行代码耗时分析(优化算法迭代效率)
  • Optuna:超参数优化(自动搜索最佳风险厌恶系数)
7.2.3 相关框架和库
工具功能官网
cvxpy凸优化求解www.cvxpy.org
scikit-learn机器学习因子筛选scikit-learn.org
Pyfolio绩效评估与可视化pyfolio.readthedocs.io
Zipline历史行情回测zipline.io
Bloomberg API专业金融数据获取dev.bloomberg.com

7.3 相关论文著作推荐

7.3.1 经典论文
  1. 《Portfolio Selection》(Harry Markowitz, 1952)
    • 现代投资组合理论奠基之作,提出均值方差优化框架
  2. 《Risk Parity Portfolios: Efficient Portfolios through True Diversification》(Edward Qian, 2005)
    • 风险平价策略的理论构建与实证检验
  3. 《Machine Learning for Asset Pricing》(Marcos López de Prado, 2018)
    • 机器学习在预期收益预测中的应用创新
7.3.2 最新研究成果
  • 《Deep Learning for Portfolio Optimization》(2023, Journal of Financial Data Science)
    • 提出基于LSTM的动态协方差矩阵预测模型
  • 《ESG Integration in Risk Parity Strategies》(2022, SSRN)
    • 环境、社会、治理因子对风险平价配置的影响分析
7.3.3 应用案例分析
  • 桥水基金《全天候策略白皮书》:解读风险平价在不同经济周期的配置逻辑
  • 贝莱德《AI-driven Factor Investing》:展示机器学习如何提升因子选股效率

8. 总结:未来发展趋势与挑战

8.1 技术趋势

  1. 深度学习应用

    • 使用Transformer模型处理非结构化数据(财报文本、新闻情绪)
    • 生成式AI辅助策略开发(自动生成因子组合)
  2. 实时优化系统

    • 低延迟计算框架(如Spark Streaming)支持日内再平衡
    • 高频数据驱动的动态协方差矩阵更新
  3. ESG因子整合

    • 将碳排放量、董事会多样性等ESG指标纳入优化模型
    • 开发可持续投资的专用优化目标函数(如最大化风险调整后ESG得分)

8.2 核心挑战

  1. 数据质量问题

    • 非结构化数据的噪声处理(如社交媒体数据的情感分析偏差)
    • 长尾资产的历史数据不足(加密货币、新型衍生品)
  2. 过拟合风险

    • 机器学习模型在因子筛选中的多重检验问题
    • 历史回测与实盘表现的偏差(幸存者偏差、前视偏差)
  3. 市场有效性变化

    • 量化策略同质化导致超额收益衰减
    • 监管政策变化对交易成本模型的影响(如T+0制度试点)

8.3 行业影响

  • 资管行业变革:传统主动管理向量化多策略转型,对分析师的编程能力要求提升
  • 零售投资民主化:低门槛量化工具(如智能投顾APP)普及,促进个人投资者理性配置
  • 监管科技(RegTech):组合优化需嵌入合规约束(如持仓集中度限制、反洗钱规则)

9. 附录:常见问题与解答

Q1:均值方差模型对输入数据敏感吗?

A:非常敏感。期望收益和协方差矩阵的估计误差会显著影响结果,建议使用收缩估计(Shrinkage)或贝叶斯方法提升稳定性。

Q2:风险平价策略在熊市表现如何?

A:由于均衡配置风险,在单一资产类别暴跌时(如2020年美股),其他类别(债券、黄金)的对冲作用会降低组合波动,但需注意跨资产相关性突变(如2022年股债双杀)。

Q3:机器学习模型适合高频调仓吗?

A:不建议。高频交易需要低延迟系统和市场微观结构模型,而机器学习因子通常基于中低频数据(如月度财务指标),更适合中长线配置。

Q4:如何处理组合优化中的交易成本?

A:在目标函数中加入交易成本项(如线性成本模型: 成本 = ∑ λ i ∣ w i − w i o l d ∣ \text{成本} = \sum \lambda_i |w_i - w_i^{old}| 成本=λiwiwiold),或在约束条件中限制调仓幅度(如单资产权重变化不超过10%)。

10. 扩展阅读 & 参考资料

  1. 数据来源:

    • Yahoo Finance(免费行情数据)
    • Wind数据库(专业金融数据)
    • CRSP/Compustat(美股历史基本面数据)
  2. 开源项目:

    • QuantEcon(量化经济模型库)
    • Backtrader(Python回测框架)
    • Alphalens(因子有效性分析工具)
  3. 行业报告:

    • 晨星《全球量化基金年度报告》
    • 中金公司《中国量化投资白皮书》

通过以上理论解析、代码实现与案例分析,读者可全面掌握量化价值投资中组合优化的核心技术,并能根据实际场景定制化开发策略。关键在于理解不同模型的假设前提与适用边界,结合数据特征和投资目标选择最优方案,同时持续监控市场环境变化对模型的影响。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值