国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于Python的兩項(xiàng)直達(dá)延期政策審計(jì)算法研究

2021-10-30 11:52掌孝政
中國(guó)內(nèi)部審計(jì) 2021年10期
關(guān)鍵詞:臺(tái)賬人民銀行代碼

掌孝政

[摘要]兩項(xiàng)直達(dá)延期政策審計(jì)需將審計(jì)期間商業(yè)銀行全部的貸款臺(tái)賬、商業(yè)銀行上報(bào)人民銀行領(lǐng)取補(bǔ)貼的臺(tái)賬進(jìn)行比對(duì)分析,由于審計(jì)數(shù)據(jù)量非常龐大、審計(jì)模型非常復(fù)雜,傳統(tǒng)的手工抽樣方式難以實(shí)現(xiàn)審計(jì)全覆蓋,存在審計(jì)風(fēng)險(xiǎn)。引入Python可以更好地解決兩項(xiàng)直達(dá)延期政策審計(jì)的問題。本文針對(duì)兩項(xiàng)直達(dá)延期政策審計(jì)的算法進(jìn)行了深入研究。延期政策包括展期、無還本續(xù)貸、借新還舊、三個(gè)工作日還舊借新等多種模型,在編寫代碼的時(shí)候要綜合考慮每種模型的特點(diǎn)。

[關(guān)鍵詞]兩項(xiàng)直達(dá)貨幣政策工具? ?Python

了加大金融對(duì)實(shí)體經(jīng)濟(jì)的支持、幫助小微企

業(yè)渡過難關(guān),2020年6月1日,中國(guó)人民銀行推出了兩項(xiàng)直達(dá)貨幣政策。如何監(jiān)督商業(yè)銀行在兩項(xiàng)直達(dá)延期政策中的執(zhí)行情況成為新的審計(jì)難點(diǎn)。本文以人民銀行對(duì)***商業(yè)銀行兩項(xiàng)直達(dá)政策審計(jì)項(xiàng)目的實(shí)例,從數(shù)據(jù)準(zhǔn)備、代碼解析、輸出結(jié)果分析三個(gè)方面詳細(xì)闡述延期政策的審計(jì)方法。人民銀行審計(jì)部門可以通過數(shù)據(jù)比對(duì)分析監(jiān)督商業(yè)銀行在兩項(xiàng)直達(dá)政策中的執(zhí)行情況,商業(yè)銀行也可以通過代碼篩選出貸款臺(tái)賬中符合延期政策的貸款,具有較高的實(shí)用價(jià)值。

一、數(shù)據(jù)準(zhǔn)備

(一)被審計(jì)商業(yè)銀行的貸款臺(tái)賬

兩項(xiàng)直達(dá)延期政策要求貸款的到期日期要大于等于2020年6月1日,而一般的銀行貸款年限為1—2年。所以,在審計(jì)中需要調(diào)取商業(yè)銀行貸款發(fā)放日期為2018年6月1日至審計(jì)日的所有貸款臺(tái)賬(以下簡(jiǎn)稱大臺(tái)賬)。調(diào)取大臺(tái)賬的要素主要包括個(gè)人(企業(yè))的“證件號(hào)碼”“客戶名稱”“貸款金額”“貸款發(fā)放日期”“貸款到期日期”“貸款結(jié)清日期”“利率”“自助循環(huán)貸款標(biāo)識(shí)”“貸款產(chǎn)品名稱”“貸款用途”“逾期貸款標(biāo)識(shí)”“展期貸款標(biāo)識(shí)”等。大臺(tái)賬的格式如表1所示。

(二)商業(yè)銀行上報(bào)人民銀行的臺(tái)賬

商業(yè)銀行上報(bào)人民銀行的臺(tái)賬(以下簡(jiǎn)稱小臺(tái)賬)是商業(yè)銀行領(lǐng)取延期政策獎(jiǎng)勵(lì)的主要依據(jù),其格式如表2所示。

二、代碼解析

(一)數(shù)據(jù)預(yù)處理

引入需要使用的Python庫(kù)函數(shù),代碼如下:

import os

import pandas as pd

import numpy as np

import datetime

from datetime import datetime

from chinese_calendar import is_holiday

1.大臺(tái)賬數(shù)據(jù)預(yù)處理。首先,導(dǎo)入大臺(tái)賬,以變量df_nsls_yq進(jìn)行存儲(chǔ)。代碼如下:

df_nsls_yq = pd.read_excel(r'201901-202106臺(tái)賬.xlsx')

其次,通過strptime()函數(shù)將“貸款發(fā)放日期”“貸款到期日期”“貸款結(jié)清日期”轉(zhuǎn)換成可以計(jì)算的日期格式。這里要用到Python的datetime函數(shù),代碼如下:

