GitHub 您所在的位置:网站首页 资金流入就出 GitHub

GitHub

2024-07-15 11:36| 来源: 网络整理| 查看: 265

阿里的余额宝申购赎回的金融预测 赛题要求

这个赛题也是阿里天池大数据的比赛: https://tianchi.aliyun.com/competition/entrance/231573/information

问题描述

蚂蚁金服拥有上亿会员并且业务场景中每天都涉及大量的资金流入和流出,面对如此庞大的用户群,资金管理压力会非常大。在既保证资金流动性风险最小,又满足日常业务运转的情况下,精准地预测资金的流入流出情况变得尤为重要。 通过对例如余额宝用户的申购赎回数据的把握,精准预测未来每日的资金流入流出情况。对货币基金而言,资金流入意味着申购行为,资金流出为赎回行为。 命题中使用的数据主要包含四个部分,分别为用户基本信息数据 user_profile_table、用户申购赎回数据 user_balance_table、收益率表mfd_day_share_interest 和银行间拆借利率表 mfd_bank_shibor。

主要就是根据提供的四张表格数据,用户基本信息数据、用户申购赎回数据、收益率表、银行间 拆借利率表 来预测申购(资金流入)和赎回的金额数(资金流出)

提交结果

通过提交结果表 tc_comp_predict_table,对每一天对申购、赎回总额的预测值,金额数据,精确到分。

任务说明

期望选手对未来 30 天内每一天申购和赎回的总量数据预测的越准越好,同时考虑到可能存在的多种情况。

最终选用积分式的计算方法:每天的误差选用相对误差来计算,然后根据用户预测申购和赎回的相对误差,通过得分函数映射得到一个每天预测结果的得分,将30天内的得分汇总,然后结合实际业务的倾向,对申购赎回总量预测的得分情况进行加权求和,得到最终评分。

就是三十天内的预测必须不能出现大的误差。 平均误差超过0.3不得分。

技术指标

本题的余额宝收益方式,主要基于实际余额宝收益计算方法,但是进行了一定的简化,此处计算简化的地方如下:首先,收益计算的时间不再是会计日,而是自然日,以 0 点为分隔,如果是 0 点之前转入或者转出的金额算作昨天的,如果是0点以后转入或者转出的金额则算作今天的。

然后,收益的显示时间,即实际将第一份收益打入用户账户的时间为如下表格,以周一转入周三显示为例,如果用户在周一存入10000元,即1000000分,那么这笔金额是周一确认,周二是开始产生收益,用户的余额还是10000元,在周三将周二产生的收益打入到用户的账户中,此时用户的账户中显示的是 10001.1 元,即 1000110 分。其他时间的计算按照表格中的时间来计算得到。

模型选用

初步的模型选用为,根据序列时间进行预测的模型。因为根据本赛题的数据特点,主要是为了分析x天内的数据,然后预测未来30天的数据。这样的主要是一个基于时间的模型,所以目前先选择以时间序列为预测的模型。

一开始是使用了ARIMA框架,但是感觉不好,实际上出来的效果确实不怎么样。而且参数很奇怪,什么时间序列平滑也显得很诡异。

所以我们后来是换成了facebook开源的Prophet框架,这个确实就好很多,有教程和API,很清晰。而且着重表现了假日(节日),周期行,特殊值。整体上出来的效果也好很多。

赛题分析

在进一步对数据进行完分析之后,我们终于初步得出了如何进行预测的方法。

首先我们了解到了这个几张表的相互之间的联系。

最主要的是第二张表,用户的申购赎回的数据表。 第一张表,用户信息表,主要是提供了用户的信息。 第三张表,余额宝利率表,这是是用来算余额宝中的存款产生的利息的信息。 第四章表,银行互拆利率表,这是用来算银行卡产生的利息的信息。

针对以上的情况,我们制定如下的方案。

