问题缘起:
去年上半年,笔者某次周日下午上完离散数学之后正准备走向北校旁的地铁站,看到落日余晖洒在博学楼之后停着的一排排自行车上,不知为何就突然想到,“流利阅读”这个可恶的家伙!为什么定价那么高?广告那么多?让我一边心痒痒一边又怕“白给”。然后就继续想,流利阅读为什么这么定价?究竟是何用意呢?结果仔细想下去发现这还是一个挺有趣的问题。后来就建了一个小模型,虽然在后半部分设计得有点仓促,暂时也没有什么好办法,现在发上来分享。

“流利阅读”提供内容服务的收费方式如下:
- 该内容服务共持续90天,每一天向用户推送一篇优质内容。
- 消费者可以决定是否购买该服务,如果购买则需要缴纳价格为199元的“定金”。
- 消费者每天完成学习后可以在朋友圈等社交媒体为该产品转发一次“广告”,如果一共达到80次,则可以收到厂商退回的“定金”;否则无法收回“定金”。
该方案对消费者的激励和厂商得益:
消费者可以决定是否购买该服务,如果坚持完成学习可得到返还的“定金”,价格越高对消费者坚持完成的激励就会更强,同时消费者购买该服务的意愿相应地降低。
对于厂商来说,如果消费者坚持完成转发任务,厂商需要返还“定金”,但同时厂商也相当于无息借贷了该笔钱,即至少获得了利息收益。另外该消费者的转发会鼓励更多的消费者购买该服务,即获得了广告收益。
如果消费者未坚持完成转发任务,厂商就不需返还“定金”,得到“定金”收益,但获得相对少的广告收益。
此外,考虑消费者的多期决策,如果该消费者坚持完成了转发,认为内容优质值得继续学习并进行下一期的概率较大;如果消费者未能坚持完成转发,认为即使内容优质但是难得坚持,所以进行下一期的概率较小。
综上,如果厂商定价较高,可获得较多的广告收益,并由于坚持完成的人较多,消费者粘性较高。而厂商定价较低,由于中途放弃的人较多,可获得更多的“定金”,但是获得的广告费用较少且消费者粘性较低。所以为什么厂商要定价为较高的199元而不是更低的价格99元呢?
提出假设:如果我们称厂商定价高于消费者平均评价为高价策略;厂商定价低于消费者平均评价为低价策略。那么厂商在高价策略时得到最大收益。
模型设计
根据以上描述和分析设定模型如下:设定价格为Price;p为返还“定金”概率,与价格成正比;γ为消费者参与概率,与价格成反比;β为贴现因子;i为投资利率;\(\rho_H\)和\(\rho_L\)分别为消费者坚持完成和未能坚持完成的消费者粘性;\(Ad\)为完整的广告收益,\(\alpha Ad\)为不完整的广告收益。

如果消费者选择坚持完成,厂商的当期收益为\(Price \cdot i+Ad\);如果消费者选择中途放弃,厂商的当期收益为\(Price \cdot(1+i)+\alpha Ad\)。在n期内厂商的收益最大化目标为:
\[Revenue=\gamma \sum_{t=1}^n {\beta^t [p \rho_H + (1-p) \rho_L ]^{t-1} } {p (Price \cdot i+Ad)+(1-p)[Price (1+i)+\alpha Ad]}\]
p呈与Price有关的截尾正态分布,说明即使价格很低甚至为零,仍有20%的消费者会坚持完成90天的学习任务,而随着价格的上升,坚持完成的消费者比例会增多; γ呈与Price有关的正态分布,即随着价格的上升,有信心购买该产品的消费者比例会减少。(其实就是需求函数,鬼知道我当时为什么没有直接假设普通的需求曲线······)
\[p(Price)=
\begin{cases}
\frac{2}{\sqrt{2 \pi}}{\int_{0}^{+\infty}}{e^{-\frac{t^2}{2}}}dt \ and\ t=\frac{Price-\mu_1}{\sigma_1}, \qquad &if\ p\ge 0.2 \\
0.2,\qquad &if\ p<0.2
\end{cases}\]
\[1-\gamma=\frac{2}{\sqrt{2 \pi}}{\int_{0}^{+\infty}}{e^{-\frac{t^2}{2}}}dt \ and\ t=\frac{Price-\mu_2}{\sigma_2}\]
计算实例
假设消费者对于该产品的平均评价为150元,其他参数取值如下表:
参数 | 取值 |
β | 0.98 |
i | 0.04 |
\(\rho_H\) | 0.15 |
\(\rho_L\) | 0.05 |
\(\alpha\) | 0.22 |
\(\mu_1\) | 150 |
\(\sigma_1\) | 100 |
\(\mu_2\) | 150 |
\(\sigma_2\) | 100 |
Ad取值与Price相等。
Python计算需求函数和坚持完成概率:
from scipy.stats import norm def cal_gamma(price): gamma=1-norm.cdf(price,150,100) return gamma def cal_p(price): p = norm.cdf(price,150,100) if p<0.2: p=0.2 return p
gammalist=[] plist=[] pricelist=[] for price in range(1,500): pricelist.append(price) gamma=cal_gamma(price) gammalist.append(gamma) p = cal_p(price) plist.append(p) print(len(plist)) import matplotlib.pyplot as plt plt.plot(gammalist,pricelist,label="$\gamma$:demand curve") plt.plot(plist,pricelist,label="$p$:insist proportion") plt.xlabel("Proportion") plt.ylabel("Price") plt.title("Price-Proportion") plt.legend()

