量化投资基础(一)之均值方差模型一

点赞、关注,养成良好习惯
Life is short, U need Python
量化投资基础系列,不断更新中


1. 投资组合收益率与风险

假设市场有 N N N 个资产,其随机收益率分别为 R 1 , R 2 , … , R N R_1,R_2,\dots,R_N R1,R2,,RN ,对应的投资比例分别为 w 1 , w 2 , … , w N w_1,w_2,\dots,w_N w1,w2,,wN,且 w 1 + w 2 + ⋯ + w N = 1 w_1+w_2+\dots+w_N=1 w1+w2++wN=1

  • 投资组合的收益率
    R p = ω 1 R 1 + ω 2 R 2 + ⋯ + ω N R N R_{p} = \omega_{1}R_{1}+\omega_{2}R_{2}+\dots+\omega_{N}R_{N} Rp=ω1R1+ω2R2++ωNRN
  • 投资组合收益率的期望(期望收益率)
    E ( R p ) = ω 1 E ( R 1 ) + ω 2 E ( R 2 ) + ⋯ + ω N E ( R N ) \mathbb{E}(R_{p}) = \omega_{1}\mathbb{E}(R_{1})+\omega_{2}\mathbb{E}(R_{2})+\dots+\omega_{N}\mathbb{E}(R_{N}) E(Rp)=ω1E(R1)+ω2E(R2)++ωNE(RN)
  • 投资组合收益率的方差
    σ 2 ( R p ) = σ 2 ( ∑ i = 1 N ω i R i ) = ∑ i = 1 N ω i 2 σ 2 ( R i ) + ∑ i ≠ j ω i ω j σ ( R i , R j ) \begin{aligned} \sigma^{2}\left(R_{p}\right) &=\sigma^{2}\left(\sum_{i=1}^{N} \omega_{i} R_{i}\right) \\ &=\sum_{i=1}^{N} \omega_{i}^{2} \sigma^{2}\left(R_{i}\right)+\sum_{i \neq j} \omega_{i} \omega_{j} \sigma\left(R_{i}, R_{j}\right) \end{aligned} σ2(Rp)=σ2(i=1NωiRi)=i=1Nωi2σ2(Ri)+i=jωiωjσ(Ri,Rj)

2. 均值-方差模型

均值-方差模型 是由哈里·马科维茨 (H. M. Markowitz,1927.8.24–2023.6) 在 1952 年提出的风险投资模型。马科维茨把风险定义为收益率的波动率,首次将数理统计的方法应用到投资组合选择的研究中。这种方法使收益与风险的多目标优化达到最佳的平衡效果。

证券及其它风险资产的投资需要解决的两个核心问题:预期收益与风险。 那么如何测定组合投资的风险与收益、如何平衡这两项指标进行资产分配是市场投资者迫切需要解决的问题。正是在这样的背景下,在 上世纪 50 年代和 60 年代初,马可维兹理论(均值-方差模型)应运而生。

哈里·马科维茨,1927年8月24日生于美国伊利诺伊州。于1950年、1952年在芝加哥大学连续获得了经济学硕士、博士学位。 马科维茨一生著作颇丰,有专著及合著7本,重要理论文章30余篇,研究范围涉及金融微观分析及数学、计算机在金融经济学方面的应用。他的理论也曾影响了他的同时代学者。由于其出色的、开创性的工作,马科维茨威廉夏普默顿米勒分享了1990年诺贝尔经济学奖。

均值-方差模型的几个假设:

  • 投资者在考虑每一次投资选择时,其依据是某一持仓时间内的证券收益的概率分布。
  • 投资者是根据证券的期望收益率的方差或标准差估测证券组合的风险。
  • 投资者的决定仅仅是依据证券的风险和收益。
  • 在一定的风险水平上,投资者期望收益最大;相对应地,在一定的收益水平上,投资者希望风险最小。

