국채선물 이론가 계산기 (3·5·10·30년)

계산기를 불러오는 중…

이 계산기가 하는 일

한국거래소(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).

계산 방식 요약

  1. 최종거래일 스케줄: 산출일 기준 3·6·9·12월물의 최종거래일(해당 월 셋째 화요일, 휴일 시 순연)을 구해 근월·차근월을 정한다.
  2. 종목별 선도금리: 바스켓 각 종목의 유통수익률(YTM)과 단기금리(콜·CD91·통안1년)로 최종거래일 기준 선도가격 → 선도금리를 구한다. 단기금리 보간은 Monotone Cubic Hermite Spline(기본) 또는 선형을 선택할 수 있다.
  3. 이론가: 바스켓 종목의 선도금리를 평균한 뒤, 표면금리 5%·6개월 이표의 가상 국채 가격으로 환산한다(KRX 결제 방식과 동일). 3·5·10년물 호가단위 0.01포인트, 30년물 0.02포인트.
  4. 보조 지표: 종목별·가상채권 수정듀레이션과 컨벡시티, 상품 간 듀레이션 헤지 비율 매트릭스와 계약수, 결제(예정)가, 수익률 변화(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_fdate
  • products.{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