深圳车牌竞拍价格估计
规则
深圳车牌竞拍总共可以竞价三次,其中前两次竞价的平均价格会公布,我们能不能利用这个平均价格尽可能猜到可以成交的价格是多少?
现在我有2018年1月至今的24期竞拍数据,这些数据包含:两次竞价的平均价格、平均成交价格、最低成交价格、有效申请人数、参与竞拍的车牌数。那么如何建立模型?
思想
假设每期竞拍的价格都符合正态分布,正态分布的均值μ就是竞价的平均价格;如果正态分布的方差φ每期都差不多,那么就能利用方差去估计前x%的价格是多少(也就是能拍到的价格是多少)。
实现
先随机生成正态分布方差参数,然后根据均值和方差生成正态分布的数据,最后根据实际成交的价格推算最优的方差是多少:
def get_esti_fi(average_price):
# 初始化用来估计的正态分布的 方差参数φ
fi_array = []
for i in frange(0, average_price * 2.5, 1000):
fi_array.append(i)
return fi_array
def get_loss(fi_array, average_price, valid_auction_num, transaction_volume, avg_transaction_price):
target_scale = 0
loss = 99999999
for fi in fi_array:
normals = np.random.normal(average_price*1.08, fi, size=(valid_auction_num,))
sorted_normals = sorted(normals)
sorted_normals = sorted_normals[::-1]#降序
lowest_quoted_price = sorted_normals[transaction_volume]
if abs(lowest_quoted_price - avg_transaction_price) < loss:
loss = abs(lowest_quoted_price - avg_transaction_price)
target_scale = fi
return target_scale, loss
验证
拿到估计出来的方差去验证:
n = min(len(valid_auction_num_history), len(pre_price_history), len(avg_hammer_price_history), len(auction_volume_history))
print(n)
fi_results = []
for i in range(n):
fi_array = get_esti_fi(pre_price_history[i])
fi, loss = get_loss(fi_array, pre_price_history[i], valid_auction_num_history[i], auction_volume_history[i], avg_hammer_price_history[i])
print("no:{0}, fi:{1}, loss:{2}, percent:{3}".format(i+1, fi, loss, float(auction_volume_history[i])/valid_auction_num_history[i]))
fi_results.append(fi)
chances = np.reshape(auction_volume_history, (len(auction_volume_history),)).astype(float) / np.reshape(valid_auction_num_history, (len(valid_auction_num_history),)).astype(float) * 100000
plot(n, 0, avg_hammer_price_history, 0, pre_price_history, 0, fi_results, 0)
结果如下:
可见预测效果还是不错的
but
但是问题来了,这些历史数据其实是竞拍后才能拿到的,在竞拍过程中是不知道总共有多少人在拍的。(只有某些淘宝知道...)
于是,需要换模型。
重新看数据
继续观察历史数据发现,平均成交价格其实和竞拍的人数都没有正比关系,也就是说并不是拍的人多(比例小)价格就高,这样我们的估计还是有可能实现的。进一步观察发现,第二次报价与最终成交的平均价格存在着很强的相关性:
结论
可以把数据一分为2看,17年底以前最终成交价格的均价基本就是第二次报价加9千左右。17年底以后,除开18年1月和19年6月两个奇点,成交价格与第二次报价的差值不断下降:
结合前面计算过的方差值一起看,方差是不断下降的:
17年底以前方差高,估价差值低,说明大部分竞拍者是抱着试试看的心态,出价甚至比第二次公布的报价低;真正想要的竞拍者不多。
18年后投机者变少,高价竞争者也在变少,可能也预示着经济环境在变差,或者大家对于电动车的接受度越来越高。
预测
预测2020年第3期车牌价格变化不大,竞价比第二次报价高出1.2w就能拍到牌了