list1 = []

for i in df_nsls_yq['貸款發(fā)放日期']:

a = datetime.strptime(str(i),'%Y%m%d')

list1.append(a)

df_nsls_yq['貸款發(fā)放日期'] = list1

list1 = []

for i in df_nsls_yq['貸款到期日期']:

a = datetime.strptime(str(i),'%Y%m%d')

list1.append(a)

df_nsls_yq['貸款到期日期'] = list1

其中%Y%m%d是大臺(tái)賬中日期(如20190806)的原始格式(見表1),如果日期格式是2019-08-06,則需要改為%Y-%m-%d,格式要保持一致。這里的Y代表年,m代表月,d代表日。

而“貸款結(jié)清日期”由于存在未結(jié)清貸款的數(shù)據(jù)是空白的情況,將需要空白的地方進(jìn)行填充,以方便后續(xù)進(jìn)行計(jì)算。代碼如下:

dt2030 = datetime(2030, 1, 1, 0, 0)

list1 = []

for i in df_nsls_yq['貸款結(jié)清日期']:

if len(str(i)) < 5:

a = dt2030

list1.append(a)

else:

b = datetime.strptime(str(i),'%Y%m%d')

list1.append(b)

df_nsls_yq['貸款結(jié)清日期'] = list1

最后,檢查一下“貸款金額”是否為浮點(diǎn)型(float)數(shù)據(jù),如果是字符型(str)數(shù)據(jù)則需要轉(zhuǎn)換為浮點(diǎn)型數(shù)據(jù)。經(jīng)過處理后的大臺(tái)賬格式如表3所示。

2.小臺(tái)賬的數(shù)據(jù)預(yù)處理。因?yàn)樯虡I(yè)銀行一般是按月進(jìn)行統(tǒng)計(jì),而小臺(tái)賬的數(shù)據(jù)格式是一致的,這里可以通過代碼將所有的小臺(tái)賬數(shù)據(jù)表格進(jìn)行合并,代碼如下所示:

path = r'D:\小臺(tái)賬'

files = os.listdir(path)

list1 = []

for i in files:

df1 = pd.read_excel(i)

list1.append(df1)

df_yq = pd.concat(list1)

將所有的小臺(tái)賬數(shù)據(jù)存放于D盤“小臺(tái)賬”這個(gè)文件夾中,方便進(jìn)行提取合并。

最后檢查一下“延期本金”是否為浮點(diǎn)型(float)數(shù)據(jù),如果是字符型(str)數(shù)據(jù)則需要轉(zhuǎn)換為浮點(diǎn)型數(shù)據(jù)。

(二)數(shù)據(jù)比對(duì)及存儲(chǔ)

數(shù)據(jù)預(yù)處理完成以后,就可以進(jìn)行比對(duì)了。這里以許*的貸款臺(tái)賬為例,分為5個(gè)步驟進(jìn)行詳細(xì)說明。

1.通過小臺(tái)賬中的“客戶名稱”,查找大臺(tái)賬中對(duì)應(yīng)名稱的所有貸款臺(tái)賬,代碼如下:

dt202006 = datetime(2020, 6, 1, 0, 0)

list_name = list(df_yq['企業(yè)名稱'])

list_name = list(set(list_name))

for k in list_name:

df1 = df_nsls_yq[df_nsls_yq['客戶名稱'] == k]

當(dāng)客戶名稱為許*時(shí),變量df1的數(shù)據(jù)如表4所示。

通過臺(tái)賬中的“證件號(hào)碼”可以看出,“客戶名稱”為“許*”共有四個(gè)重名,證件號(hào)碼的尾號(hào)分別為14、31、32、36。

2.計(jì)算許*貸款臺(tái)賬中符合展期條件的貸款金額,代碼如下:

df33 = df1[df1['是否展期'] == '展期']

df44 = df33[df33['自助'] != '自助放款']

df55 = df44[df44['貸款到期日期'] >= dt202006]

m_zq = sum(df55['貸款金額'])

通過表4的臺(tái)賬可以看出,許*沒有展期貸款,所以變量m_zq等于初始值0。

3.根據(jù)表4中的“證件號(hào)碼”對(duì)許*貸款臺(tái)賬進(jìn)行分類提取,代碼如下:

df1 = df1[(df1['是否展期'] == '展期') | (df1['貸款到期日期'] >= dt202006)]

df2 = df_yq[df_yq['企業(yè)名稱'] == k]

a = sum(df2['延期本金'])*10000

if len(df1) == 0:

listn.append(df2)

else:

listzj = list(df1['證件號(hào)碼'])

listzj = list(set(listzj))

for x in listzj:

dfx = df1[df1['證件號(hào)碼'] == x]

dfx = dfx.reset_index(drop = True)

