杂物堆

20 mins. 8224 102

风控杂学

相关资料

模型

策略I模块

策略II模块

反欺诈模块

贷中模块

政策I模块

政策II模块

三方数据模块

贷后指标监控

账龄分析(vintage analysis)

  • 根据还款计划表按照账期计算 Vintage Legged DPD N+
WITH config AS (
		SELECT 3 dpd, TRUNC(SYSDATE - 1, 'DD') CURRENT_DATE FROM dual
)
, loan AS (
		SELECT DISTINCT C_EXT_ID
					, D_SETTLE_DATE
					, N_LOAN_AMOUNT
					, D_APPLICATION
		FROM DATAMART.DM_MID_LOAN_BASE
		WHERE C_INDUSTRY_ONE = '汽车'
				AND C_INDUSTRY_TWO = '汽车'
				AND C_FINANCE_PRODUCT_TYPE = '无卡-大自付'
				AND C_FINANCE_PRODUCT_ONE != '1'
)
, plan AS (
		SELECT plan.C_EXT_ID
						, loan.N_LOAN_AMOUNT
						, loan.D_APPLICATION
						, plan.D_LOAN_DATE
						, plan.D_PAY_DATE
						, plan.D_FINISH_DATE
						, LAG(plan.D_FINISH_DATE, 1, NULL) OVER (PARTITION BY plan.C_EXT_ID ORDER BY plan.D_PAY_DATE) D_FINISH_DATE_LAG
						, LEAD(plan.D_FINISH_DATE, 1, NULL) OVER (PARTITION BY plan.C_EXT_ID ORDER BY plan.D_PAY_DATE) D_FINISH_DATE_LEAD
						, LAG(plan.D_PAY_DATE, 1, NULL) OVER (PARTITION BY plan.C_EXT_ID ORDER BY plan.D_PAY_DATE) D_PAY_DATE_LAG
						, LEAD(plan.D_PAY_DATE, 1, NULL) OVER (PARTITION BY plan.C_EXT_ID ORDER BY plan.D_PAY_DATE) D_PAY_DATE_LEAD
						, FIRST_VALUE(plan.D_PAY_DATE) OVER (PARTITION BY plan.C_EXT_ID ORDER BY plan.D_PAY_DATE) D_PAY_DATE_FIRST
						, LAST_VALUE(plan.D_PAY_DATE) OVER (PARTITION BY plan.C_EXT_ID ORDER BY plan.D_PAY_DATE) D_PAY_DATE_LAST
						, loan.D_SETTLE_DATE
						, plan.N_TENOR
						, ROUND(MONTHS_BETWEEN(plan.D_PAY_DATE, FIRST_VALUE(plan.D_PAY_DATE) OVER (PARTITION BY plan.C_EXT_ID ORDER BY plan.D_PAY_DATE)), 0) + 1 N_CURR_TENOR_CACL
						, plan.N_CURR_TENOR
						, plan.N_ALL_PAY_AMOUNT
						, SUM(plan.N_ALL_PAY_AMOUNT) OVER (PARTITION BY plan.C_EXT_ID ORDER BY NVL(plan.D_FINISH_DATE, plan.D_PAY_DATE) ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) N_ALL_PAY_AMOUNT_FUTURE 
						, plan.N_ALL_PAY_CORPUS
						, SUM(plan.N_ALL_PAY_CORPUS) OVER (PARTITION BY plan.C_EXT_ID ORDER BY NVL(plan.D_FINISH_DATE, plan.D_PAY_DATE) ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) N_ALL_PAY_CORPUS_FUTURE 
						, plan.N_ALL_PAID_AMOUNT
						, SUM(plan.N_ALL_PAID_AMOUNT) OVER (PARTITION BY plan.C_EXT_ID ORDER BY NVL(plan.D_FINISH_DATE, plan.D_PAY_DATE) ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) N_ALL_PAID_AMOUNT_PAST
						, plan.N_ALL_PAID_CORPUS
						, SUM(plan.N_ALL_PAID_CORPUS) OVER (PARTITION BY plan.C_EXT_ID ORDER BY NVL(plan.D_FINISH_DATE, plan.D_PAY_DATE) ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) N_ALL_PAID_CORPUS_PAST
						, loan.N_LOAN_AMOUNT - SUM(plan.N_ALL_PAID_CORPUS) OVER (PARTITION BY plan.C_EXT_ID ORDER BY NVL(plan.D_FINISH_DATE, plan.D_PAY_DATE) ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) N_LOAN_AMOUNT_BALANCE
						, plan.N_NEED_PAY
		-- FROM DATAMART.DM_MID_REPAY_PLAN_EXTEND plan
		FROM DATAMART.DM_MID_REPAY_PLAN plan
		INNER JOIN loan ON plan.C_EXT_ID = loan.C_EXT_ID
		WHERE plan.N_LOAN_STATUS != 3
		ORDER BY plan.C_EXT_ID, plan.D_PAY_DATE ASC
)
, vintage AS (
		SELECT N_CURR_TENOR_CACL
					, TO_CHAR(LAST_DAY(D_LOAN_DATE), 'YYYY-MM') D_LOAN_MONTH
-- 					, SUM(N_LOAN_AMOUNT) N_LOAN_AMOUNT_TOTAL
-- 					, SUM(CASE WHEN config.CURRENT_DATE - NVL(D_FINISH_DATE, D_PAY_DATE) > config.dpd THEN N_LOAN_AMOUNT ELSE NULL END) N_LOAN_AMOUNT_TOTAL_LAGGED
-- 					, SUM(CASE WHEN NVL(D_FINISH_DATE, config.CURRENT_DATE) - D_PAY_DATE > config.dpd THEN N_ALL_PAY_CORPUS_FUTURE ELSE NULL END) N_OVERDUE_CORPUS_BALANCE
					, SUM(CASE WHEN NVL(D_FINISH_DATE, config.CURRENT_DATE) - D_PAY_DATE > config.dpd THEN N_ALL_PAY_CORPUS_FUTURE ELSE NULL END) / SUM(CASE WHEN config.CURRENT_DATE - NVL(D_FINISH_DATE, D_PAY_DATE) > config.dpd THEN N_LOAN_AMOUNT ELSE NULL END) OVERDUE_RATE_LAGGED
-- 					, SUM(CASE WHEN NVL(D_FINISH_DATE, config.CURRENT_DATE) - D_PAY_DATE > config.dpd THEN N_ALL_PAY_CORPUS_FUTURE - N_ALL_PAID_CORPUS_PAST ELSE NULL END) / SUM(N_LOAN_AMOUNT) OVERDUE_RATE
		FROM plan, config
		GROUP BY N_CURR_TENOR_CACL, LAST_DAY(D_LOAN_DATE)
		ORDER BY D_LOAN_MONTH, N_CURR_TENOR_CACL
)
-- SELECT * FROM vintage WHERE N_CURR_TENOR_CACL = 1 AND D_LOAN_MONTH = '2023-02'
SELECT D_LOAN_MONTH, TERM1, TERM2, TERM3, TERM4, TERM5, TERM6, TERM7, TERM8, TERM9, TERM10, TERM11, TERM12
FROM vintage
pivot (
		max(ROUND(OVERDUE_RATE_LAGGED, 4)) FOR N_CURR_TENOR_CACL IN (1 TERM1, 2 TERM2, 3 TERM3, 4 TERM4, 5 TERM5, 6 TERM6, 7 TERM7, 8 TERM8, 9 TERM9, 10 TERM10, 11 TERM11, 12 TERM12))
ORDER BY D_LOAN_MONTH

随手记

之前用来做日常记录的,迁移之后暂时不支持了,杂物堆里面堆着吧 QaQ

小微税贷额度模型

额度模型.svg

专利申请通过

all_pss.png lgbdt.png textmatch.png

微软常用运行库

微软常用运行库合集包

经济逻辑

WOE计算

超参数搜索

几种超参数搜索的框架:

HEBO
OpenBox
skopt
optuna
hyperopt

还不错的文章:

黑盒优化:超参数优化算法最新进展总结

DeepCTR

vLoong

科大讯飞疫情新闻中的地理位置识别

评论区

avatar

ITLubber酱

一枚致力于算法工程师的迷茫少年
苟且当下,心向远方,驻一座城,守一个人

  • 18

    文章

  • 14

    分类

  • 6951

    访问量

  • 2019-10-01

    建站天数

avatar

ITLubber酱

一枚致力于算法工程师的迷茫少年
苟且当下,心向远方,驻一座城,守一个人

  • 18

    文章

  • 14

    分类

  • 6951

    访问量

请您轻一点,我是很昂贵的机器人哦! O.O