dependencies ‘Rcpp’, ‘rgl’, ‘zoo’, ‘RUnit’
Rcpp_0.11.5
rgl_0.93.1098
zoo_1.7-12
RUnit_0.4.28
RQuantLib_0.4
- bond1.R Select all
#Simple call with a flat curve
require(RQuantLib)
bond <- list(faceAmount=100,
settlementDays=1,
issueDate=as.Date("2014-11-30"),
redemption=100)
scheduleparams <- list(effectiveDate=as.Date("2014-11-30"),
maturityDate=as.Date("2018-11-30"),
period=2,
calendar="UnitedStates",
businessDayConvention = 4,
terminationDateConvention=4,
dateGeneration=1,
endOfMonth=1,
dayCounter = 'Thirty360')
coupon.rate <- c(0.02875)
params <- list(tradeDate=as.Date('2014-2-15'),
settleDate=as.Date('2014-2-19'),
dt=.25,
interpWhat="discount",
interpHow="loglinear")
setEvaluationDate(as.Date("2014-11-22"))
discountCurve.flat <- DiscountCurve(params, list(flat=0.05))
FixedRateBond(bond=bond, rates=coupon.rate, schedule=scheduleparams, calc=list(dayCounter='ActualActual.ISMA',compounding='Compounded', freq='Annual', durationType='Modified'),discountCurve=discountCurve.flat)
FixedRateBondPriceByYield(
settlementDays=1,
yield=0.05127,
faceAmount=100,
effectiveDate=as.Date("2014-11-30"),
maturityDate=as.Date("2018-11-30"),
period=2,
calendar="UnitedStates",
rates=c(0.05),
dayCounter=2,
businessDayConvention=4,
compound=0,
redemption=100,
issueDate=as.Date("2014-11-30"))
FixedRateBondYield(
settlementDays=1,
price=99.54593,
faceAmount=100,
effectiveDate=as.Date("2014-11-30"),
maturityDate=as.Date("2018-11-30"),
period=2,
calendar="UnitedStates",
rates=c(0.05),
dayCounter=2,
businessDayConvention=4,
compound=0,
redemption=100,
issueDate=as.Date("2014-11-30"))
calendar -> http://quantlib.org/reference/group__calendars.html
businessDayConvention -> http://quantlib.org/reference/group__datetime.html#gaff46c5ae9385d20709bedade86edd368
dayCounter -> http://quantlib.org/reference/group__daycounters.html
compounding -> http://quantlib.org/reference/namespace_quant_lib.html#a2779d04b4839fd386b5c85bbb96aaf73
freq -> http://quantlib.org/reference/group__datetime.html#ga6d41db8ba0ea90d22df35889df452ada
duration -> http://quantlib.org/reference/struct_quant_lib_1_1_duration.html
Bond Utilities
matchBDC(bdc = c("Following", "ModifiedFollowing", "Preceding", "ModifiedPreceding", "Unadjusted"))
matchCompounding(cp = c("Simple", "Compounded", "Continuous", "SimpleThenCompounded"))
matchDayCounter(daycounter = c("Actual360", "ActualFixed", "ActualActual", "Business252", "OneDayCounter", "SimpleDayCounter", "Thirty360", "Actual365NoLeap", "ActualActual.ISMA", "ActualActual.Bond", "ActualActual.ISDA", "ActualActual.Historical", "ActualActual.AFB", "ActualActual.Euro"))
matchDateGen(dg = c("Backward", "Forward", "Zero", "ThirdWednesday", "Twentieth", "TwentiethIMM"))
matchFrequency(freq = c("NoFrequency","Once", "Annual", "Semiannual", "EveryFourthMonth", "Quarterly", "Bimonthly", "EveryFourthWeek", "Biweekly", "Weekly", "Daily"))
For Mac OSX, only 0.3.12 is available and quantlib-config should in in your path and executable
- /usr/local/bin/quantlib-config Select all
#!/bin/sh
prefix=/usr/local
exec_prefix=${prefix}
exec_prefix_set=no
usage="\
Usage: quantlib-config [--prefix[=DIR]] [--exec-prefix[=DIR]] [--version] [--libs] [--cflags]"
if test $# -eq 0; then
echo "${usage}" 1>&2
exit 1
fi
while test $# -gt 0; do
case "$1" in
-*=*) optarg=`echo "$1" | sed 's/[-_a-zA-Z0-9]*=//'` ;;
*) optarg= ;;
esac
case $1 in
--prefix=*)
prefix=$optarg
if test $exec_prefix_set = no ; then
exec_prefix=$optarg
fi
;;
--prefix)
echo $prefix
;;
--exec-prefix=*)
exec_prefix=$optarg
exec_prefix_set=yes
;;
--exec-prefix)
echo $exec_prefix
;;
--version)
echo 1.4.1
;;
--cflags)
echo -I${prefix}/include -I/usr/local/include
;;
--libs)
echo -L${exec_prefix}/lib -L/usr/local/lib -lQuantLib
;;
*)
echo "${usage}" 1>&2
exit 1
;;
esac
shift
done
No comments:
Post a Comment