计算收入:
def cal_revenue(price,beta,i,rho_h,rho_l,alpha): # 参数设定 Ad=price # 概率分布 gamma=cal_gamma(price) p = cal_p(price) #计算总收入 partA=gamma*(p*(price*i+Ad)+(1-p)*(price*(1+i)+alpha*Ad)) partB=0 for t in range(1,200): temp=beta**t*(p*rho_h+(1-p)*rho_l)**(t-1) partB=partB+temp return partA*partB
''' 购买概率gamma,均值150,标准差100 完成概率p,均值150,标准差100 ''' from scipy.stats import norm # 参数设定 beta=0.98 # 贴现率 i=0.04 # 投资利率 rho_h=0.15 rho_l=0.05 alpha=0.22 pricelist=[] revenuelist=[] for price in range(1,500): pricelist.append(price) revenue=cal_revenue(price,beta,i,rho_h,rho_l,alpha) revenuelist.append(revenue) import matplotlib.pyplot as plt plt.plot(pricelist,revenuelist) plt.xlabel("Price") plt.ylabel("Revenue") plt.title("Price-Revenue")

厂商收益在\(Price^*=134\)时得到最大值。厂商最优定价低于消费者的平均评价,所以原假设在此取值情况下不成立。进一步推出,该厂商在该参数假设下,实际定价可能偏高。
拥有两类产品的厂商价格歧视策略
模型假设
假设市场中存在两类消费者:高需求消费者和低需求消费者。厂商针对两类消费者推出了两类产品:较优质产品和欠优质产品,厂商希望对两类产品进行区别定价,同时获得利润最大化。
设产品质量为\(Q(Price)=\phi Price\),其中\(Price=Price_H, Price_L\),\(\phi=\phi_H,\phi_L\)且\(\phi_H>\phi_L\),即高定价产品的质量相对较高,低定价的产品质量相对较低。此时厂商的盈利为\(E=Revenue(Price)\)。
在所有消费者中,低需求消费者的占比为\(\omega\),高需求消费者的占比为\(1-\omega\)。消费者效用为\(U=\theta \cdot Q(Price)-(1-p(Price))\cdot Price\),其中 ,低需求消费者的评价\(\theta=\theta_L\),而高需求消费者的评价\(\theta=\theta_H\),且有\(\theta_H>theta_L\)成立。
完全信息条件下
在完全信息条件下,厂商有能力进行完全价格歧视以获得最大收益。厂商的利润函数为:
\[max E=\omega Revenue(Price_L)+(1-\omega)Revenue(Price_H)\]
为了让两类消费者都购买产品只需要满足\(U_L>0\),\(U_H>0\),即:
\[\theta_L\phi_L\cdot Price_L-(1-p(Price_L))Price_L\ge 0\]
\[\theta_H\phi_H\cdot Price_H-(1-p(Price_H))Price_H\ge 0\]
信息不对称的条件下
在信息不完全的情况下,低需求消费者有伪装成高需求消费者获得更高效用的动机,同样高需求消费者同样有伪装成低需求消费者购买欠优质产品的可能。厂商为区分开两类消费者,必须满足以下激励相容约束:
\[{\theta_H}\cdot{\phi_H Price_H}-{(1-p(Price_H))Price_H} \ge {\theta_H}\cdot{\phi_L Price_L}-{(1-p(Price_L))Price_L}\]
\[{\theta_L}\cdot{\phi_L Price_L}-{(1-p(Price_L))Price_L} \ge {\theta_L}\cdot{\phi_H Price_H}-{(1-p(Price_H))Price_H}\]
参与约束为:
\[{\theta_H}\cdot{\phi_H Price_H}-{(1-p(Price_H))Price_H} \ge 0\]
\[{\theta_L}\cdot{\phi_L Price_L}-{(1-p(Price_L))Price_L} \ge 0\]
为求得满足厂商利润最大化的价格策略,即探究\(Price_L^\# \)与\(Price_L^*\)、\(Price_H^\# \)与\(Price_H^*\)之间的关系,利用计算实例求解。
计算实例
假定低需求消费者的平均评价为100元,而高需求消费者的平均评价为200元。其他参数设定如下:
参数 | 取值 |
β | 0.98 |
i | 0.04 |
\(rho_H\) | 0.15 |
\(rho_L\) | 0.05 |
\(\alpha\) | 0.22 |
\(\theta_H\) | 1.0 |
\(\theta_L\) | 0.6 |
\(\omega\) | 1.5 |
\(\mu_{H1}\) | 1.0 |
\(\sigma_{H1}\) | 0.6 |
\(\mu_{H2}\) | 100 |
\(\sigma_{H2}\) | 50 |
\(\mu_{H2}\) | 100 |
\(\sigma_{H2}\) | 50 |
\(mu_{L1}\) | 200 |
\(sigma_{L1}\) | 100 |
\(\mu_{L2}\) | 200 |
\(\sigma_{L2}\) | 100 |
高低质量产品收益对比:
from scipy.stats import norm def cal_gamma_new(price,mu,sigma): gamma=1-norm.cdf(price,mu,sigma) return gamma def cal_p_new(price,mu,sigma): p = norm.cdf(price,mu,sigma) if p<0.2: p=0.2 return p def cal_revenue_new(price,beta,i,rho_h,rho_l,alpha,mu,sigma): # 参数设定 Ad=price # 概率分布 gamma=cal_gamma_new(price,mu,sigma) p = cal_p_new(price,mu,sigma) #计算总收入 partA=gamma*(p*(price*i+Ad)+(1-p)*(price*(1+i)+alpha*Ad)) partB=0 for t in range(1,200): temp=beta**t*(p*rho_h+(1-p)*rho_l)**(t-1) partB=partB+temp return partA*partB
高质量产品:
''' 购买概率gamma,均值250,标准差100 完成概率p,均值250,标准差150 ''' from scipy.stats import norm import math beta=0.98 i=0.04 rho_h=0.15 rho_l=0.05 alpha=2/9 mu1=200 sigma1=100 pricelist=[] revenuelist=[] earninglist_h=[] for price in range(1,500): pricelist.append(price) Ad=price revenue=cal_revenue_new(price,beta,i,rho_h,rho_l,alpha,mu1,sigma1) earninglist_h.append(revenue)
低质量产品:
from scipy.stats import norm import math beta=0.98 i=0.14 rho_h=0.15 rho_l=0.05 alpha=2/9 mu2=100 sigma2=50 pricelist=[] revenuelist=[] earninglist_l=[] for price in range(1,500): pricelist.append(price) Ad=price revenue=cal_revenue_new(price,0.98,i,rho_h,rho_l,alpha,mu2,sigma2) earninglist_l.append(revenue)
作图:
import matplotlib.pyplot as plt plt.plot(pricelist,earninglist_h,label="high-quality") plt.plot(pricelist,earninglist_l,label="low-quality") plt.xlabel("Price") plt.ylabel("Earning") plt.title("Price-Earning") plt.legend()

def cal_U(price,mu,sigma,theta,phi): p=cal_p_new(price,mu,sigma) U=theta*phi*price-(1-p)*price return U
完全信息下的定价决定:
from scipy.stats import norm import math from scipy.optimize import minimize import numpy as np e=1e-10 beta=0.98 i=0.04 rho_h=0.15 rho_l=0.05 alpha=2/9 omega=0.6 #低需求比例 theta_h=1 theta_l=0.8 mu1=200 sigma1=100 mu2=100 sigma2=50 phi_h=1.5 phi_l=1 #price[0]low;price[1]high fun=lambda price: -omega*cal_revenue_new(price[0],beta,i,rho_h,rho_l,alpha,mu2,sigma2)-(1-omega)*cal_revenue_new(price[1],beta,i,rho_h,rho_l,alpha,mu1,sigma1) cons=({'type':'ineq','fun':lambda price: cal_U(price[0],mu2,sigma2,theta_l,phi_l)}, {'type':'ineq','fun':lambda price: cal_U(price[1],mu1,sigma1,theta_h,phi_h)}) price0=np.array((200,200)) #初始值 res = minimize(fun, price0, method='SLSQP', constraints=cons) print('最大值:',-res.fun) print('最优解:',res.x) print('迭代终止是否成功:', res.success) print('迭代终止原因:', res.message)
最大值: 93.0464316372167 最优解: [ 81.77512334 163.54986366] 迭代终止是否成功: True 迭代终止原因: Optimization terminated successfully.
低质量产品价格为81.78元,高质量产品价格为163.55元。平均收益为93.04元。
两类消费者购买两类产品的效用:
from scipy.stats import norm import math from scipy.optimize import minimize import numpy as np beta=0.98 i=0.04 rho_h=0.15 rho_l=0.05 alpha=2/9 omega=0.6 #低需求比例 theta_h=1 theta_l=0.8 mu1=200 sigma1=100 mu2=100 sigma2=50 phi_h=1.5 phi_l=1 UHH=[] #高需求消费者购买高质量产品 UHL=[] #高需求消费者购买低质量产品 ULL=[] #低需求消费者购买低质量产品 ULH=[] #低需求消费者购买高质量产品 pricelist=[] for price in range(1,500): pricelist.append(price) UHH.append(cal_U(price,mu1,sigma1,theta_h,phi_h)) UHL.append(cal_U(price,mu1,sigma1,theta_h,phi_l)) ULL.append(cal_U(price,mu2,sigma2,theta_l,phi_l)) ULH.append(cal_U(price,mu2,sigma2,theta_l,phi_h)) plt.plot(pricelist,UHH,label="UHH") plt.plot(pricelist,UHL,label="UHL") plt.plot(pricelist,ULL,label="ULL") plt.plot(pricelist,ULH,label="ULH") plt.xlabel("Price") plt.ylabel("Utinity") plt.legend()

由图可知,在此参数和模型假设下,并没有激励低需求消费者购买低质量产品的空间。
也可以用python验证:
fun=lambda price: -omega*cal_revenue_new(price[0],beta,i,rho_h,rho_l,alpha,mu2,sigma2)-(1-omega)*cal_revenue_new(price[1],beta,i,rho_h,rho_l,alpha,mu1,sigma1) cons=( {'type':'ineq','fun':lambda price: cal_U(price[1],mu1,sigma1,theta_h,phi_h)-cal_U(price[0],mu1,sigma1,theta_h,phi_l)}, {'type':'ineq','fun':lambda price: cal_U(price[0],mu2,sigma2,theta_h,phi_l)-cal_U(price[1],mu2,sigma2,theta_h,phi_h)}, {'type':'ineq','fun':lambda price: cal_U(price[1],mu1,sigma1,theta_h,phi_h)}, {'type':'ineq','fun':lambda price: cal_U(price[0],mu2,sigma2,theta_h,phi_l)}, {'type':'ineq','fun':lambda price: price[1]-price[0]}) price0=np.array((200,200)) res = minimize(fun, price0, method='SLSQP', constraints=cons) print('最大值:',-res.fun) print('最优解:',res.x) print('迭代终止是否成功:', res.success) print('迭代终止原因:', res.message)
无有意义解。
结语:
其实很多互联网产品的边际成本都为零,像网课啊、APP服务啊之类的。它们的定价方式,特别是“流利阅读”我觉得还蛮有意思的。发现这个现象之后和周围的同学都有讨论,大家都对这类生活中的问题很感兴趣。但是建模过程也并没有想象中那么顺利,好多参数都是凭感觉设置的,然后建模本身就成了自我满足。至于本文的后半部分,完全是笔者在上学期学了信息经济学之后学艺不精的狗尾续貂之作了。