以第二张表为主。对第二张表中的两列数据,即今日申购量、今日赎回量分别进行时间序列的预测。当然这两个列涉及到其他诸多列,可能不仅仅是对这两个列进行直接的预测。 对第三张表,余额宝的利率需要进行时间序列的预测,因为在进行未来三十天的预测过程中,我们很有可能不知道利率的情况,也就无法算出余额宝中的存款得出的利息。所以我们需要对利率进行预测。 对第四张表,与上一个同理,我们需要计算银行卡中的存款算出的利息。

此外,我还进行了用户的分类,为了使预测的结果更加的精确,需要对不同的人群进行不同的规律获取。

实际细节

实际上我们对于数据表进行了一定的分析。发现最主要的和需要预测的申购和赎回数据最相关数据是第二张表中的数据 今日总购买量(total_purchase_amt)、今日总赎回量(total_redeem_amt) 。其中这两个量又有这样的逻辑关系:今日总购买量(total_purchase_amt) = 直接购买(今日直接购买量) + 收益(今日收益)、今日总赎回量(total_redeem_amt) = 消费(今日消费总量) + 转出(今日转出总量)

其中收益是有具体的计算表的,而且收益的年化收益率是需要根据第三张表预测9月的收益率的。预测完之后,再进行计算收益。

所以需要对总共四列的数据分别进行预测,最后进行求和。

长期趋势和循环要素(常量,使用该月总和/该月天数来近似代替) 季节变动要素(有规律变量,日,周,月)考虑到节假日 不规则要素(无规律变量)

季节变动要素考虑到节假日,九月份有中秋(使用清明端午类比)和国庆

清明节 2013:4.4 4.5 4.6 2014:4.5 4.6 4.7

劳动节 2013:4.29 4.30 5.1 2014:5.1 5.2 5.3

端午节 2013:6.10 6.11 6.12 2014:5.31 6.1 6.2

中秋节 2013:9.19 9.20 9.21 2014:9.6 9.7 9.8

国庆节 2013:10.1 - 10.7 2014:10.1 - 10.7

元旦 2014:1.1

春节 2014:1.31 - 2.6

按自然日对数据进行了汇总 从20130701-20140831 共427天

其中的不规则要素使用prophet进行手动参数调整

数据间的关系 表示对应关系 1.用户信息表(user_profile_table) 用户ID(user_id) 用户申购赎回数据表(user_balance_table)中的用户ID(user_id) 性别(Sex) 城市(City) 星座(constellation) 2.用户申购赎回数据表 用户ID(user_id) 日期(report_date) 收益率表(mfd_day_share_interest)中的日期(mfd_date) 今日余额(tBalance) = 昨日余额 + 今日总购买量 - 今日总赎回量 昨日余额(yBalance) 今日总购买量(total_purchase_amt) = 直接购买(今日直接购买量) + 收益(今日收益(昨日产生的收益);第一天转入的金额,第二天产生收益,第三天显示该收益,实际上是根据收益表的时间计算的) 今日直接购买量(direct_purchase_amt) = 今日支付宝余额购买量(purchase_bal_amt) + 今日银行卡购买量(purchase_bank_amt) 今日总赎回量(total_redeem_amt) = 消费(今日消费总量) + 转出(今日转出总量) 消费(今日消费总量consume_amt) = 今日类目 1,2,3,4 消费总额 转出(今日转出总量transfer_amt) = 今日转出到支付宝余额总量(tftobal_amt) + 今日转出到银行卡总量(tftocard_amt) 3.收益率表(mfd_day_share_interest) 日期(mfd_date) 万分收益(mfd_daily_yield) = 万份收益,即 1 万块钱的收益 七日年化收益率( % ) = 把前7天的收益相加除以7,然后算出每日的平均万分收益率,再乘365,算作年化收益率 用于计算余额宝中存款产生的利润 4.上海银行间同业拆放利率表(mfd_bank_shibor) 即银行不用时间的存款利息,用于计算银行卡中存款产生的利润


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有