이 계산기가 하는 일
한국거래소(KRX) 3년·5년·10년·30년 국채선물의 이론가를 근월물·차근월물 기준으로 계산한다. 엑셀 원본(KTBF 3y-5y-10y-30y 이론가 v1.6)의 수식을 PHP로 1:1 이식했고, 엑셀 캐시값 294개 테스트 벡터로 검증했다. 기준채권 바스켓 종목·유통수익률·단기금리는 평일 07:40·11:40·16:10(KST)에 자동 수집된다(출처: 한국은행 ECOS, 금융투자협회 KOFIA, KRX).
계산 방식 요약
- 최종거래일 스케줄: 산출일 기준 3·6·9·12월물의 최종거래일(해당 월 셋째 화요일, 휴일 시 순연)을 구해 근월·차근월을 정한다.
- 종목별 선도금리: 바스켓 각 종목의 유통수익률(YTM)과 단기금리(콜·CD91·통안1년)로 최종거래일 기준 선도가격 → 선도금리를 구한다. 단기금리 보간은 Monotone Cubic Hermite Spline(기본) 또는 선형을 선택할 수 있다.
- 이론가: 바스켓 종목의 선도금리를 평균한 뒤, 표면금리 5%·6개월 이표의 가상 국채 가격으로 환산한다(KRX 결제 방식과 동일). 3·5·10년물 호가단위 0.01포인트, 30년물 0.02포인트.
- 보조 지표: 종목별·가상채권 수정듀레이션과 컨벡시티, 상품 간 듀레이션 헤지 비율 매트릭스와 계약수, 결제(예정)가, 수익률 변화(bp)에 따른 이론가 조견표.
입력 파라미터 (REST API)
엔드포인트: POST https://i-kiin.net/wp-json/kiin/v1/ktbf/calc · 본문은 JSON · 인증 불필요 · IP당 분당 60회 제한. 날짜는 엑셀 시리얼 값(1900-01-00 기준 일수, 소수부는 시각)으로 넣는다.
| 필드 | 형식 | 설명 |
|---|---|---|
asof |
숫자(시리얼) | 산출일시. 예: 46275.5 = 2026-09-10 12:00 |
rates.call / rates.cd91 / rates.msb1y |
소수(0~0.30) | 콜금리(1일)·CD 91일·통안증권 1년. 3.02% → 0.0302 |
ipl |
0 또는 1 | 단기금리 보간: 0 = Monotone Cubic Hermite Spline(기본), 1 = 선형 |
base_contracts |
정수(1~100000) | 헤지 매트릭스의 기준 계약수(기본 7) |
holidays |
정수 4개 배열 | 스케줄 4행 각각의 휴일 순연 일수(기본 [0,0,0,0]) |
products.k03|k05|k10|k30.near|next.bonds[] |
객체 1~5개 | 상품별 근월·차근월 바스켓 종목. 각 종목: gubun(종목명), idate(발행일 시리얼), mdate(만기일 시리얼), coupon(표면금리 소수), ycn(연 이표 횟수 1·2·4), mat(만기 연수), ytm(유통수익률 소수) |
settle_offsets_bp.k03…k30 |
정수(-1000~1000) | 결제(예정)가 계산 시 상품별 수익률 오프셋(bp). 기본 0 |
lookup_center_bp |
정수(-1000~1000) | 조견표 중심 오프셋(bp). 기본 0 |
예시 요청
{
"asof": 46275.5,
"rates": { "call": 0.0302, "cd91": 0.0312, "msb1y": 0.0331 },
"ipl": 0,
"base_contracts": 7,
"holidays": [0, 0, 0, 0],
"products": {
"k03": { "near": { "bonds": [ { "gubun": "25-10", "idate": 46001, "mdate": 47097, "coupon": 0.0275, "ycn": 2, "mat": 3, "ytm": 0.0383 } ] },
"next": { "bonds": [ { "gubun": "26-3", "idate": 46091, "mdate": 47187, "coupon": 0.03375, "ycn": 2, "mat": 3, "ytm": 0.0422 } ] } },
"k05": { "near": { "bonds": [ { "gubun": "25-5", "idate": 45818, "mdate": 47644, "coupon": 0.03375, "ycn": 2, "mat": 5, "ytm": 0.0421 } ] },
"next": { "bonds": [ { "gubun": "25-8", "idate": 45910, "mdate": 47736, "coupon": 0.025, "ycn": 2, "mat": 5, "ytm": 0.0410 } ] } },
"k10": { "near": { "bonds": [ { "gubun": "25-11", "idate": 46001, "mdate": 49653, "coupon": 0.0325, "ycn": 2, "mat": 10, "ytm": 0.0433 } ] },
"next": { "bonds": [ { "gubun": "26-6", "idate": 46183, "mdate": 49835, "coupon": 0.0425, "ycn": 2, "mat": 10, "ytm": 0.0445 } ] } },
"k30": { "near": { "bonds": [ { "gubun": "26-2", "idate": 46091, "mdate": 57049, "coupon": 0.035, "ycn": 2, "mat": 30, "ytm": 0.0466 } ] },
"next": { "bonds": [ { "gubun": "25-7", "idate": 45910, "mdate": 56866, "coupon": 0.02625, "ycn": 2, "mat": 30, "ytm": 0.0465 } ] } }
},
"settle_offsets_bp": { "k03": 0, "k05": 0, "k10": 0, "k30": 0 },
"lookup_center_bp": 0
}
※ 종목 값은 형식을 보여 주는 예시이다.
응답 구조
schedule— 4행 최종거래일 스케줄(base,expiry,flag)과near_fdate·next_fdateproducts.{k03,k05,k10,k30}.{near,next}— 종목별bprice(채권가격)·fprice(선도가격)·frate(선도금리)·듀레이션·컨벡시티, 바스켓 평균avg, 이론가theo, 가상채권virt_modur·virt_conv- 헤지 비율 매트릭스·계약수, 상품별 결제(예정)가, 조견표
lookup[](offset_bp,ytms,theo)
오류는 HTTP 400(invalid_input, 범위·형식 오류), 422(calc_failed, 계산 불가 종목), 429(rate_limited)로 돌아온다.
주의
참고·학습용 계산기이다. 거래소 공식 이론가·결제가와 차이가 있을 수 있다.
조회수: 118