详解CAPM的数学推导
详解CAPM的数学推导
- 资本配置线
- 最优投资组合
- 市场投资者与资本资产定价公式
今年居然是咱本命年啊,难怪从二月开始就总是遇到各种奇奇怪怪的bug,不管怎么说还是祝我生日快乐吧。虽说已经不搞金融了,但毕竟是学了四年的,趁今天生日写篇博客纪念一下,希望自己不忘初心。这篇博客就用来介绍资本资产定价模型 (capital assets pricing model, CAPM)的数学推导好了,之所以要介绍这个最基础的定价模型就是因为它太基础以至于很多教材上都没有正式的数学推导,而是着重介绍思想和概念。CAPM是资产定价理论最基础的模型,它的奠基之作是Markowitz于1952年3月发表在JoF上的portfolio selection。
在介绍数学推导之前,先叙述一下假设。CAPM的假设主要有两个,完美市场(perfect markets)和同质投资者(identical investors)。完美市场有下面一些含义:
- 完全竞争:也就是凭单个投资者无法撼动大盘
- 无税
- 无交易成本
- 所有资产公开交易、无限可分:可分性对资产的交易是有限制的,比如大豆期货交易单位是一手,一手是十吨,这就是大豆期货的最小交易单位,并且报价最小变动单位是1元/吨;如果资产无限可分,那么交易单位以及价格就是连续的,在建模的时候我们就可以用导数等工具了;
- 无做空限制:在对资产的头寸建模的时候,借贷与做空限制会影响资产投资权重的取值范围,如果无任何限制,那么权重取值范围就是一切实数;如果只能用自有资金交易,那么权重必须小于等于1;如果不能做空,那么权重必须非负;
- 借贷共用同一个无风险利率
同质投资者也有很丰富的内涵:
- 短视:因为CAPM讨论的是一期内的投资活动,所以假设投资者只做当期投资的最优化,在CAPM的扩展中讨论做多期决策的模型有ICAPM、CCAPM等;
- 均值-方差效用:指的是所有投资者都适用均值-方差效用,也就是正的期望收益带来正效用,风险(用方差衡量)带来负效用;
- 同质预期:在所有投资者眼中,资产未来收益的分布已知且相同,这个假设的好处是不同投资者的区别就只有风险厌恶程度了,同质预期意味着市场上只有一种预期,投资者会根据自身风险厌恶程度选择最优投资组合,按风险厌恶程度加总得到一个“平均”投资者就可以代表整个市场的看法。
资本配置线
学过财会的朋友都知道,所谓投资活动,花出去的钱是要形成资产的,因此要对投资活动进行建模,我们需要分别对三个对象建模:
- 投资机会(也就是不同投资形成的资产的性质,而资产最重要的属性是未来带来的现金流入,所以这一步要建模的是资产未来收益的分布特征)
- 投资者(也就是投资者的效用函数)
- 投资选择(回答投资者如何在各种投资机会之间进行选择的问题)
先讨论第一步,既然在假设里提到过,投资者适用均值-方差效用,那么我们需要的资产未来收益的分布特征也就是未来收益的期望与方差,用rpr_prp表示风险资产的收益,记
μp=E[rp]σp2=Var(rp)\mu_p = E[r_p] \\ \sigma^2_p = Var(r_p)μp=E[rp]σp2=Var(rp)
因为投资者可以按无风险利率进行借贷,也就相当于投资者可以投资一种收益为无风险利率,方差为0的无风险资产,我们引入rfr_frf作为无风险资产的收益。
接下来讨论第二步,引入投资者的效用函数,用μ\muμ表示任一资产组合的期望收益,σ2\sigma^2σ2表示它的方差,则投资者适用均值-方差效用:
U(μ,σ)=μ−A2σ2,A>0U(\mu,\sigma)=\mu-\frac{A}{2}\sigma^2,A>0U(μ,σ)=μ−2Aσ2,A>0
这里的常数AAA代表投资者的风险厌恶程度,AAA越大,∂U∂σ2\frac{\partial U}{\partial \sigma^2}∂σ2∂U越小,说明投资者越厌恶风险;并且投资者具有同质预期,所以当我们把投资者抽象为一个效用函数之后,区分不同投资者的唯一参数就是风险厌恶程度。
最后讨论第三步,投资者怎么做资产选择。现在我们只有两种可选的资产:风险资产与无风险资产,以及它们可能的线性组合,所以直接引入风险资产的投资权重www,则无风险资产的投资权重为1−w1-w1−w,这个组合的收益为wrp+(1−w)rfwr_p+(1-w)r_fwrp+(1−w)rf,这是一个随机变量,但我们也只需要它的期望和方差:
μ=E[wrp+(1−w)rf]=wμp+(1−w)rfσ2=Var(wrp+(1−w)rf)=w2σp2\mu = E[wr_p+(1-w)r_f]=w\mu_p+(1-w)r_f \\ \sigma^2 = Var(wr_p+(1-w)r_f)=w^2 \sigma^2_pμ=E[wrp+(1−w)rf]=wμp+(1−w)rfσ2=Var(wrp+(1−w)rf)=w2σp2
综上,投资者通过效用最大化完成自己的资产配置,但效用最大化时受到可选资产的约束,因此投资活动可以用下面的带等式约束的最优化表示:
maxwU(μ,σ)=μ−A2σ2s.t.μ=wμp+(1−w)rfσ2=w2σp2\max_{w}\ \ U(\mu,\sigma)=\mu-\frac{A}{2}\sigma^2 \\ s.t. \ \ \mu = w\mu_p+(1-w)r_f \\ \sigma^2 = w^2 \sigma^2_pwmax U(μ,σ)=μ−2Aσ2s.t. μ=wμp+(1−w)rfσ2=w2σp2
等式约束代表所有可选的资产组合,消去权重www可以得到这些资产组合收益的均值与方差之间的关系:
w=σσpμ=rf+μp−rfσpσw = \frac{\sigma}{\sigma_p} \\ \mu = r_f+\frac{\mu_p-r_f}{\sigma_p}\sigmaw=σpσμ=rf+σpμp−rfσ
σ\sigmaσ代表资产组合的波动率(标准差),也是用来衡量资产组合的风险的,显然投资者所有可选的资产组合期望与波动率之间是线性关系,称这个线性关系为资本配置线(capital allocation line, CAL),其中截距是rfr_frf,正好是无风险资产的收益,斜率是
μp−rfσp\frac{\mu_p-r_f}{\sigma_p}σpμp−rf
称这个比率为Sharpe比率,记为SSS,它代表对这种风险资产而言,每多承担一单位的总风险,可以获得的超额收益。
上图展示了资本配置线的一些重要特征,除了我们讨论过的截距和斜率外,还需要注意一下PPP点,它代表风险资产,如果风险资产的投资权重位于0和1之间(不能借贷),那么资本配置线就是从纵截距到PPP点的线段;如果投资权重大于1(借钱买风险资产,或者说做空无风险资产、做多风险资产),那么资本配置线就是从PPP点到无穷的射线。
最后我们完成最优权重的推导,
U(w)=U(μ(w),σ2(w))=[wμp+(1−w)rf]−A2w2σp2=−A2σp2w2+(μp−rf)w+rfU(w) = U(\mu(w),\sigma^2(w))=[w\mu_p+(1-w)r_f ]-\frac{A}{2}w^2 \sigma^2_p \\ = -\frac{A}{2} \sigma^2_p w^2+(\mu_p-r_f)w+r_fU(w)=U(μ(w),σ2(w))=[wμp+(1−w)rf]−2Aw2σp2=−2Aσp2w2+(μp−rf)w+rf
这就是关于www的二次函数,最优解为
w∗=μp−rfAσp2w^*=\frac{\mu_p-r_f}{A\sigma^2_p}w∗=Aσp2μp−rf
也就是说,投资者选择的最优权重完全取决于风险资产未来收益的分布特征与投资者的风险厌恶程度。
上图展示了AAA从小到大时的效用关于投资权重的二次曲线,可以发现风险厌恶程度越高的投资者构造最优投资时投资的风险资产越少,但实现的最大效用也就更小。
最优投资组合
现在我们推广CAL,虽然在推导CAL的时候讨论的是一个风险资产与一个无风险资产的组合,但是不管是一个风险资产还是一篮子风险资产,在CAPM的假设下建模的时候都只是一个期望和一个方差而已。所以我们做一个简单的扩展,假设CAL中的风险资产其实是两个风险资产的组合,假设这两种风险资产的权重分别为w,1−ww,1-ww,1−w,收益为r1,r2r_1,r_2r1,r2,期望收益为μ1,μ2\mu_1,\mu_2μ1,μ2,方差为σ12,σ22\sigma^2_1,\sigma^2_2σ12,σ22,相关性系数为ρ\rhoρ,则它们的组合收益和方差为
μp=wμ1+(1−w)μ2σp2=w2σ12+(1−w)2σ22+2w(1−w)ρσ1σ2=(σ12−2ρσ1σ2+σ22)w2+(2ρσ1σ2−2σ2)w+σ22\mu_p=w\mu_1+(1-w)\mu_2 \\ \sigma^2_p=w^2\sigma^2_1+(1-w)^2\sigma_2^2+2w(1-w)\rho \sigma_1\sigma_2 \\ = (\sigma_1^2-2\rho \sigma_1 \sigma_2+\sigma_2^2)w^2+(2\rho \sigma_1\sigma_2-2\sigma^2)w+\sigma_2^2μp=wμ1+(1−w)μ2σp2=w2σ12+(1−w)2σ22+2w(1−w)ρσ1σ2=(σ12−2ρσ1σ2+σ22)w2+(2ρσ1σ2−2σ2)w+σ22
同样地,我们可以消去www看看风险资产组合的期望与方差之间的关系:
w=μp−μ2μ1−μ2σp2=σ12−2ρσ1σ2+σ22(μ1−μ2)2(μp−μ2)2+2ρσ1σ2−2σ2μ1−μ2(μp−μ2)+σ22=σ12−2ρσ1σ2+σ22(μ1−μ2)2μp2+(2ρσ1σ2−2σ2μ1−μ2−2μ2σ12−2ρσ1σ2+σ22(μ1−μ2)2)μp+σ22+σ12−2ρσ1σ2+σ22(μ1−μ2)2μ22w=\frac{\mu_p-\mu_2}{\mu_1-\mu_2} \\ \sigma^2_p=\frac{\sigma_1^2-2\rho \sigma_1 \sigma_2+\sigma_2^2}{(\mu_1-\mu_2)^2}(\mu_p-\mu_2)^2+\frac{2\rho \sigma_1\sigma_2-2\sigma^2}{\mu_1-\mu_2}(\mu_p-\mu_2)+\sigma_2^2 \\ = \frac{\sigma_1^2-2\rho \sigma_1 \sigma_2+\sigma_2^2}{(\mu_1-\mu_2)^2} \mu_p^2 \\+\left(\frac{2\rho \sigma_1\sigma_2-2\sigma^2}{\mu_1-\mu_2} - 2\mu_2\frac{\sigma_1^2-2\rho \sigma_1 \sigma_2+\sigma_2^2}{(\mu_1-\mu_2)^2} \right)\mu_p \\ + \sigma_2^2+\frac{\sigma_1^2-2\rho \sigma_1 \sigma_2+\sigma_2^2}{(\mu_1-\mu_2)^2} \mu_2^2w=μ1−μ2μp−μ2σp2=(μ1−μ2)2σ12−2ρσ1σ2+σ22(μp−μ2)2+μ1−μ22ρσ1σ2−2σ2(μp−μ2)+σ22=(μ1−μ2)2σ12−2ρσ1σ2+σ22μp2+(μ1−μ22ρσ1σ2−2σ2−2μ2(μ1−μ2)2σ12−2ρσ1σ2+σ22)μp+σ22+(μ1−μ2)2σ12−2ρσ1σ2+σ22μ22
也就是说可行的风险资产组合的方差关于期望收益是抛物线,记为
σp2=Bμp2+Cμp+D\sigma_p^2 = B\mu_p^2+C\mu_p+Dσp2=Bμp2+Cμp+D
上图展示了(σp,μp)(\sigma_p,\mu_p)(σp,μp)的关系,大概也是抛物线的形状,我们也叫它抛物线好了,这条抛物线会经过(σ1,μ1)(\sigma_1,\mu_1)(σ1,μ1)与(σ2,μ2)(\sigma_2,\mu_2)(σ2,μ2)这两点。我们可以尝试计算出这条抛物线的最左点,对抛物线方程两边求微分:
2σpdσp=2Bμpdμp+Cdμp=(2Bμp+C)dμpdσpdμp=2Bμp+C2σp=0⇒μp=−C2B2\sigma_pd\sigma_p = 2B\mu_pd\mu_p+C d \mu_p = (2B \mu_p+C)d \mu_p \\ \frac{d \sigma_p}{d \mu_p} = \frac{2B\mu_p+C}{2 \sigma_p}=0 \Rightarrow \mu_p = -\frac{C}{2B}2σpdσp=2Bμpdμp+Cdμp=(2Bμp+C)dμpdμpdσp=2σp2Bμp+C=0⇒μp=−2BC
此时
σp2=BC24B2−CC2B+D=−C2+4BD4B\sigma_p^2 = B\frac{C^2}{4B^2}-C \frac{C}{2B}+D = \frac{-C^2+4BD}{4B}σp2=B4B2C2−C2BC+D=4B−C2+4BD
所以最左点为(−C2B,−C2+4BD4B)(-\frac{C}{2B},\frac{-C^2+4BD}{4B})(−2BC,4B−C2+4BD),因为抛物线与竖直的直线有两个交点,下面那个交点是没有意义的,因为在相同的方差投资者肯定会选择收益更高的组合,于是称最左点到正无穷的上半段抛物线为有效前沿(effective frontier),它是CAL推广到风险资产组合的结果,但还不完整,因为我们还没有引入无风险资产。
假设风险资产组合为wr1+(1−w)r2wr_1+(1-w)r_2wr1+(1−w)r2,占比为yyy,则无风险资产与这个风险资产组合形成的新的投资组合为
ry,w=(1−y)rf+y[wr1+(1−w)r2]r_{y,w}=(1-y)r_f+y[wr_1+(1-w)r_2]ry,w=(1−y)rf+y[wr1+(1−w)r2]
于是投资者现在面临的投资选择问题为
maxy,wU=E[ry,w]−A2Var(ry,w)\max_{y,w} \ \ U=E[r_{y,w}]-\frac{A}{2}Var(r_{y,w})y,wmax U=E[ry,w]−2AVar(ry,w)
这个优化的难点是如果有很多种风险资产,在考虑很多风险资产与无风险资产的组合时,我们需要同时对y,wy,wy,w做最优化。在现在看来,这个问题就非常简单了,因为
maxy,wU=maxy(maxwU)=maxw(maxyU)\max_{y,w} \ \ U = \max_y (\max_w \ U) = \max_w (\max_y \ U)y,wmax U=ymax(wmax U)=wmax(ymax U)
也就是说对yyy的最优化与对www的最优化是可以分开进行的。虽然数学上很简单,但我们需要一个合理的经济学解释,Tobin在1958年给出了这种操作的解释,并命名为分离原则。因为投资者的区别仅仅是风险厌恶程度,所以www的选择对所有投资者而言是一样的,也就是说市场上只会有一种最优风险资产组合。此时,投资者需要做的仅仅是根据自己的风险厌恶程度决定无风险资产与这个最优风险资产组合的权重即可,这时可行的组合就变成了过(0,rf)(0,r_f)(0,rf)且与有效前沿相切的射线(如下图),称这个最优风险资产组合为市场组合,记它的期望收益为μM\mu_MμM,方差为σM2\sigma_M^2σM2,在图中对应射线与有效前沿的切点,假设这条切线的斜率为kkk,则
k=dμpdσp=2σM2BμM+CB(kσM+rf)2+C(kσM+rf)+D=σM2k=\frac{d\mu_p}{d\sigma_p}=\frac{2 \sigma_M}{2B\mu_M+C} \\ B(k\sigma_M+r_f)^2+C(k\sigma_M+r_f)+D =\sigma_M^2 k=dσpdμp=2BμM+C2σMB(kσM+rf)2+C(kσM+rf)+D=σM2
由此可以解出市场组合。
分离原则在实践中也有一些意义,因为最优风险资产组合相同,所以投资顾问可以向所有客户提供同样的产品,这就是为什么证券公司可以把设计好的产品卖给不同的客户的原因之一。然而现实的金融市场中,完美市场与同质投资者的假设几乎都不成立,所以不同的投资顾问会关注不同的细分行业/细分市场,给不同客户提供不同建议。
市场投资者与资本资产定价公式
既然市场上只会有一个最优风险资产组合,并且投资者在无风险资产与最优风险资产组合之间的配置只取决于投资者的风险厌恶程度,因此我们可以尝试构造一个“平均”投资者,它可以代表市场上所有投资者的意见。假设有NNN个投资者,第iii个投资者的风险厌恶程度为AiA_iAi,i=1,2,⋯,Ni=1,2,\cdots,Ni=1,2,⋯,N,根据CAL的结果,她在市场组合上配置的权重为
yi∗=μM−rfσM2Aiy_i^* = \frac{\mu_M-r_f}{\sigma_M^2 A_i}yi∗=σM2AiμM−rf
假设每个投资者都打算投资一块钱,则这个市场配置在市场组合上的资金为
∑i=1Nyi∗=μM−rfσM2(1A1+⋯1AN)\sum_{i=1}^N y_i^* = \frac{\mu_M-r_f}{\sigma_M^2}\left( \frac{1}{A_1}+ \cdots \frac{1}{A_N} \right)i=1∑Nyi∗=σM2μM−rf(A11+⋯AN1)
在市场均衡时,所有资金都会配置到市场组合上,即
μM−rfσM2(1A1+⋯1AN)=N\frac{\mu_M-r_f}{\sigma_M^2}\left( \frac{1}{A_1}+ \cdots \frac{1}{A_N} \right) = NσM2μM−rf(A11+⋯AN1)=N
如果存在一个代表市场配置的“平均”投资者,记她的风险厌恶程度为Aˉ\bar AAˉ,则
μM−rfσM2(1A1+⋯1AN)=NμM−rfσM2Aˉ\frac{\mu_M-r_f}{\sigma_M^2}\left( \frac{1}{A_1}+ \cdots \frac{1}{A_N} \right) =N \frac{\mu_M-r_f}{\sigma_M^2\bar A}σM2μM−rf(A11+⋯AN1)=NσM2AˉμM−rf
也就是Aˉ\bar AAˉ是市场中所有投资者的风险厌恶程度的调和平均。那么在市场均衡时,市场配置的结果就是平均投资者的投资策略,按CAL的方法,考虑最优化:
maxw1.⋯,wn,yU=E[r]−A2Var(r)\max_{w_1.\cdots,w_n,y}\ U = E[r]-\frac{A}{2}Var(r)w1.⋯,wn,ymax U=E[r]−2AVar(r)
其中
r=yrM+(1−y)rf=y(w1r1+⋯+wMrM)+(1−y)rfr=yr_M+(1-y)r_f = y(w_1r_1+\cdots+w_Mr_M)+(1-y)r_fr=yrM+(1−y)rf=y(w1r1+⋯+wMrM)+(1−y)rf
这里我们假设市场组合由MMM种风险资产组成,考虑风险资产的权重配置:
∂U∂wi=∂E[r]∂wi−Aˉ2∂Var(r)∂wi=E[ri]−rf−AˉCov(rM,ri)=0\frac{\partial U}{\partial w_i}=\frac{\partial E[r]}{\partial w_i}-\frac{\bar A}{2} \frac{\partial Var(r)}{\partial w_i} \\ = E[r_i]-r_f-\bar A Cov(r_M,r_i)=0∂wi∂U=∂wi∂E[r]−2Aˉ∂wi∂Var(r)=E[ri]−rf−AˉCov(rM,ri)=0
又因为
μM−rfσM2(1A1+⋯1AN)=NμM−rf=AˉσM2\frac{\mu_M-r_f}{\sigma_M^2}\left( \frac{1}{A_1}+ \cdots \frac{1}{A_N} \right) = N \\ \mu_M-r_f = \bar A \sigma_M^2σM2μM−rf(A11+⋯AN1)=NμM−rf=AˉσM2
消去Aˉ\bar AAˉ,可以得到
E[ri]−rf=Cov(rM,ri)σM2(μM−rf)=βi(μM−rf)E[ri]=rf+βi(μM−rf)E[r_i]-r_f = \frac{Cov(r_M,r_i)}{\sigma_M^2}(\mu_M-r_f) = \beta_i(\mu_M-r_f) \\ E[r_i] = r_f + \beta_i(\mu_M-r_f) E[ri]−rf=σM2Cov(rM,ri)(μM−rf)=βi(μM−rf)E[ri]=rf+βi(μM−rf)
这就是CAPM的公式,等式左边是第iii种风险资产的期望收益,它由无风险收益rfr_frf,与风险溢价βi(μM−rf)\beta_i(\mu_M-r_f)βi(μM−rf)组成,μM−rf\mu_M-r_fμM−rf是市场组合的风险溢价,βi\beta_iβi表示资产iii的beta值,代表exposure to market,也就是以市场组合的风险为系统性风险,βi\beta_iβi表示资产iii承担的系统性风险的比率,如果βi>1\beta_i>1βi>1,就称资产iii为aggressive的(感觉加个的语义上有点重复,但不加又读不通顺);如果βi<1\beta_i<1βi<1,就称资产iii为defensive的。
用rir_iri表示资产iii的实时收益率,因为E[ri]E[r_i]E[ri]代表市场均衡时的期望收益率,所以rir_iri与E[ri]E[r_i]E[ri]并不总是相等的,记
αi=ri−E[ri]\alpha_i = r_i - E[r_i]αi=ri−E[ri]
这个值被称为资产的alpha值,它代表资产的超常收益(超过均衡期望的那部分收益),下图展示了资产实时收益率的构成:
详解CAPM的数学推导相关推荐
- 【NLP】Word2Vec详解(含数学推导)
word2vec可以在百万数量级的词典和上亿的数据集上进行高效地训练:并且,该工具得到的训练结果--词向量(word embedding),可以很好地度量词与词之间的相似性.随着深度学习(Deep L ...
- MaxCompute SQL函数详解 ODPS SQL函数详解---之常用数学运算相关函数
MaxCompute SQL函数详解 ODPS SQL函数详解---之常用数学运算相关函数 MaxCompute/ODPS SQL常用数学运算相关函数 ABS函数-计算绝对值 sql:select A ...
- 梯度提升树(GBDT)详解之三:原理推导
本文是GBDT系列文章的最后一弹,它将侧重梯度提升树的原理及其中的数学推导.希望你在阅读本文之前,对于将GBDT应用于回归和分类的技术细节都已经比较熟悉.对此,你可以参考系列文章中的前两篇(参见文献[ ...
- 详解C#的数学类,Math,浮点数(上)
C#语言支持表B-1所示的11种数值类型,分别为整数,浮点数和小数. 在一个c#程序中,整数(没有小数点的数)被认为是一个int类型(除非其值大于最大的int值),根据数据值,该数据依次被视为uint ...
- 随机游走(Random Walk)模型详解:历史||数学表示||物理意义
随机游走 随机游走(Random Walk,缩写为 RW),是一种数学统计模型,它是一连串的轨迹所组成,其中每一次都是随机的.它能用来表示不规则的变动形式,如同一个人酒后乱步,所形成的随机过程记录. ...
- 数学建模——遗传算法步骤及程序详解
数学建模--遗传算法步骤及程序详解 文章目录 数学建模--遗传算法步骤及程序详解 前言 一.遗传算法的基础 1.编码和解码 2.适应度函数 3.交叉 4.变异 5.选择 二.遗传算法原理步骤 1.初始 ...
- ShuffleNetv2论文详解
ShuffleNet v2 论文详解 近期在研究轻量级 backbone 网络,我们所熟悉和工业界能部署的网络有 MobileNet V2.ShuffleNet V2.RepVGG 等,本篇博客是对 ...
- 置信椭圆(误差椭圆)详解
文章目录 Part.I 预备知识 Chap.I 一些概念 Chap.II 主成分分析 Chap.III Matlab 函数 randn Chap.IV Matlab 函数 pca Part.II 置信 ...
- 【 反向传播算法 Back-Propagation 数学推导以及源码详解 深度学习 Pytorch笔记 B站刘二大人(3/10)】
反向传播算法 Back-Propagation 数学推导以及源码详解 深度学习 Pytorch笔记 B站刘二大人(3/10) 数学推导 BP算法 BP神经网络可以说机器学习的最基础网络.对于普通的简单 ...
最新文章
- 如何读取比机器内存大的文件(内存4G,文件 8G,读取大文件) ?
- iOS 动态更换icon
- ping ip 端口_学生会私房菜【20200305期】——Ping命令及其常用参数详解
- linux系统 安卓系统安装教程,最简单的Ubuntu Touch Android 双系统安装方式
- php curl ssr,php curl模拟登陆
- 《移动项目实践》实验报告——Android中级控件
- php如何判断是否关注,php如何判断用户是否关注微信公众号
- 神秘的中国超级计算机:比肩高铁的世界级领先
- 接口测试工具--Apipost不同脚本的作用
- jQuery常用工具方法
- 打印机(Brother MFC-7860DN)一直提示更换墨盒
- Counting 4-Cliques
- c语言开发的烟花表白程序,C语言实战之浪漫烟花表白程序(2020年十二月整理).doc...
- 简易版百度换肤之background属性
- 《Solar Energy Materials and Solar Cells》期刊介绍(SCI 2区)
- 毕业实用统计模型(一)——时间序列
- 2015年基金公司排名排行榜,基金公司排名2015一览
- 贵州省发票认证系统服务器地址,贵州省增值税发票综合服务平台登录入口:https://fpdk.guizhou.chinatax.gov.cn...
- Vue的v-html样式无效问题
- SCI审稿流程(转)
热门文章
- 稳健+成长股池(转载)
- Leetcode 345. 反转字符串中的元音字母 解题思路及C++实现
- [笔记] 大家一起来测试,benchmark起来(MySQL下的TPC-C,TPC-H,TPC-W)
- SpringMVC入门案例
- Servlet流程总结
- 采用串口DMA双缓冲方法,快速更新外部FLASH中文字库
- pyrMeanShiftFiltering函数
- 随笔(很晚很晚,瞎写一通)
- javascript中的变量
- Linux学习之CentOS(三十六)--FTP服务原理及vsfptd的安装、配置