2.1 模型一

  • 不考虑无风险 资产情形下 + 允许卖空
     目标函数:  min ⁡ ω i σ 2 ( R p ) = ∑ i = 1 N ω i 2 σ 2 ( R i ) + ∑ i ≠ j ω i ω j σ ( R i , R j ) = w T Σ w  s.t.  R ˉ p = ∑ i = 1 N ω i E ( R i ) ∑ i = 1 N ω i = 1 \begin{gathered} \text { 目标函数: } \min _{\omega_i} \sigma^2\left(\boldsymbol{R}_p\right)=\sum_{i=1}^N \omega_i^2 \sigma^2\left(\boldsymbol{R}_i\right)+\sum_{i \neq j} \omega_i \omega_j \sigma\left(\boldsymbol{R}_i, R_j\right)=w^T \Sigma w \\ \text { s.t. } \bar{R}_p=\sum_{i=1}^N \omega_i E\left(R_i\right) \\ \sum_{i=1}^N \omega_i=1 \end{gathered}  目标函数ωiminσ2(Rp)=i=1Nωi2σ2(Ri)+i=jωiωjσ(Ri,Rj)=wTΣw s.t. Rˉp=i=1NωiE(Ri)i=1Nωi=1
  • R p ˉ \bar{R_{p}} Rpˉ——投资人的投资目标,即投资人期待投资组合的期望值;
  • ω i ( i = 1 , 2 , … , N ) \omega_{i} (i=1,2,\dots,N) ωi(i=1,2,,N)——投资比重。

模型一的最优解
ω ∗ = Σ − 1 e n c = Σ − 1 e n b R p ˉ \omega^{*}=\frac{\Sigma^{-1}e_{n}}{c}=\frac{\Sigma^{-1} e_{n}}{b} \bar{R_{p}} ω=cΣ1en=bΣ1enRpˉ

其中, b = r T Σ − 1 e n , c = e n T Σ − 1 e n b=r^{T} \Sigma^{-1} e_{n}, c=e_{n}^{T} \Sigma^{-1} e_{n} b=rTΣ1en,c=enTΣ1en