4.分別計(jì)算每個(gè)證件號(hào)碼對(duì)應(yīng)的貸款臺(tái)賬中符合借新還舊、三個(gè)工作日還舊借新條件的金額,并將金額進(jìn)行相加,代碼如下:

for i in range(0,len(dfx)):

s = dfx['貸款發(fā)放日期'][i]

z = dfx['自助'][i]

for j in range(0,len(dfx)):

e = dfx['貸款結(jié)清日期'][j]

e1 = e + datetime.timedelta(days=1)

e2 = e + datetime.timedelta(days=2)

e3 = e + datetime.timedelta(days=3)

e_0 = False

e_1 = False

e_2 = False

e_3 = False

if e != dt2030:

e_0 = is_holiday(e)

e_1 = is_holiday(e1)

e_2 = is_holiday(e2)

e_3 = is_holiday(e3)

w = dfx['貸款結(jié)清日期'][j].weekday()

c = (s -e).days

if i != j:

if e_0 == True or e_1 == True or e_2 == True or e_3 == True:

if e_0 == True:

h = 1

bool_h =1

while bool_h:

bool_h = is_holiday(e + datetime.timedelta(days=h))

h = h+1

h = h - 1

else:

if e_1 == True:

h = 1

bool_h =1

while bool_h:

bool_h = is_holiday(e1 + datetime.timedelta(days=h))

h = h+1

else:

if e_2 == True:

h = 1

bool_h =1

while bool_h:

bool_h = is_holiday(e2 + datetime.timedelta(days=h))

h = h+1

else:

if e_3 == True:

h = 1

bool_h =1

while bool_h:

bool_h = is_holiday(e3 + datetime.timedelta(days=h))

h = h+1

if c <= (3+h) and c >= 0 and z != '自助放款':

list1.append(i)

list1.append(j)

list2.append(e)

list3.append(i)

list4.append(j)

else:

if w == 6 or w == 0 or w == 1:

if c <= 3 and c >= 0 and z != '自助放款':

list1.append(i)

list1.append(j)

list2.append(e)

list3.append(i)

list4.append(j)

elif w == 2 or w == 3 or w == 4:

if c <= 5 and c >= 0 and z != '自助放款':

list1.append(i)

list1.append(j)

list2.append(e)

list3.append(i)

list4.append(j)

elif w == 5:

if c <= 4 and c >= 0 and z != '自助放款':

list1.append(i)

list1.append(j)

list2.append(e)

list3.append(i)

list4.append(j)

same = [x for x in list3 if x in list4]

same = list(set(same))

if len(same) > 0:

dfs = dfx.loc[same]

same_m = sum(dfs['貸款金額'])

list1 = list(set(list1))

df11 = dfx.loc[list1]

if len(df11) > 0:

df11 = df11.reset_index(drop = True)

for i in range(0,len(df11)):

if df11['貸款結(jié)清日期'][i] in list2:

list11.append(df11['貸款金額'][i])

else:

list22.append(df11['貸款金額'][i])

m1 = sum(list11)

m2 = sum(list22)+same_m

mm = min(m1,m2)

m = m + mm

m = m + m_zq

這里的核心代碼主要是三個(gè)工作日還舊借新,在計(jì)算三個(gè)工作日時(shí),要考慮到星期六、星期日和公共節(jié)假日等情況。首先,通過chinese_calendar庫(kù)中的is_holiday()函數(shù),判斷貸款結(jié)清日期與貸款發(fā)放日期之間是否存在公共節(jié)假日,若存在,則需要在“貸款發(fā)放日期”減去“貸款結(jié)清日期”差值的基礎(chǔ)上剔除公共節(jié)假日的天數(shù);其次,通過weekday()函數(shù)判斷貸款結(jié)清日期與貸款發(fā)放日期之間是否存在星期六、星期日,若存在,則需要在“貸款發(fā)放日期”減去“貸款結(jié)清日期”差值的基礎(chǔ)上剔除星期六、星期日的天數(shù)。

5.將變量m的值與表2上報(bào)人民銀行許*的總金額96萬元進(jìn)行比對(duì),查看金額是否一致。若上報(bào)人民銀行的金額小于或等于符合延期政策的金額,則提取出對(duì)應(yīng)“客戶名稱”的大臺(tái)賬;若上報(bào)人民銀行的金額大于符合延期政策的金額,則提取出對(duì)應(yīng)“客戶名稱”的小臺(tái)賬,代碼如下:

if m >= a:

listy.append(df11)

listy.append(df33)

else:

listn.append(df2)

if len (listy) > 0:

dfy = pd.concat(listy)

dfy.to_excel('比中臺(tái)賬.xls')

if len(listn) > 0:

dfn = pd.concat(listn)

