一、国债价格的几何布朗运动模拟
以16 国债19(SH.019547 )为模拟对象。历史数据处理:
- orig <- read.csv("s019547.csv", header = T)#019547价格数据
- price <- orig$PRICE[(dim(orig)[1] - 249):dim(orig)[1]]#只用近一年数据
- muRes <- mean(diff(price) / price[-length(price)])#近一年日收益率期望
- #[1] 1.234357e-05
- sigRes <- sd(diff(price) / price[-length(price)])#近一年日收益率标准差
- #[1] 0.002480562
自定义风险资产GBM 函数:
参数s0 为初始价格,mu 为近一年日收益率的期望,sigma 为近一年日收益率的标准差,Tw 为模拟交易日数,Tb 为每年交易日数。
本帖隐藏的内容
- geombrown <- function(s0 = 100, mu = 0, sigma = 0.03, Tw = 500, Tb = 250) {
- S <- 1:Tw
- S[1] <- s0
- for (i in 2:Tw) {
- S[i] = S[i-1] * exp((mu - sigma^2 / 2) / Tb + sigma * rnorm(1) * sqrt(1/Tb))
- }#把前一日结果作为新的初始价格,所以将1/Tb作为公式中的dT
- return(S)
- }
模拟该国债的交易价格变动路径,结果反映了国债的长期稳定波动特点。
- pathN <- 100#路径数
- dateN <- 1000#模拟交易日数
- res <- matrix(NA, dateN, pathN)#预设空矩阵
- plot(NULL, xlim = c(0, dateN), ylim = c(98, 102), xlab = "date", ylab = "price")#空图
- for (i in 1:pathN) {
- res[, i] <- geombrown(s0 = 100, mu = muRes, sigma = sigRes, Tw = dateN)
- lines(res[, i], col = i, lwd = 2)
- }#绘制所有路径
上述结果仅仅是标的自身交易特征的反映。
实际的价格变动,还受到其他因素影响,比如该债券历史价格曾受股灾拖累低探至75 元,这种市场强力因素非前述模型力所能及。
二、国债的净现值
债券的面值仅为期间计息和到期还本的计算依据。
市价为证券市场或银行间债券市场中交易匹配价格或协议价格,反映了短期交易价格变动。
若长期持有债券,必须考虑其内在价值,主要影响因素是债券久期和通胀。
仍以16 国债19 为例,计算其净现值(NPV)。该国债为2016 年发行,30 年期,面值100 元,票息3.27% ,每半年支付一次利息,到期还本。本次计算时点,该国债尚余48 期票息。
- #自定义函数
- npvF <- function(r = 4, R = 3.27, capital = 100, term = 48) {
- nF <-sum(c(rep(capital* R/200, term-1), capital*(1+R/200)) / (1+r/200)^(1:term))
- sprintf("本金: %.2f; 票面利率: %.2f; 久期: %d; 折现率: %.2f; 净现值: %.3f", capital, R, term, r, nF)
- }
- npvF()
- #[1] "本金: 100.00; 票面利率: 3.27; 久期: 48; 折现率: 4.00; 净现值: 88.804"
- npvF(r=5)
- #[1] "本金: 100.00; 票面利率: 3.27; 久期: 48; 折现率: 5.00; 净现值: 75.976"
据计算结果,若以4% 为折现率,其净现值约为89 元,若以5% 为折现率,净现值约为76 元。
这意味着,如果现在以高于89 元的价格买入作为长期资产配置标的,其真正的年收益率不到4% ,与通胀率相比,其作为长期保值配置是无意义的。
但是当短期交易者因恐慌抛售致市价下探至 75 元时,该债券的长期持有价值开始显现,这个过程解释了上文提到的价格剧烈波动情况。
三、题外话:
为什么该债券的市价基本在95~103 元之间高于净现值波动呢?
原因之一,自发行以来,该债券得交易流动性还可以,即持有人随时可以变现。由此,风险厌恶型投资者短期配置以规避市场剧烈波动风险,不用担心砸手里。也有一部分投资者单纯地用票息率与银行存款利率对比,持有以图票息。
原因之二,很多“投资者”没有专业金融背景,不懂折现率、净现值、内部收益率这些对久期非常敏感的概念。虽然如何计算钱的“时间价值”仅仅是理论上的方法,但今天的100 元,十年后肯定不值100 元。