Proof

  • 构造拉格朗日函数
    L ( w , λ 1 , λ 2 ) = ∑ i = 1 n ∑ j = 1 n w i w j Cov ⁡ ( r i , r j ) − λ 1 ( ∑ i = 1 n r ˉ i w i − E ( R ) ) − λ 2 ( ∑ i = 1 n w i − 1 ) \mathcal{L}\left(w, \lambda_{1}, \lambda_{2}\right)=\sum_{i=1}^{n} \sum_{j=1}^{n} w_{i} w_{j} \operatorname{Cov}\left(r_{i}, r_{j}\right)-\lambda_{1}\left(\sum_{i=1}^{n} \bar{r}_{i} w_{i}-E(R)\right)-\lambda_{2}\left(\sum_{i=1}^{n} w_{i}-1\right) L(w,λ1,λ2)=i=1nj=1nwiwjCov(ri,rj)λ1(i=1nrˉiwiE(R))λ2(i=1nwi1)
    其中 λ 1 、 λ 2 \lambda_{1} 、 \lambda_{2} λ1λ2 为限制条件 1 、 2 中的拉格朗日乘子。
  • 对上式中 ω i , λ 1 , λ 2 \omega_{i},\lambda_{1}, \lambda_{2} ωiλ1,λ2 分别求导可得:
    ∂ L ∂ w i = ∑ j = 1 n w j Cov ⁡ ( r i , r j ) − λ 1 r ˉ i − λ 2 = 0    ( i = 1 , 2 , … , n ) ∂ L ∂ λ 1 = ∑ i = 1 n r ˉ i w i − E ( R ) = 0 ∂ L ∂ λ 2 = ∑ i = 1 n w i − 1 = 0 \begin{array}{l} \frac{\partial \mathcal{L}}{\partial w_{i}}=\sum_{j=1}^{n} w_{j} \operatorname{Cov}\left(r_{i}, r_{j}\right)-\lambda_{1} \bar{r}_{i}-\lambda_{2}=0 \ \ (i=1,2,\dots,n)\\ \frac{\partial \mathcal{L}}{\partial \lambda_{1}}=\sum_{i=1}^{n} \bar{r}_{i} w_{i}-E(R)=0 \\ \frac{\partial \mathcal{L}}{\partial \lambda_{2}}=\sum_{i=1}^{n} w_{i}-1=0 \end{array} wiL=j=1nwjCov(ri,rj)λ1rˉiλ2=0  (i=1,2,,n)λ1L=i=1nrˉiwiE(R)=0λ2L=i=1nwi1=0
  • ( w 1 , … , w n ) T = w , ( r ˉ 1 , … , r ˉ n ) T = r , ( Cov ⁡ ( ( r i , r j ) ) = Σ , ( 1 , … , 1 ) = e n (w_{1},\dots,w_{n})^{T}=\mathbf{w}, (\bar{r}_{1},\dots,\bar{r}_{n})^{T}=\mathbf{r}, \left(\operatorname{Cov}((r_{i}, r_{j})\right)=\mathbf{\Sigma},(1,\dots,1)=\mathbf{e_{n}} (w1,,wn)T=w,(rˉ1,,rˉn)T=r,(Cov((ri,rj))=Σ,(1,,1)=en,转化为矩阵形式如下:
    2 Σ w − λ 1 r − λ 2 e n = 0 w T r − E ( R ) = 0 w T e n − 1 = 0 \begin{array}{l} 2 \mathbf{\Sigma} \mathbf{w}-\lambda_{1} \mathbf{r}-\lambda_{2} \mathbf{e_{n}}=0 \\ \mathbf{w}^{T} \mathbf{r}-E(R)=0 \\ \mathbf{w}^{T} \mathbf{e_{n}}-1=0 \end{array} 2Σwλ1rλ2en=0wTrE(R)=0wTen1=0
  • 假设投资组合中各资产不存在完全线性相关,即收益率协方差矩阵 Σ \mathbf{\Sigma} Σ 可逆,根据上式进一步推导则有:
    w = 1 2 Σ − 1 ( λ 1 r + λ 2 e n ) E ( R ) = w T r w T e n = 1 \begin{array}{l} \mathbf{w} = \frac{1}{2} \mathbf{\Sigma}^{-1}(\lambda_{1} \mathbf{r}+\lambda_{2} \mathbf{e_{n}}) \\ E(R) = \mathbf{w}^{T} \mathbf{r} \\ \mathbf{w}^{T} \mathbf{e_{n}}=1 \end{array} w=21Σ1(λ1r+λ2en)E(R)=wTrwTen=1
  • 化简得:
    { E ( R ) = 1 2 ( λ 1 r T Σ − 1 r + λ 2 e n T Σ − 1 r ) 1 = 1 2 ( λ 1 r T Σ − 1 e n + λ 2 e n T Σ − 1 e n ) \left\{\begin{array}{l} E(R)=\frac{1}{2}\left(\lambda_{1} r^{T} \Sigma^{-1} r+\lambda_{2} e_{n}^{T} \Sigma^{-1} r\right) \\ 1=\frac{1}{2}\left(\lambda_{1} r^{T} \Sigma^{-1} e_{n}+\lambda_{2} e_{n}^{T} \Sigma^{-1} e_{n}\right) \end{array}\right. {E(R)=21(λ1rTΣ1r+λ2enTΣ1r)1=21(λ1rTΣ1en+λ2enTΣ1en)
  • 于是
    [ E ( R ) 1 ] = 1 2 [ r T Σ − 1 r e n T Σ − 1 r r T Σ − 1 e n e n T Σ − 1 e n ] [ λ 1 λ 2 ] \begin{array}{l} \left[\begin{array}{c} E(R) \\ 1 \end{array}\right]=\frac{1}{2}\left[\begin{array}{cc} r^{T} \Sigma^{-1} r & e_{n}^{T} \Sigma^{-1} r \\ r^{T} \Sigma^{-1} e_{n} & e_{n}^{T}\Sigma^{-1} e_{n} \end{array}\right]\left[\begin{array}{l} \lambda_{1} \\ \lambda_{2} \end{array}\right] \end{array} [E(R)1]=21[rTΣ1rrTΣ1enenTΣ1renTΣ1en][λ1λ2]
  • a = r T Σ − 1 r , b = r T Σ − 1 e n , c = e n T Σ − 1 e n a =r^{T} \Sigma^{-1} r, b=r^{T} \Sigma^{-1} e_{n}, c=e_{n}^{T} \Sigma^{-1} e_{n} a=rTΣ1r,b=rTΣ1en,c=enTΣ1en, 有:
    σ p 2 = w T Σ w = 1 4 ( λ 1 r T Σ − 1 + λ 2 e n T Σ − 1 ) ⋅ Σ Σ − 1 ( λ 1 r + λ 2 e n ) = 1 4 ( λ 1 2 r T Σ − 1 r + 2 λ 1 λ 2 r T Σ − 1 e n + λ 2 2 e n T Σ − 1 e n ) = 1 4 [ λ 1 λ 2 ] [ r T Σ − 1 r r T Σ − 1 e n r T Σ − 1 e n e n T Σ − 1 e n ] [ λ 1 λ 2 ] = 1 4 [ λ 1 λ 2 ] [ a b b c ] [ λ 1 λ 2 ] \begin{array}{l} \sigma_{p}^{2} = w^{T} \Sigma w \\ = \frac{1}{4}\left(\lambda_{1} r^{T} \Sigma^{-1}+\lambda_{2} e_{n}^{T} \Sigma^{-1}\right) \cdot \Sigma \Sigma^{-1}\left(\lambda_{1} r+\lambda_{2} e_{n}\right) \\ =\frac{1}{4}\left(\lambda_{1}^{2} r^{T} \Sigma^{-1} r+2 \lambda_{1} \lambda_{2} r^{T} \Sigma^{-1} e_{n}+\lambda_{2}^{2} e_{n}^{T} \Sigma^{-1} e_{n}\right) \\ =\frac{1}{4}\left[\lambda_{1} \quad \lambda_{2}\right]\left[\begin{array}{cc} r^{T} \Sigma^{-1} r & r^{T} \Sigma^{-1} e_{n} \\ r^{T} \Sigma^{-1} e_{n} & e_{n}^{T} \Sigma^{-1} e_{n} \end{array}\right]\left[\begin{array}{l} \lambda_{1} \\ \lambda_{2} \end{array}\right] \\ =\frac{1}{4}\left[\lambda_{1} \quad \lambda_{2}\right]\left[\begin{array}{ll} a & b \\ b & c \end{array}\right]\left[\begin{array}{l} \lambda_{1} \\ \lambda_{2} \end{array}\right] \end{array} σp2=wTΣw=41(λ1rTΣ1+λ2enTΣ1)ΣΣ1(λ1r+λ2en)=41(λ12rTΣ1r+2λ1λ2rTΣ1en+λ22enTΣ1en)=41[λ1λ2][rTΣ1rrTΣ1enrTΣ1enenTΣ1en][λ1λ2]=41[λ1λ2][abbc][λ1λ2]

    [ E ( R ) 1 ] = 1 2 [ a b b c ] [ λ 1 λ 2 ] \begin{array}{l} \left[\begin{array}{c} E(R) \\ 1 \end{array}\right]=\frac{1}{2}\left[\begin{array}{cc} a & b \\ b & c \end{array}\right]\left[\begin{array}{l} \lambda_{1} \\ \lambda_{2} \end{array}\right] \end{array} [E(R)1]=21[abbc][λ1λ2]
  • 于是
    σ p 2 = 1 2 [ λ 1 λ 2 ] [ a b b c ] [ a b b c ] − 1 ⋅ 1 2 [ a b b c ] [ λ 1 λ 2 ] = [ E ( R ) 1 ] [ a   b b c ] − 1 [ E ( R ) 1 ] \sigma_{p}{ }^{2} = \frac{1}{2}\left[\lambda_{1} \quad \lambda_{2}\right]\left[\begin{array}{ll} a & b \\ b & c \end{array}\right] \left[\begin{array}{ll} a & b \\ b & c \end{array}\right]^{-1} \cdot \frac{1}{2} \left[\begin{array}{ll} a & b \\ b & c \end{array}\right] \left[\begin{array}{l} \lambda_{1} \\ \lambda_{2} \end{array}\right] =\left[\begin{array}{ll} E(R) & 1 \end{array}\right]\left[\begin{array}{cc} a & \mathrm{~b} \\ b & c \end{array}\right]^{-1}\left[\begin{array}{c} E(R) \\ 1 \end{array}\right] σp2=21[λ1λ2][abbc][abbc]121[abbc][λ1λ2]=[E(R)1][ab bc]1[E(R)1]


[ a b b c ] − 1 = 1 a c − b 2 [ c − b − b a ] \left[\begin{array}{ll} a & b \\ b & c \end{array}\right]^{-1} =\frac{1}{ac-b^2} \left[\begin{array}{ll} c & -b \\ -b & a \end{array}\right] [abbc]1=acb21[cbba]

  • 则可卖空情况下有效前沿的解析解为:
    σ p 2 = c E ( R ) 2 − 2 b E ( R ) + a a c − b 2 \sigma_{p}{ }^{2}=\frac{c E(R)^{2}-2 b E(R)+a}{a c-b^{2}} σp2=acb2cE(R)22bE(R)+a
  • E ( R ) = b c E(R)=\frac{b}{c} E(R)=cb 时,有极值 σ p = 1 c \sigma_{p}=\sqrt{\frac{1}{c}} σp=c1 , 即最小方差点坐标为 ( 1 c , b c ) \left(\sqrt{\frac{1}{c}}, \frac{b}{c}\right) (c1 ,cb)
  • 于是:
    ω ∗ = Σ − 1 e n c = Σ − 1 e n b R p ˉ . \omega^{*}=\frac{\Sigma^{-1}e_{n}}{c}=\frac{\Sigma^{-1} e_{n}}{b} \bar{R_{p}}. ω=cΣ1en=bΣ1enRpˉ.

特别地,当 N = 2 N=2 N=2
min ⁡ ω σ 2 ( R p ) = ω 1 2 σ 1 2 + ω 2 2 σ 2 2 + ω 1 ω 2 σ 12 + ω 1 ω 2 σ 21 s.t.  R ˉ p = ω 1 E ( R 1 ) + ω 2 E ( R 2 ) ω 1 + ω 2 = 1 \begin{equation} \min _{\omega}\sigma^{2}\left(R_{p}\right)=\omega_{1}^{2} \sigma_{1}^{2}+\omega_{2}^{2}\sigma_{2}^{2}+\omega_{1} \omega_{2}\sigma_{12}+\omega_{1}\omega_{2}\sigma_{21}\\ \text {s.t. } \bar{R}_{p}=\omega_{1}\mathbb{E}\left(R_{1}\right)+\omega_{2} \mathbb{E}\left(R_{2}\right)\\ \omega_{1}+\omega_{2}=1 \end{equation} ωminσ2(Rp)=ω12σ12+ω22σ22+ω1ω2σ12+ω1ω2σ21s.t. Rˉp=ω1E(R1)+ω2E(R2)ω1+ω2=1

ω 1 \omega_{1} ω1 ω 2 \omega_{2} ω2 求导得:

[ Σ e R ˉ e ′ 0 0 R ˉ ′ 0 0 ] [ ω ∗ λ 1 λ 2 ] = [ 0 1 R ˉ p ] \left[\begin{array}{ccc} \Sigma & e & \bar{R} \\ e^{\prime} & 0 & 0 \\ \bar{R}^{\prime} & 0 & 0 \end{array}\right]\left[\begin{array}{c} \omega^{*} \\ \lambda_{1} \\ \lambda_{2} \end{array}\right]=\left[\begin{array}{c} 0 \\ 1 \\ \bar{R}_{p} \end{array}\right] ΣeRˉe00Rˉ00 ωλ1λ2 = 01Rˉp

其中
Σ = [ σ 1 2 σ 12 σ 21 σ 2 2 ] \Sigma=\left[\begin{array}{cc} \sigma_{1}^{2} & \sigma_{12}\\ \sigma_{21} & \sigma_{2}^{2} \end{array}\right] Σ=[σ12σ21σ12σ22] R 1 R_1 R1 R 2 R_2 R2 的协方差;


R ˉ = [ E ( R 1 ) E ( R 2 ] \bar{R}=\left[\begin{array}{c} E(R_{1}) \\ E(R_{2} \end{array}\right] Rˉ=[E(R1)E(R2]为资产收益率期望值构成的列向量。

3. 均值–方差模型一之Python实现

  • 不考虑 无风险 资产情形下 + 允许卖空

数据集:“stock_data.txt”

# 导入包
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['simhei']
plt.rcParams['axes.unicode_minus'] = False

读取数据集

# 读取数据
stock = pd.read_csv('datas\stock_data.txt',sep='\t',index_col='Trddt')
# 转换时间格式
stock.index = pd.to_datetime(stock.index)       
stock.head()      
###################################################### 提取部分数据##############################################################
## 福建高速(600033)
fjgs = stock.loc[stock.Stkcd==600033,'Dretwd'] 
fjgs.name = 'fjgs'

## 浙能电力(600023)
zndl = stock.loc[stock.Stkcd==600023,'Dretwd']
zndl.name='zndl'

## 生益科技(600183)
sykj = stock.loc[stock.Stkcd==600183,'Dretwd']
sykj.name='sykj'

## 华夏银行(600015)
hxyh = stock.loc[stock.Stkcd==600015,'Dretwd']
hxyh.name = 'hxyh'

## 白云机场(600004)
byjc = stock.loc[stock.Stkcd==600004,'Dretwd']
byjc.name = 'byjc'
# 合并数据集(DataFrame)
sh_return = pd.concat([byjc,fjgs,hxyh,sykj,zndl],axis=1)          
sh_return.head()                                               

数据处理

# 删除缺失数据(NaN)
sh_return = sh_return.dropna()                  
sh_return.head()

# 累积求和(cumsum),求积(cumprod):默认参数0表示列求和、积,参数1表示行求和、积
cumreturn = (1 + sh_return).cumprod()            
cumreturn.head()

数据可视化分析

# 绘制收益率时序图
sh_return.plot(figsize=(8,6))

plt.title('5只股票的日收益率时序图(2014-2015)')
plt.xlabel('date')
plt.ylabel('return')
# plt.legend(loc='lower center',bbox_to_anchor=(0.5,-0.3),ncol=5, fancybox=True, shadow=True)
plt.legend()

plt.show()

在这里插入图片描述

# 绘制累积收益率时序图
cumreturn.plot(figsize=(8,6))

plt.title('5只股票的累计日收益率时序图(2014-2015)')
plt.xlabel('date')
plt.ylabel('cumreturn')

plt.show()

在这里插入图片描述

# 查看回报率相关性
sh_return.corr()

在这里插入图片描述

  • 从上述相关系数矩阵可知:5只股票之间都是正相关的,白云机场(600004)和福建高速(600033)相关性最高(同属于交通运输行业)。

  • 接下来,求解 资产最优配置比例 以期达到目标期望收益率时风险最小化。

  • 投资者的资产配置问题最终可以通过二次规划问题表示,该问题在数学上的一阶条件形式如下:借助Python构建 MeanVariance类,可以根据输入的收益率序列,求解二次规划问题计算出最优资产比例,并绘制最小方差前缘曲线(如图4所示)。

求解二次规划问题

# 导入线性代数库
from scipy import linalg
代码及上述文档资源详见资源包(含数据)!

在这里插入图片描述
通过上图发现:通过均值-方差模型得到的最优投资组合累计收益率在初期远远不如随机产生投资组合的累计收益率高,但是经过一段时间的积累发现均值-方差模型对应的投资组合策略的优势越来越明显,尤其是在2015年3月15日以后优势明显加速!

4. 总结

  • 本案例主要介绍了均值-方差模型的一种形式(模型一),然后通过Python语言实现了均值-方差模型,并把均值-方差模型的投资组合策略与随机配置投资组合策略进行了对比分析,结果发现在长期时间内均值-方差模型配置投资组合比随机配置投资组合更胜一筹。

  • 下一步,将对均值-方差模型进行改进,引入投资者对资产的主观观点到模型中,进而形成新的预期收益率,即Black-Litterman模型。

5. 参考资料

  • 蔡立耑. 量化投资以Python为工具[M]. 北京:电子工业出版社,2017.
  • PyQuant. 量化投资基础[M]. 北京:科学出版社,2024.

6. 资源包下载

  • 链接:https://pan.baidu.com/s/1SU8K75tZTFH_xVGG0Q8mPg
  • 提取码:1234

  • 写作不易,切勿白剽
  • 点赞关注,最大鼓励
  • 持续更新,未完待续…
  • 29
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

PyQuant

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值