dfn.to_excel('未比中臺(tái)賬.xls')

證件號(hào)碼的尾號(hào)為14、31的兩個(gè)貸款臺(tái)賬符合延期政策,經(jīng)過程序計(jì)算,變量m的值為960,000。與表2上報(bào)人民銀行許*的總金額96萬元進(jìn)行比對(duì),發(fā)現(xiàn)完全一致。存儲(chǔ)為大臺(tái)賬格式,如表5所示。

三、輸出結(jié)果分析

通過上述代碼對(duì)***商業(yè)銀行的37萬余條大臺(tái)賬數(shù)據(jù)、4000余條小臺(tái)賬數(shù)據(jù)進(jìn)行比對(duì)篩選,最終導(dǎo)出比中臺(tái)賬與未比中臺(tái)賬,并對(duì)輸出的結(jié)果進(jìn)行分析。

(一)比中臺(tái)賬分析

比中臺(tái)賬為大臺(tái)賬格式,通過Excel的篩選功能查看比中的臺(tái)賬是否存在逾期(不良)貸款、消費(fèi)類貸款。

根據(jù)兩項(xiàng)直達(dá)政策的規(guī)定,逾期(不良)貸款、消費(fèi)類貸款不能領(lǐng)取補(bǔ)貼。通過篩選,發(fā)現(xiàn)所有比中的臺(tái)賬不存在逾期貸款、消費(fèi)類貸款。

(二)未比中臺(tái)賬分析

未比中臺(tái)賬為小臺(tái)賬格式,將未比中臺(tái)賬中的客戶名稱逐一代入大臺(tái)賬,分析未比中原因。

共有兩個(gè)客戶的臺(tái)賬未比中,分別是董**,王**。結(jié)合董**與王**的大小臺(tái)賬數(shù)據(jù)進(jìn)行分析,未比中的原因如下。

1.多報(bào)金額。從董**的大臺(tái)賬可以看出,董**符合延期政策的貸款金額為308萬元(如表6所示),而上報(bào)人民銀行的臺(tái)賬為520萬元,多報(bào)了212萬元(如表7所示)。

2.結(jié)清與發(fā)放日期不符合三個(gè)工作日換舊借新。從王**的大臺(tái)賬可以看出(如表8所示),王**的貸款結(jié)清日期與貸款發(fā)放日期不符合三個(gè)工作日換舊借新,沒有符合延期政策的貸款,而上報(bào)人民銀行的臺(tái)賬為60萬元,多報(bào)了60萬元(如表9所示)。

四、總結(jié)

兩項(xiàng)直達(dá)延期政策審計(jì)涉及的審計(jì)數(shù)據(jù)量龐大、審計(jì)模型復(fù)雜,以文中***商業(yè)銀行的審計(jì)項(xiàng)目為例,傳統(tǒng)的審計(jì)方法只能通過人工方式對(duì)小臺(tái)賬進(jìn)行逐一核實(shí)。經(jīng)過測(cè)算,核實(shí)一條臺(tái)賬的平均時(shí)間大約為2分鐘,假設(shè)審計(jì)人員每天工作8小時(shí),需要16天的時(shí)間才能完成。在實(shí)際的審計(jì)項(xiàng)目中,往往只能通過抽查的方式進(jìn)行審計(jì)。而通過Python進(jìn)行處理,可以實(shí)現(xiàn)審計(jì)的全覆蓋,1個(gè)小時(shí)以內(nèi)即可完成核實(shí)工作,極大地縮減了審計(jì)時(shí)間,提升了審計(jì)結(jié)果的準(zhǔn)確性。

兩項(xiàng)直達(dá)延期政策的原始數(shù)據(jù)是商業(yè)銀行的貸款臺(tái)賬,其數(shù)據(jù)比較規(guī)整、格式基本一致,非常適合運(yùn)用Python進(jìn)行數(shù)據(jù)分析。在本次審計(jì)分析完成后,可以將代碼進(jìn)行保存,在下一次兩項(xiàng)直達(dá)延期政策審計(jì)中稍加修改就可以直接使用,有著極高的可延續(xù)性和可重復(fù)性。

(作者單位:中國(guó)人民銀行連云港市中心支行,郵政編碼:222000,電子郵箱:271769150@qq.com)

猜你喜歡
臺(tái)賬人民銀行代碼
葉立東:村支書的“新臺(tái)賬”
淺談0#臺(tái)賬在日常經(jīng)營(yíng)工作中的應(yīng)用
神秘的代碼
不以臺(tái)賬論“英雄”
一周機(jī)構(gòu)凈增(減)倉(cāng)股前20名
重要股東二級(jí)市場(chǎng)增、減持明細(xì)
近期連續(xù)上漲7天以上的股