Pythhon으로 IRBB 계산하기
TL; DR
채권을 현금 흐름으로 분해하여 수출 곡선의 형상 변화로 인한 가치 변화를 시뮬레이션하다.
IRRB 소개
IRRB는'인터레스트 레이트 릭 인 더 뱅킹북'의 약칭으로, 은행 계좌의 금리 리스크를 뜻한다.이는 금리 수준의 불리한 변동으로 인해 은행 계좌의 자산, 부채의 시장 가격이나 수익이 변동하여 발생하는 위험을 말하는데 바젤은행감독위원회의 자기자본제한 틀에서 제2의 지주(감독상의 검증 과정)의 일환으로 삼는다.또한 에서 제시한 지도에 적용된다.
금융 경제 용어집
은행이 보유한 금리 리스크를 명확히 하기 위해 금리 수준이 변화할 때의 각 방안에서 발생하는 손익을 명확히 해야 한다는 것이다.
금리 변화 방안
시나리오는 당국이 정한 여섯 가지를 구상해야 한다.
IRRB는'인터레스트 레이트 릭 인 더 뱅킹북'의 약칭으로, 은행 계좌의 금리 리스크를 뜻한다.이는 금리 수준의 불리한 변동으로 인해 은행 계좌의 자산, 부채의 시장 가격이나 수익이 변동하여 발생하는 위험을 말하는데 바젤은행감독위원회의 자기자본제한 틀에서 제2의 지주(감독상의 검증 과정)의 일환으로 삼는다.또한 에서 제시한 지도에 적용된다.
금융 경제 용어집
은행이 보유한 금리 리스크를 명확히 하기 위해 금리 수준이 변화할 때의 각 방안에서 발생하는 손익을 명확히 해야 한다는 것이다.
금리 변화 방안
시나리오는 당국이 정한 여섯 가지를 구상해야 한다.
측정 방법
IRRBB는 선불금에 기반한 규칙이기 때문에 구체적인 산정모델 구축은 각 금융기관에 위탁하되 금리 충격에 따른 경제가치 변화액의 EVE(Economic Value of Equity)를 발표하기로 했다.방안에 따라 계산
金利変化後の経済的価値 - 金利変化前の経済的価値
이 필요하다는 것이다.채권의 계산 방법
은행 계좌는 보통 대출, 유가증권 등 다양한 자산을 보유하기 때문에 다양한 현금 흐름이 발생하고 그들의 현금 흐름을 해당 기간으로 분류하여 금리 변화의 영향을 관찰한다.
여기에 고정금리 채권을 대표 자산으로 금리 충격으로 인한 가치 변화를 시뮬레이션한다.또 이자변화로 인한 채권가격의 변화는 일반적으로 수정의 두 가지 형태로 여겨지지만, 이는 이자의 병행이전에만 대응할 수 있기 때문에 전자곡선의 형상변화로 인한 손익을 계산하기 위해서는 채권을 시기별 현금흐름으로 분해해야 한다.
import datetime
import math
import numpy as np
# 基礎数値を設定(オリックス社債第195回)
maturity_date = datetime.datetime(2028, 11, 8)
base_date = datetime.datetime(2019, 3, 8)
coupon = 0.454
freq = 2 # 利払い回数
이어 채권을 현금 흐름으로 분해했다.zanzon = (maturity_date - base_date).days / 365
# 残存年数から利払い頻度に応じた期間を引いていく
cashflow = []
i = 0
while zanzon - (1 / freq) * i > 0:
cashflow.append(
(zanzon - (1 / freq) * i, coupon / freq + (100 if i == 0 else 0))
)
i += 1
뜯어낸 현금 흐름은 당국이 규정한 19개 시기의 공단에 분배된다.19시간을 분배할 때 전후 시간점에서 거리 비례에 따라 분배하여 주기와 금액의 가중 평균이 원시 현금 흐름과 같다.
# バケットの中心時点を設定
buckets_timing = [0.0028, 0.0417, 0.1667, 0.375, 0.625, 0.875, 1.25, 1.75, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5, 8.5, 9.5, 12.5, 17.5, 25]
# バケットへの割当金額を初期化
buckets_amount = [0 for t in buckets_timing]
for t, a in cashflow:
# CFの発生時期を元に前後のバケット時点を取得する
prev_timing = max([b for b in buckets_timing if b < t])
next_timing = min([b for b in buckets_timing if b > t])
# tとの距離に比例して配分率を決める(近いほど配分率が大きい)
prev_bucket_ratio = 1 - (t - prev_timing) / (next_timing - prev_timing)
next_bucket_ratio = 1 - (next_timing - t) / (next_timing - prev_timing)
prev_bucket_cf = a * prev_bucket_ratio
next_bucket_cf = a * next_bucket_ratio
# 前後のバケットに割当CF金額を加算する
buckets_amount[buckets_timing.index(prev_timing)] += prev_bucket_cf
buckets_amount[buckets_timing.index(next_timing)] += next_bucket_cf
현금 흐름을 통에 분배한 후 서로 다른 방안의 금리 변화폭을 생성한다.# イールドカーブ上の金利を求める関数を作成
# べき乗分母
x = 4.0
# パラレルシフトシナリオ
def change_parallel(parallel):
return parallel
# スティープ化シナリオ
def change_steepner(t, rshort, rlong):
return -0.65 * (rshort * math.e ** (-t / x)) + 0.9 * (rlong * (1 - math.e ** (-t / x)))
# フラット化シナリオ
def change_flattener(t, rshort, rlong):
return 0.8 * (rshort * math.e ** (-t / x)) - 0.6 * (rlong * (1 - math.e ** (-t / x)))
# 短期金利変化シナリオ
def change_short(t, rshort):
return rshort * math.e ** (-t / x)
그렇다면 이 채권의 원래 수출 곡선에 각 방안의 금리 변화폭을 더하면 시뮬레이션해야 할 수출 곡선을 만들 수 있지만, 채권에 따라 원래 특정 연한이 발행되지 않아 단기에 대응하는 수출 곡선을 그릴 수 없는 경우도 있다.이런 상황에서 다음과 같은 방법을 구상할 수 있다.
해결책
장점
결점
기타 지표 이율(국채의 수출 곡선 등)으로 대체하다
전 기간의 수출 곡선은 입수하기 쉽다
주식 고유의 신용 리스크가 무시되다
이 채권의 복리를 고정 기한으로 삼다
손쉬운 컴퓨팅
기간 구조를 반영하지 않는 가상의 수출 곡선으로 변하다
그러면 저는 이 채권의 시장가격을 받을 수 없습니다. 기간에 따라 원래 수출 곡선을 얻는 것도 번거롭기 때문에 장기 이자를 기초로 하는 수출 곡선으로 간편하게 사용하기로 했습니다.
가뜩이나 EVE는 금리 충격 시 경제 가치의 변동에 초점을 맞추고 있어 상대적 충격 폭이 중요하고, 절대적인 금리 수준은 큰 영향을 미치지 않잖아요.
base_rate = -0.00035
# 長短金利とパラレル変動幅
parallel = 0.01
rshort = 0.01
rlong = 0.01
# 変化量を取得する
senario = [
[(t, 0) for t in buckets_timing], # 変化なし
[(t, change_parallel(parallel)) for t in buckets_timing], # 上方パラレルシフト
[(t, change_parallel(parallel * -1)) for t in buckets_timing], # 下方パラレルシフト
[(t, change_steepner(t, rshort, rlong)) for t in buckets_timing], # スティープ化
[(t, change_flattener(t, rshort, rlong)) for t in buckets_timing], # フラット化
[(t, change_short(t, rshort)) for t in buckets_timing], # 短期金利上昇
[(t, change_short(t, rshort * -1)) for t in buckets_timing] #短期金利低下
]
이덕 곡선 이율에서 방안수의 할인율을 구하다.discount_factors = [[ 1 / ((1 + r / freq) ** (t * freq)) for t, r in change ] for change in senario]
분할 상환한 채권의 현금 흐름에 할인 인자를 곱해서 현찰을 요구하다.pvs[0]
는 금리에 변화가 없는 현찰이기 때문에 각 방안에서 뺀다.pvs = [ sum(bucket_amount * np.array(df)) for df in discount_factors ]
for i, pv in enumerate(pvs):
print(i, pv - pvs[0])
0 0.0
1 -9.417604340848655
2 10.42500387955431
3 -7.210492083514865
4 4.776781579555461
5 -0.9106947203782738
6 0.9193271935525047
위로 평행으로 이동하는 상황에서 가장 큰 손실이 발생하는 것을 발견하다.경사
Reference
이 문제에 관하여(Pythhon으로 IRBB 계산하기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/sawadyrr5/items/43c514ee002aafc72f71텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)