最近2年,双融担这类新创业务特别流行,先不说为什么,单从科技角度来看,可以怎么做?
首先,双融担是担保+服务费组合息费模式的一种,具体怎么个玩法我们下回再说。先看看如果要做,与前几年做流量/场景下的风控模型有什么不一样。
近年来,
因为各种原因
,金融服务不断向三四线城市、县城和农村地区下沉。
然而,传统金融机构面临着一个共同难题:下沉市场用户往往缺乏完整的征信记录,风险评估难度大。据统计,中国约有5亿人没有传统信用记录,主要集中在下沉市场。随着移动互联网普及率超过70%,这些用户虽然缺乏信贷历史,却产生了大量数字行为数据。如何利用这些数据进行风险评估,是做下沉市场的一个潜力切入口。
这就不得不提今天文章的主角:
数字足迹分析模型
。它利用用户在数字世界留下的行为痕迹,构建替代传统征信的风控模型。
目前服务下沉市场的数据源公司比前两年多的多。除了传统公司如X融、X盾、聚X等;行为数据分析公司如蜜X、X美;以及垂直领域服务商如农分期数据等。这些公司提供的数据产品有:
-
X融的"农村金融风控解决方案",基于村镇用户行为特征的信用评估
-
X盾的"普惠分",专门针对农村及小城镇用户的信用评分系统
-
蜜X的"县域用户行为风险模型",识别下沉市场特有的欺诈模式
这些产品主要利用的数据源包括:运营商数据(通话记录、短信、流量使用)、设备行为数据(APP安装和使用情况)、位置数据(活动轨迹、常驻地)、消费数据以及社交网络数据等。相比传统征信数据,这些替代数据在下沉市场的覆盖率明显更高。
数字足迹分析模型建立在几个关键理论基础之上。首先是替代数据信用评估理论,认为日常数字行为数据能有效预测信用风险。Wei等(2016)的研究《Credit Scoring with Social Network Data》证明社交网络数据能显著提高对无征信群体的风险预测准确性。
其次是行为金融学理论,个人在数字环境中的行为模式反映其基本性格特征和风险偏好。Björkegren和Grissen(2018)的论文《Behavior Revealed in Mobile Phone Usage Predicts Loan Repayment》通过分析9000名借款人的33万条通话记录,证明手机使用模式能有效预测贷款违约概率,准确率提升15-20%。
第三是数字人格心理学,Matz等(2016)发现数字足迹与"大五人格"特质高度相关,而这些特质又与信用风险相关。特别是"尽责性"特质可以从数字行为中识别,并与偿还能力显著相关。
世界银行的多项研究也支持这一理论,Berg等(2020)的研究表明,仅基于网站访问方式等数字足迹,就能构建出与传统信用评分相当甚至更优的风险预测模型。
文末会附以上paper的链接。
数字足迹分析在全球下沉市场已有广泛应用。在中国,蚂蚁金服的芝麻信用利用支付、消费行为评估用户信用,为无传统征信记录的下沉人群提供了信用评估。微众银行的"微业贷"则通过分析小店经营数据,帮助县城小微企业主获得融资。
在东南亚,Lenddo利用社交媒体和手机数据为菲律宾和印尼等地区的无银行账户人群提供信贷服务。
非洲地区的M-Shwari(肯尼亚)通过分析用户M-Pesa移动支付数据,为超过2100万用户提供小额信贷服务。
印度的Tala公司仅通过手机扫描,就能为用户提供10-500美元的小额贷款,已服务600万用户。
这些应用表明,数字足迹分析在缺乏传统金融基础设施的地区尤为有效,为普惠金融提供了技术支撑。
下面通过简化的Python代码,展示数字足迹分析模型的实现流程:
import pandas as pd
import numpy as np
from sklearn.model_selection import train_test_split
# 加载用户数据
def load_user_data(filepath):
data = pd.read_csv(filepath)
# 基本数据清洗
data = data.dropna(subset=['user_id', 'loan_status'])
# 将贷款状态转换为二元目标变量
data['target'] = data['loan_status'].apply(lambda x: 1 if x == 'default' else 0)
return data
# 加载APP使用数据并聚合
def process_app_data(app_data, user_data):
# 计算每类APP的安装数量
app_counts = app_data.groupby(['user_id', 'app_category']).size().unstack().fillna(0)
# 计算APP使用时长分布
app_usage = app_data.groupby('user_id')['daily_usage_minutes'].agg(['mean', 'std', 'max'])
# 夜间使用比例(23点-5点)
night_usage = app_data[app_data['hour'].between(23, 5)].groupby('user_id').size()
total_usage = app_data.groupby('user_id').size()
night_ratio = (night_usage / total_usage).fillna(0)
# 合并特征
features = pd.merge(app_counts, app_usage, on='user_id', how='left')
features['night_usage_ratio'] = night_ratio
# 与用户基础数据合并
return pd.merge(user_data, features, on='user_id', how='left')
def engineer_features(data, call_data, location_data):
# 通话行为特征
call_features = extract_call_features(call_data)
# 位置稳定性特征
location_features = extract_location_features(location_data)
# 合并所有特征
features = pd.merge(data, call_features, on='user_id', how='left')
features = pd.merge(features, location_features, on='user_id', how='left')