Diff of the two buildlogs: -- --- b1/build.log 2024-05-31 19:29:48.920650776 +0000 +++ b2/build.log 2024-05-31 19:34:21.269035180 +0000 @@ -1,6 +1,6 @@ I: pbuilder: network access will be disabled during build -I: Current time: Fri May 31 07:23:17 -12 2024 -I: pbuilder-time-stamp: 1717183397 +I: Current time: Sat Jun 1 09:30:03 +14 2024 +I: pbuilder-time-stamp: 1717183803 I: Building the build Environment I: extracting base tarball [/var/cache/pbuilder/trixie-reproducible-base.tgz] I: copying local configuration @@ -28,52 +28,84 @@ dpkg-source: info: applying compile-against-octave-9.patch I: Not using root during the build. I: Installing the build-deps -I: user script /srv/workspace/pbuilder/13705/tmp/hooks/D02_print_environment starting +I: user script /srv/workspace/pbuilder/32151/tmp/hooks/D01_modify_environment starting +debug: Running on virt64z. +I: Changing host+domainname to test build reproducibility +I: Adding a custom variable just for the fun of it... +I: Changing /bin/sh to bash +'/bin/sh' -> '/bin/bash' +lrwxrwxrwx 1 root root 9 May 31 19:30 /bin/sh -> /bin/bash +I: Setting pbuilder2's login shell to /bin/bash +I: Setting pbuilder2's GECOS to second user,second room,second work-phone,second home-phone,second other +I: user script /srv/workspace/pbuilder/32151/tmp/hooks/D01_modify_environment finished +I: user script /srv/workspace/pbuilder/32151/tmp/hooks/D02_print_environment starting I: set - BUILDDIR='/build/reproducible-path' - BUILDUSERGECOS='first user,first room,first work-phone,first home-phone,first other' - BUILDUSERNAME='pbuilder1' - BUILD_ARCH='armhf' - DEBIAN_FRONTEND='noninteractive' - DEB_BUILD_OPTIONS='buildinfo=+all reproducible=+all parallel=3 ' - DISTRIBUTION='trixie' - HOME='/root' - HOST_ARCH='armhf' + BASH=/bin/sh + BASHOPTS=checkwinsize:cmdhist:complete_fullquote:extquote:force_fignore:globasciiranges:globskipdots:hostcomplete:interactive_comments:patsub_replacement:progcomp:promptvars:sourcepath + BASH_ALIASES=() + BASH_ARGC=() + BASH_ARGV=() + BASH_CMDS=() + BASH_LINENO=([0]="12" [1]="0") + BASH_LOADABLES_PATH=/usr/local/lib/bash:/usr/lib/bash:/opt/local/lib/bash:/usr/pkg/lib/bash:/opt/pkg/lib/bash:. + BASH_SOURCE=([0]="/tmp/hooks/D02_print_environment" [1]="/tmp/hooks/D02_print_environment") + BASH_VERSINFO=([0]="5" [1]="2" [2]="21" [3]="1" [4]="release" [5]="arm-unknown-linux-gnueabihf") + BASH_VERSION='5.2.21(1)-release' + BUILDDIR=/build/reproducible-path + BUILDUSERGECOS='second user,second room,second work-phone,second home-phone,second other' + BUILDUSERNAME=pbuilder2 + BUILD_ARCH=armhf + DEBIAN_FRONTEND=noninteractive + DEB_BUILD_OPTIONS='buildinfo=+all reproducible=+all parallel=4 ' + DIRSTACK=() + DISTRIBUTION=trixie + EUID=0 + FUNCNAME=([0]="Echo" [1]="main") + GROUPS=() + HOME=/root + HOSTNAME=i-capture-the-hostname + HOSTTYPE=arm + HOST_ARCH=armhf IFS=' ' - INVOCATION_ID='22db533cec87430ebaac6fd40de06910' - LANG='C' - LANGUAGE='en_US:en' - LC_ALL='C' - MAIL='/var/mail/root' - OPTIND='1' - PATH='/usr/sbin:/usr/bin:/sbin:/bin:/usr/games' - PBCURRENTCOMMANDLINEOPERATION='build' - PBUILDER_OPERATION='build' - PBUILDER_PKGDATADIR='/usr/share/pbuilder' - PBUILDER_PKGLIBDIR='/usr/lib/pbuilder' - PBUILDER_SYSCONFDIR='/etc' - PPID='13705' - PS1='# ' - PS2='> ' + INVOCATION_ID=6aa05cf6f5a8404fbdfaecd5f280882c + LANG=C + LANGUAGE=it_CH:it + LC_ALL=C + MACHTYPE=arm-unknown-linux-gnueabihf + MAIL=/var/mail/root + OPTERR=1 + OPTIND=1 + OSTYPE=linux-gnueabihf + PATH=/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/i/capture/the/path + PBCURRENTCOMMANDLINEOPERATION=build + PBUILDER_OPERATION=build + PBUILDER_PKGDATADIR=/usr/share/pbuilder + PBUILDER_PKGLIBDIR=/usr/lib/pbuilder + PBUILDER_SYSCONFDIR=/etc + PIPESTATUS=([0]="0") + POSIXLY_CORRECT=y + PPID=32151 PS4='+ ' - PWD='/' - SHELL='/bin/bash' - SHLVL='2' - SUDO_COMMAND='/usr/bin/timeout -k 18.1h 18h /usr/bin/ionice -c 3 /usr/bin/nice /usr/sbin/pbuilder --build --configfile /srv/reproducible-results/rbuild-debian/r-b-build.yPtEK8gm/pbuilderrc_E0L9 --distribution trixie --hookdir /etc/pbuilder/first-build-hooks --debbuildopts -b --basetgz /var/cache/pbuilder/trixie-reproducible-base.tgz --buildresult /srv/reproducible-results/rbuild-debian/r-b-build.yPtEK8gm/b1 --logfile b1/build.log octave-financial_0.5.3-5.dsc' - SUDO_GID='113' - SUDO_UID='107' - SUDO_USER='jenkins' - TERM='unknown' - TZ='/usr/share/zoneinfo/Etc/GMT+12' - USER='root' - _='/usr/bin/systemd-run' - http_proxy='http://10.0.0.15:3142/' + PWD=/ + SHELL=/bin/bash + SHELLOPTS=braceexpand:errexit:hashall:interactive-comments:posix + SHLVL=3 + SUDO_COMMAND='/usr/bin/timeout -k 24.1h 24h /usr/bin/ionice -c 3 /usr/bin/nice -n 11 /usr/bin/unshare --uts -- /usr/sbin/pbuilder --build --configfile /srv/reproducible-results/rbuild-debian/r-b-build.yPtEK8gm/pbuilderrc_WTqY --distribution trixie --hookdir /etc/pbuilder/rebuild-hooks --debbuildopts -b --basetgz /var/cache/pbuilder/trixie-reproducible-base.tgz --buildresult /srv/reproducible-results/rbuild-debian/r-b-build.yPtEK8gm/b2 --logfile b2/build.log octave-financial_0.5.3-5.dsc' + SUDO_GID=110 + SUDO_UID=103 + SUDO_USER=jenkins + TERM=unknown + TZ=/usr/share/zoneinfo/Etc/GMT-14 + UID=0 + USER=root + _='I: set' + http_proxy=http://10.0.0.15:3142/ I: uname -a - Linux virt32c 6.1.0-21-armmp-lpae #1 SMP Debian 6.1.90-1 (2024-05-03) armv7l GNU/Linux + Linux i-capture-the-hostname 6.1.0-21-arm64 #1 SMP Debian 6.1.90-1 (2024-05-03) aarch64 GNU/Linux I: ls -l /bin - lrwxrwxrwx 1 root root 7 May 27 11:24 /bin -> usr/bin -I: user script /srv/workspace/pbuilder/13705/tmp/hooks/D02_print_environment finished + lrwxrwxrwx 1 root root 7 May 26 11:25 /bin -> usr/bin +I: user script /srv/workspace/pbuilder/32151/tmp/hooks/D02_print_environment finished -> Attempting to satisfy build-dependencies -> Creating pbuilder-satisfydepends-dummy package Package: pbuilder-satisfydepends-dummy @@ -635,7 +667,7 @@ Get: 518 http://deb.debian.org/debian trixie/main armhf octave-io armhf 2.6.4-3+b2 [198 kB] Get: 519 http://deb.debian.org/debian trixie/main armhf octave-statistics-common all 1.6.6-2 [7047 kB] Get: 520 http://deb.debian.org/debian trixie/main armhf octave-statistics armhf 1.6.6-2 [87.2 kB] -Fetched 192 MB in 6s (32.6 MB/s) +Fetched 192 MB in 3s (71.6 MB/s) debconf: delaying package configuration, since apt-utils is not installed Selecting previously unselected package netbase. (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 19444 files and directories currently installed.) @@ -2771,7 +2803,11 @@ Building tag database... -> Finished parsing the build-deps I: Building the package -I: Running cd /build/reproducible-path/octave-financial-0.5.3/ && env PATH="/usr/sbin:/usr/bin:/sbin:/bin:/usr/games" HOME="/nonexistent/first-build" dpkg-buildpackage -us -uc -b && env PATH="/usr/sbin:/usr/bin:/sbin:/bin:/usr/games" HOME="/nonexistent/first-build" dpkg-genchanges -S > ../octave-financial_0.5.3-5_source.changes +I: user script /srv/workspace/pbuilder/32151/tmp/hooks/A99_set_merged_usr starting +Not re-configuring usrmerge for trixie +I: user script /srv/workspace/pbuilder/32151/tmp/hooks/A99_set_merged_usr finished +hostname: Name or service not known +I: Running cd /build/reproducible-path/octave-financial-0.5.3/ && env PATH="/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/i/capture/the/path" HOME="/nonexistent/second-build" dpkg-buildpackage -us -uc -b && env PATH="/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/i/capture/the/path" HOME="/nonexistent/second-build" dpkg-genchanges -S > ../octave-financial_0.5.3-5_source.changes dpkg-buildpackage: info: source package octave-financial dpkg-buildpackage: info: source version 0.5.3-5 dpkg-buildpackage: info: source distribution unstable @@ -2808,6 +2844,68 @@ Checking package... Run the unit tests... Checking m files ... +[inst/cfdur.m] +>>>>> /build/reproducible-path/octave-financial-0.5.3/inst/cfdur.m +***** demo + cf = [2.5 2.5 2.5 2.5 2.5 2.5 2.5 2.5 2.5 102.5]; + yield = 0.025; + [ duration, modDuration ] = cfdur( cf, yield ); + %-------------------------------------------------- + % Input cash flow and yield, output duration and modified duration +***** test + cf = [2.5 2.5 2.5 2.5 2.5 2.5 2.5 2.5 2.5 102.5]; + [dur modDur] = cfdur( cf, 0.025 ); + errVal1 = round(dur*(1e+4))*(1e-4) - 8.9709; + errVal2 = round(modDur*(1e+4))*(1e-4) - 8.7521; + assert( errVal1, 0 ) + assert( errVal2, 0 ) +1 test, 1 passed, 0 known failure, 0 skipped +[inst/second.m] +>>>>> /build/reproducible-path/octave-financial-0.5.3/inst/second.m +***** assert (second (451482.906781456), 45.918, 0.01) +***** assert (second ("1967-09-21 11:56:34", "yyyy-mm-dd HH:MM:SS"), 34) +2 tests, 2 passed, 0 known failure, 0 skipped +[inst/pointfig.m] +>>>>> /build/reproducible-path/octave-financial-0.5.3/inst/pointfig.m +***** shared a + a = [1 2 3 2 4 2 1]; +***** test + [s l] = movavg(a, 2, 4); + assert(s, [1 1.5 2.5 2.5 3 3 1.5]) + assert(l, [1 1.5 2 2 2.75 2.75 2.25]) +***** test + [s l] = movavg(a', 2, 4); + assert(s, [1;1.5;2.5;2.5;3;3;1.5]) + assert(l, [1;1.5;2;2;2.75;2.75;2.25]) +***** test + [s l] = movavg(a, 3, 4, 1); + assert(s, [3 4.8 7 7 9.5 8 5.5]./3, 10*eps) + assert(l, [1 11/7 20/9 2.2 3 2.7 2], 10*eps) +3 tests, 3 passed, 0 known failure, 0 skipped +[inst/posvolidx.m] +>>>>> /build/reproducible-path/octave-financial-0.5.3/inst/posvolidx.m +***** shared c, v, pvia, pvib + c = [22.44 22.61 22.67 22.88 23.36 23.23 23.08 22.86 23.17 23.69 23.77 23.84 24.32 24.8 24.16 24.1 23.37 23.61 23.21]; + v = [10 12 23 25 34 12 32 15 15 34 54 12 86 45 32 76 89 13 28]; + pvia = [100 100.7575758 101.0249554 101.9607843 104.0998217 104.0998217 103.4276318 103.4276318 103.4276318 105.7488389 106.1059477 106.1059477 108.242309 108.242309 108.242309 107.9734953 104.7029289 104.7029289 102.9290546]'; + pvib = [5 5.037878788 5.051247772 5.098039216 5.204991087 5.204991087 5.171381588 5.171381588 5.171381588 5.287441943 5.305297383 5.305297383 5.412115451 5.412115451 5.412115451 5.398674767 5.235146444 5.235146444 5.14645273]'; +***** assert(posvolidx(c, v), pvia, 1e-5) +***** assert(posvolidx([c' v']), pvia, 1e-5) +***** assert(posvolidx(c, v, 5), pvib, 1e-5) +***** assert(posvolidx([c' v'], 5), pvib, 1e-5) +4 tests, 4 passed, 0 known failure, 0 skipped +[inst/mirr.m] +>>>>> /build/reproducible-path/octave-financial-0.5.3/inst/mirr.m +***** assert (mirr ([-100000 20000 -10000 30000 38000 50000], 0.09, 0.12), 0.0832, 0.00005) +1 test, 1 passed, 0 known failure, 0 skipped +[inst/x2mdate.m] +>>>>> /build/reproducible-path/octave-financial-0.5.3/inst/x2mdate.m +***** assert(x2mdate(39448), datenum(2008, 1, 1)) +***** assert(x2mdate([39083 39448]), datenum(2007:2008, 1, 1)) +***** assert(x2mdate(2), datenum(1900, 1, 1)) +***** assert(x2mdate(1, 0, "ExcelBug"), datenum(1900, 1, 1)) +***** assert(x2mdate(0, 1), datenum(1904, 1, 1)) +5 tests, 5 passed, 0 known failure, 0 skipped [inst/blkprice.m] >>>>> /build/reproducible-path/octave-financial-0.5.3/inst/blkprice.m ***** test @@ -2820,6 +2918,36 @@ ***** error blkprice (1, 2, 3) ***** error blkprice (1, 2, 3, 4) 6 tests, 6 passed, 0 known failure, 0 skipped +[inst/busdays.m] +>>>>> /build/reproducible-path/octave-financial-0.5.3/inst/busdays.m +***** assert (busdays (datenum (2008, 1, 1), datenum (2008, 1, 12)), datenum (2008, 1, [2;3;4;7;8;9;10;11])) +***** assert (busdays (datenum (2008, 1, 1), datenum (2008, 1, 12), "d"), datenum (2008, 1, [2;3;4;7;8;9;10;11])) +***** assert (busdays (datenum (2001, 1, 2), datenum (2001, 1, 9), "w"), datenum (2001, 1, [5;12])) +***** assert (busdays (datenum (2008, 1, 1), datenum (2008, 1, 2), "m"), datenum (2008, 1, 31)) +***** assert (busdays (datenum (2008, 1, 1), datenum (2010, 5, 2), "m"), lbusdate ([2008*ones(12,1);2009*ones(12,1);2010*ones(5,1)], [1:12 1:12 1:5]')) +***** assert (busdays (datenum (2008, 1, 1), datenum (2008, 1, 2), "q"), datenum (2008, 3, 31)) +***** assert (busdays (datenum (2008, 1, 1), datenum (2010, 5, 2), "q"), lbusdate ([2008*ones(4,1);2009*ones(4,1);2010*ones(2,1)], [3:3:12 3:3:12 3 6]')) +***** assert (busdays (datenum (2008, 1, 1), datenum (2008, 1, 2), "s"), datenum (2008, 6, 30)) +***** assert (busdays (datenum (2008, 1, 1), datenum (2010, 5, 2), "s"), lbusdate ([2008;2008;2009;2009;2010], [6 12 6 12 6]')) +***** assert (busdays (datenum (2008, 1, 1), datenum (2011, 1, 2), "a"), datenum ([2008;2009;2010;2011], [12;12;12;12], [31;31;31;30])) +10 tests, 10 passed, 0 known failure, 0 skipped +[inst/gbm.m] +>>>>> /build/reproducible-path/octave-financial-0.5.3/inst/gbm.m +***** test + AssetPrice = 100.; RiskFreeRate = 0.04; Dividends = 0.01; Volatility = 0.2; ExpiryTime = 1.; + Simulations = 1e6; Timesteps = 10; + SDE = gbm (RiskFreeRate - Dividends, Volatility, "StartState", AssetPrice); + [Paths, ~, ~] = simByEuler (SDE, 1, "DeltaTime", ExpiryTime, "NTRIALS", Simulations, "NSTEPS", Timesteps, "Antithetic", true); + Strike = 100.; + CallApproximate = exp (-RiskFreeRate * ExpiryTime) * mean (max (Paths(end, 1, :) - Strike, 0.)); + [Call, ~] = blsprice (AssetPrice, Strike, RiskFreeRate, ExpiryTime, Volatility, Dividends); + assert (CallApproximate, Call, 1e-1); +1 test, 1 passed, 0 known failure, 0 skipped +[inst/hour.m] +>>>>> /build/reproducible-path/octave-financial-0.5.3/inst/hour.m +***** assert (hour (451482.906781456), 21) +***** assert (hour ("1967-09-21 11:56:34", "yyyy-mm-dd HH:MM:SS"), 11) +2 tests, 2 passed, 0 known failure, 0 skipped [inst/macd.m] >>>>> /build/reproducible-path/octave-financial-0.5.3/inst/macd.m ***** shared d, m, n, a, b @@ -2833,81 +2961,13 @@ [a, b] = macd (d', 2); ***** assert([a, b], [m, n], 0.0001) 3 tests, 3 passed, 0 known failure, 0 skipped -[inst/llow.m] ->>>>> /build/reproducible-path/octave-financial-0.5.3/inst/llow.m -***** shared c, l - c = [22.44 22.61 22.67 22.88 23.36 23.23 23.08 22.86 23.17 23.69 23.77 23.84 24.32 24.8 24.16 24.1 23.37 23.61 23.21 25]; - l = [22.44 22.44 22.44 22.44 22.44 22.44 22.44 22.44 22.44 22.44 22.44 22.44 22.44 22.44 22.61 22.67 22.86 22.86 22.86 22.86]; -***** assert(llow(c), l) -***** assert(llow(c'), l') -2 tests, 2 passed, 0 known failure, 0 skipped -[inst/hour.m] ->>>>> /build/reproducible-path/octave-financial-0.5.3/inst/hour.m -***** assert (hour (451482.906781456), 21) -***** assert (hour ("1967-09-21 11:56:34", "yyyy-mm-dd HH:MM:SS"), 11) -2 tests, 2 passed, 0 known failure, 0 skipped -[inst/year.m] ->>>>> /build/reproducible-path/octave-financial-0.5.3/inst/year.m -***** assert (year (523383), 1432); -***** assert (year ("12-02-34", "mm-dd-yy"), 2034); -***** assert (year ([728647 728848]), [1994 1995]); -***** assert (year ([728647; 728848]), [1994; 1995]); -***** assert (year ({"12-02-34", "12-02-85"}, "mm-dd-yy"), [2034 1985]); -***** assert (year ({"12-02-34"; "12-02-85"}, "mm-dd-yy"), [2034; 1985]); -6 tests, 6 passed, 0 known failure, 0 skipped -[inst/blsvega.m] ->>>>> /build/reproducible-path/octave-financial-0.5.3/inst/blsvega.m -***** test -***** error blsvega () -***** error blsvega (1) -***** error blsvega (1, 2) -***** error blsvega (1, 2, 3) -***** error blsvega (1, 2, 3, 4) -6 tests, 6 passed, 0 known failure, 0 skipped -[inst/negvolidx.m] ->>>>> /build/reproducible-path/octave-financial-0.5.3/inst/negvolidx.m -***** shared c, v, nvia, nvib - c = [22.44 22.61 22.67 22.88 23.36 23.23 23.08 22.86 23.17 23.69 23.77 23.84 24.32 24.8 24.16 24.1 23.37 23.61 23.21]; - v = [10 12 23 25 34 12 32 15 15 34 54 12 86 45 32 76 89 13 28]; - nvia = [100 100 100 100 100 99.44349315 99.44349315 98.49559157 98.49559157 98.49559157 98.49559157 98.78565011 98.78565011 100.7353669 98.13574451 98.13574451 98.13574451 99.14355704 99.14355704]'; - nvib = [5 5 5 5 5 4.972174658 4.972174658 4.924779578 4.924779578 4.924779578 4.924779578 4.939282505 4.939282505 5.036768344 4.906787226 4.906787226 4.906787226 4.957177852 4.957177852]'; -***** assert(negvolidx(c, v), nvia, 1e-5) -***** assert(negvolidx([c' v']), nvia, 1e-5) -***** assert(negvolidx(c, v, 5), nvib, 1e-5) -***** assert(negvolidx([c' v'], 5), nvib, 1e-5) +[inst/eomdate.m] +>>>>> /build/reproducible-path/octave-financial-0.5.3/inst/eomdate.m +***** assert(eomdate(2008, 2), datenum(2008, 2, 29)) +***** assert(eomdate(2007, 2), datenum(2007, 2, 28)) +***** assert(eomdate([2008 2007], [3 4]), [datenum(2008, 3, 31) datenum(2007, 4, 30)]) +***** assert(eomdate([2008;2007], [3;4]), [datenum(2008, 3, 31);datenum(2007, 4, 30)]) 4 tests, 4 passed, 0 known failure, 0 skipped -[inst/blsprice.m] ->>>>> /build/reproducible-path/octave-financial-0.5.3/inst/blsprice.m -***** test - [Call, Put] = blsprice (90:10:110, 100, 0.04, 1, 0.2, 0.01); - assert (Call, [4.4037 9.3197 16.1217], 1e-4) - assert (Put, [11.3781 6.3937 3.2952], 1e-4) -***** error blsprice () -***** error blsprice (1) -***** error blsprice (1, 2) -***** error blsprice (1, 2, 3) -***** error blsprice (1, 2, 3, 4) -***** error blsprice ("invalid", "type", "argument", 4, 5) -***** error blsprice ({1, 2, 3}, [2 7 8], [8 3 1], 4, 10) -8 tests, 8 passed, 0 known failure, 0 skipped -[inst/yeardays.m] ->>>>> /build/reproducible-path/octave-financial-0.5.3/inst/yeardays.m -***** assert(yeardays(2000), 366) -***** assert(yeardays(2001), 365) -***** assert(yeardays(2000:2004), [366 365 365 365 366]) -***** assert(yeardays(2000, 0), 366) -***** assert(yeardays(2000, 1), 360) -***** assert(yeardays(2000, 2), 360) -***** assert(yeardays(2000, 3), 365) -***** assert(yeardays(2000, 4), 360) -***** assert(yeardays(2000, 5), 360) -***** assert(yeardays(2000, 6), 360) -***** assert(yeardays(2000, 7), 365) -***** assert(yeardays(2000, 8), 366) -***** assert(yeardays(2000, 9), 360) -***** assert(yeardays(2000, 10), 365) -***** assert(yeardays(2000, 11), 360) -15 tests, 15 passed, 0 known failure, 0 skipped [inst/cir.m] >>>>> /build/reproducible-path/octave-financial-0.5.3/inst/cir.m ***** test @@ -2923,166 +2983,21 @@ Bond = A * exp (-B * InitialInterestRate); assert (BondApproximate, Bond, 1e-3); 1 test, 1 passed, 0 known failure, 0 skipped -[inst/taxedrr.m] ->>>>> /build/reproducible-path/octave-financial-0.5.3/inst/taxedrr.m -***** assert (taxedrr (0.12, 0.30), 0.084, 10*eps) -***** assert (taxedrr (0.12, 0), 0.12, 10*eps) -***** assert (taxedrr (0.12, 1), 0, 10*eps) -3 tests, 3 passed, 0 known failure, 0 skipped -[inst/m2xdate.m] ->>>>> /build/reproducible-path/octave-financial-0.5.3/inst/m2xdate.m -***** assert(m2xdate(datenum(2008, 1, 1)), 39448) -***** assert(m2xdate(datenum(2007:2008, 1, 1)), [39083 39448]) -***** assert(m2xdate(datenum(1900, 1, 1)), 2) -***** assert(m2xdate(datenum(1900, 1, 1), 0, "ExcelBug"), 1) -***** assert(m2xdate(datenum(1904, 1, 1), 1), 0) -5 tests, 5 passed, 0 known failure, 0 skipped -[inst/busdate.m] ->>>>> /build/reproducible-path/octave-financial-0.5.3/inst/busdate.m -***** assert(busdate(datenum(2008,1,2)), datenum(2008,1,3)) -***** assert(busdate(datenum(2007,12,31)), datenum(2008,1,2)) -***** assert(busdate(datenum(2007,1,5)), datenum(2007,1,8)) -***** assert(busdate(datenum(2007,1,6)), datenum(2007,1,8)) -***** assert(busdate(datenum(2008,1,3), -1), datenum(2008,1,2)) -***** assert(busdate(datenum(2008,1,2), -1), datenum(2007,12,31)) -***** assert(busdate(datenum(2008,1,2), -1, datenum(2007,1,1):datenum(2008,1,1)), datenum(2006,12,29)) -***** assert(busdate([datenum(2008,1,2) datenum(2007,1,1)]), [datenum(2008,1,3) datenum(2007,1,3)]) -***** assert(busdate([datenum(2008,1,2) datenum(2007,1,1)], [1 1]), [datenum(2008,1,3) datenum(2007,1,3)]) -***** assert(busdate([datenum(2008,1,2) datenum(2007,1,1)], 1), [datenum(2008,1,3) datenum(2007,1,3)]) -***** assert(busdate([datenum(2008,1,2);datenum(2007,1,1)], [1;1]), [datenum(2008,1,3);datenum(2007,1,3)]) -***** assert(busdate([datenum(2008,1,2);datenum(2007,1,2)], [1;-1]), [datenum(2008,1,3);datenum(2006,12,29)]) -***** assert(busdate(datenum(2008,1,2), 1, holidays(datenum(2008,1,1), datenum(2008,1,31)), [1 0 0 0 0 0 0]), datenum(2008,1,3)) -***** assert(busdate(datenum(2008,1,4), 1, holidays(datenum(2008,1,1), datenum(2008,1,31)), [1 0 0 0 0 0 0]), datenum(2008,1,5)) -***** assert(busdate(datenum(2008,1,5), 1, holidays(datenum(2008,1,1), datenum(2008,1,31)), [1 0 0 0 0 0 0]), datenum(2008,1,7)) -***** assert(busdate(datenum(2008,1,6), 1, holidays(datenum(2008,1,1), datenum(2008,1,31)), [1 0 0 0 0 0 0]), datenum(2008,1,7)) -***** assert(busdate(datenum(2008,1,1), 1, holidays(datenum(2008,1,1), datenum(2008,1,31)), [1 1 1 1 1 1 0]), datenum(2008,1,5)) -17 tests, 17 passed, 0 known failure, 0 skipped -[inst/datefind.m] ->>>>> /build/reproducible-path/octave-financial-0.5.3/inst/datefind.m -***** assert (datefind (datenum (1999, 7, [10;20]), datenum (1999, 7, 1:31)), [10;20]) -***** assert (datefind (datenum (1999, 7, [10;20]), datenum (1999, 7, 1:31), 1), [9;10;11;19;20;21]) -2 tests, 2 passed, 0 known failure, 0 skipped -[inst/daysact.m] ->>>>> /build/reproducible-path/octave-financial-0.5.3/inst/daysact.m -***** assert (daysact ("01-Jan-2007", ["10-Jan-2007"; "23-Feb-2007"; "23-Jul-2007"]), [9;53;203]) -***** assert (daysact ("7-sep-2002", "25-dec-2002"), 109) -2 tests, 2 passed, 0 known failure, 0 skipped -[inst/isbusday.m] ->>>>> /build/reproducible-path/octave-financial-0.5.3/inst/isbusday.m -***** assert(isbusday(datenum(2008,1,2)), true()) -***** assert(isbusday(datenum(2008,1,1)), false()) -***** assert(isbusday(datenum(2008,1,1), []), false()) -***** assert(isbusday(datenum(2008,2,2)), false()) -***** assert(isbusday(datenum(2008,1,2), datenum(2008,1,2)), false()) -***** assert(isbusday(datenum(2008,1,2), [], zeros(1,7)), true()) -***** assert(isbusday(datenum(2008,1,2), [], ones(1,7)), false()) -***** assert(isbusday([datenum(2008,1,2) datenum(2008,2,2)]), [true() false()]) -***** assert(isbusday([datenum(2008,1,2);datenum(2008,2,2)]), [true();false()]) -9 tests, 9 passed, 0 known failure, 0 skipped -[inst/busdays.m] ->>>>> /build/reproducible-path/octave-financial-0.5.3/inst/busdays.m -***** assert (busdays (datenum (2008, 1, 1), datenum (2008, 1, 12)), datenum (2008, 1, [2;3;4;7;8;9;10;11])) -***** assert (busdays (datenum (2008, 1, 1), datenum (2008, 1, 12), "d"), datenum (2008, 1, [2;3;4;7;8;9;10;11])) -***** assert (busdays (datenum (2001, 1, 2), datenum (2001, 1, 9), "w"), datenum (2001, 1, [5;12])) -***** assert (busdays (datenum (2008, 1, 1), datenum (2008, 1, 2), "m"), datenum (2008, 1, 31)) -***** assert (busdays (datenum (2008, 1, 1), datenum (2010, 5, 2), "m"), lbusdate ([2008*ones(12,1);2009*ones(12,1);2010*ones(5,1)], [1:12 1:12 1:5]')) -***** assert (busdays (datenum (2008, 1, 1), datenum (2008, 1, 2), "q"), datenum (2008, 3, 31)) -***** assert (busdays (datenum (2008, 1, 1), datenum (2010, 5, 2), "q"), lbusdate ([2008*ones(4,1);2009*ones(4,1);2010*ones(2,1)], [3:3:12 3:3:12 3 6]')) -***** assert (busdays (datenum (2008, 1, 1), datenum (2008, 1, 2), "s"), datenum (2008, 6, 30)) -***** assert (busdays (datenum (2008, 1, 1), datenum (2010, 5, 2), "s"), lbusdate ([2008;2008;2009;2009;2010], [6 12 6 12 6]')) -***** assert (busdays (datenum (2008, 1, 1), datenum (2011, 1, 2), "a"), datenum ([2008;2009;2010;2011], [12;12;12;12], [31;31;31;30])) -10 tests, 10 passed, 0 known failure, 0 skipped -[inst/gbm.m] ->>>>> /build/reproducible-path/octave-financial-0.5.3/inst/gbm.m -***** test - AssetPrice = 100.; RiskFreeRate = 0.04; Dividends = 0.01; Volatility = 0.2; ExpiryTime = 1.; - Simulations = 1e6; Timesteps = 10; - SDE = gbm (RiskFreeRate - Dividends, Volatility, "StartState", AssetPrice); - [Paths, ~, ~] = simByEuler (SDE, 1, "DeltaTime", ExpiryTime, "NTRIALS", Simulations, "NSTEPS", Timesteps, "Antithetic", true); - Strike = 100.; - CallApproximate = exp (-RiskFreeRate * ExpiryTime) * mean (max (Paths(end, 1, :) - Strike, 0.)); - [Call, ~] = blsprice (AssetPrice, Strike, RiskFreeRate, ExpiryTime, Volatility, Dividends); - assert (CallApproximate, Call, 1e-1); -1 test, 1 passed, 0 known failure, 0 skipped -[inst/corr2cov.m] ->>>>> /build/reproducible-path/octave-financial-0.5.3/inst/corr2cov.m -***** demo - sigma = [ 0.5 2.0 ]; - corr = [ 1.0 -0.5; -0.5 1.0 ]; - cov = corr2cov( sigma, corr ); - %-------------------------------------------------- - % Input standard deviations and correlation matrix, output covariance - % matrix -***** test - sigma = [0.5 2.0]; - corr = [1.0 -0.5; -0.5 1.0]; - cov = corr2cov( sigma, corr ); - assert( cov, [ 0.25 -0.5; -0.5 4.0 ] ) -1 test, 1 passed, 0 known failure, 0 skipped -[inst/blstheta.m] ->>>>> /build/reproducible-path/octave-financial-0.5.3/inst/blstheta.m -***** test - [CallTheta, PutTheta] = blstheta (90:10:110, 100, 0.04, 1, 0.2, 0.01); - assert (CallTheta, [-4.2901 -5.2337 -5.1954], 1e-4) - assert (PutTheta, [-1.3380 -2.3806 -2.4413], 1e-4) -***** error blstheta () -***** error blstheta (1) -***** error blstheta (1, 2) -***** error blstheta (1, 2, 3) -***** error blstheta (1, 2, 3, 4) -6 tests, 6 passed, 0 known failure, 0 skipped -[inst/@sde/simByEuler.m] ->>>>> /build/reproducible-path/octave-financial-0.5.3/inst/@sde/simByEuler.m -***** test - Asset1Price = 40.; Asset2Price = 40.; Strike = 40.; RiskFreeRate = 0.05; Volatility1 = 0.5; Volatility2 = 0.5; ExpiryTime = 0.25; Correlation = 0.3; - Simulations = 1e5; Timesteps = 10; - Drift = drift ([0.;0.], [RiskFreeRate 0.;0. RiskFreeRate]); - Diffusion = diffusion ([1.;1.], [Volatility1 0.;0. Volatility2]); - SDE = sde (Drift, Diffusion, "StartState", [Asset1Price;Asset2Price], "Correlation", [1 Correlation;Correlation 1]); - [Paths, ~, ~] = simulate (SDE, 1, "DeltaTime", ExpiryTime, "NTRIALS", Simulations, "NSTEPS", Timesteps, "Antithetic", true); - BasketCallApproximate = exp (-RiskFreeRate * ExpiryTime) * mean (max (max (Paths(end, :, :)) - Strike, 0.)); - BasketCall = 6.8477; ## Computed using formula from Stulz (1982) - assert (BasketCallApproximate, BasketCall, 1e-1); -***** test - AssetPrice = 100.; RiskFreeRate = 0.04; Dividends = 0.01; Volatility = 0.2; ExpiryTime = 1.; - Simulations = 1e6; Timesteps = 10; - Drift = drift (0., RiskFreeRate - Dividends); - Diffusion = diffusion (1., Volatility); - SDE = sde (Drift, Diffusion, "StartState", AssetPrice); - [Paths, ~, ~] = simByEuler (SDE, 1, "DeltaTime", ExpiryTime, "NTRIALS", Simulations, "NSTEPS", Timesteps, "Antithetic", true); - AssetExpiryMean = AssetPrice * exp ((RiskFreeRate - Dividends) * ExpiryTime); - AssetExpiryMeanApproximate = mean (Paths(end, 1, :)); - AssetExpiryVariance = AssetPrice * AssetPrice * exp (2 * (RiskFreeRate - Dividends) * ExpiryTime) * (exp (Volatility * Volatility * ExpiryTime) - 1); - ConfidenceInterval = 0.01; - tol = norminv(1 - ConfidenceInterval/2) * sqrt (AssetExpiryVariance / Simulations); - assert (AssetExpiryMeanApproximate, AssetExpiryMean, tol) - Strike = 100.; - CallApproximate = exp (-RiskFreeRate * ExpiryTime) * mean (max (Paths(end, 1, :) - Strike, 0.)); - [Call, ~] = blsprice (AssetPrice, Strike, RiskFreeRate, ExpiryTime, Volatility, Dividends); - assert (CallApproximate, Call, 1e-1); -***** error simByEuler() -***** error simByEuler(1) -***** error simByEuler("invalid type", 1) -5 tests, 5 passed, 0 known failure, 0 skipped -[inst/@sde/sde.m] ->>>>> /build/reproducible-path/octave-financial-0.5.3/inst/@sde/sde.m -***** error sde () -***** error sde (1) -***** error sde (1, 2) -***** error sde (1, 2, "OptionName") -4 tests, 4 passed, 0 known failure, 0 skipped -[inst/@sde/simulate.m] ->>>>> /build/reproducible-path/octave-financial-0.5.3/inst/@sde/simulate.m -***** error simulate () -***** error simulate (1) +[inst/rsindex.m] +>>>>> /build/reproducible-path/octave-financial-0.5.3/inst/rsindex.m +***** shared c, r + c = [22.44 22.61 22.67 22.88 23.36 23.23 23.08 22.86 23.17 23.69 23.77 23.84 24.32 24.8 24.16 24.1 23.37 23.61 23.21]; + r = [nan(1, 13) 85.1190 70.235 68.6684 55.6322 53.0414 49.7717]; +***** assert(rsindex(c), r, 0.0001) +***** assert(rsindex(c'), r', 0.0001) 2 tests, 2 passed, 0 known failure, 0 skipped -[inst/second.m] ->>>>> /build/reproducible-path/octave-financial-0.5.3/inst/second.m -***** assert (second (451482.906781456), 45.918, 0.01) -***** assert (second ("1967-09-21 11:56:34", "yyyy-mm-dd HH:MM:SS"), 34) +[inst/day.m] +>>>>> /build/reproducible-path/octave-financial-0.5.3/inst/day.m +***** assert (day (523383), 21); +***** assert (day ("12-02-34", "mm-dd-yy"), 2); 2 tests, 2 passed, 0 known failure, 0 skipped -[inst/pointfig.m] ->>>>> /build/reproducible-path/octave-financial-0.5.3/inst/pointfig.m +[inst/movavg.m] +>>>>> /build/reproducible-path/octave-financial-0.5.3/inst/movavg.m ***** shared a a = [1 2 3 2 4 2 1]; ***** test @@ -3098,6 +3013,10 @@ assert(s, [3 4.8 7 7 9.5 8 5.5]./3, 10*eps) assert(l, [1 11/7 20/9 2.2 3 2.7 2], 10*eps) 3 tests, 3 passed, 0 known failure, 0 skipped +[inst/nomrr.m] +>>>>> /build/reproducible-path/octave-financial-0.5.3/inst/nomrr.m +***** assert (nomrr (0.0938, 12), 0.09, 0.00005) +1 test, 1 passed, 0 known failure, 0 skipped [inst/nweekdate.m] >>>>> /build/reproducible-path/octave-financial-0.5.3/inst/nweekdate.m ***** assert(nweekdate(1, 4, 2008, 1), datenum(2008, 1, 2)) @@ -3113,30 +3032,189 @@ ***** assert(nweekdate('lweekdate', 4, 2008, 1), datenum(2008, 1, 30)) ***** assert(nweekdate('lweekdate', 4, 2008, 1, 6), datenum(2008, 1, 23)) 12 tests, 12 passed, 0 known failure, 0 skipped -[inst/x2mdate.m] ->>>>> /build/reproducible-path/octave-financial-0.5.3/inst/x2mdate.m -***** assert(x2mdate(39448), datenum(2008, 1, 1)) -***** assert(x2mdate([39083 39448]), datenum(2007:2008, 1, 1)) -***** assert(x2mdate(2), datenum(1900, 1, 1)) -***** assert(x2mdate(1, 0, "ExcelBug"), datenum(1900, 1, 1)) -***** assert(x2mdate(0, 1), datenum(1904, 1, 1)) -5 tests, 5 passed, 0 known failure, 0 skipped -[inst/thirdwednesday.m] ->>>>> /build/reproducible-path/octave-financial-0.5.3/inst/thirdwednesday.m -***** shared m, y, bt, et - m = (1:12)'; - y = 2008; - bt = datenum(2008, m, [16;20;19;16;21;18;16;20;17;15;19;17]); - et = datenum([2008*ones(9,1);2009*ones(3,1)], [4:12 1:3]', [16;20;19;16;21;18;16;20;17;15;19;17]); +[inst/blsprice.m] +>>>>> /build/reproducible-path/octave-financial-0.5.3/inst/blsprice.m ***** test - [b e] = thirdwednesday (m, y); - assert(b, bt) - assert(e, et) + [Call, Put] = blsprice (90:10:110, 100, 0.04, 1, 0.2, 0.01); + assert (Call, [4.4037 9.3197 16.1217], 1e-4) + assert (Put, [11.3781 6.3937 3.2952], 1e-4) +***** error blsprice () +***** error blsprice (1) +***** error blsprice (1, 2) +***** error blsprice (1, 2, 3) +***** error blsprice (1, 2, 3, 4) +***** error blsprice ("invalid", "type", "argument", 4, 5) +***** error blsprice ({1, 2, 3}, [2 7 8], [8 3 1], 4, 10) +8 tests, 8 passed, 0 known failure, 0 skipped +[inst/blsdelta.m] +>>>>> /build/reproducible-path/octave-financial-0.5.3/inst/blsdelta.m ***** test - [b e] = thirdwednesday (m', y); - assert(b, bt') - assert(e, et') + [CallDelta, PutDelta] = blsdelta (90:10:110, 100, 0.04, 1, 0.2, 0.01); + assert (CallDelta, [0.3871 0.5927 0.7586], 1e-4) + assert (PutDelta, [-0.6030 -0.3973 -0.2314], 1e-4) +***** error blsdelta () +***** error blsdelta (1) +***** error blsdelta (1, 2) +***** error blsdelta (1, 2, 3) +***** error blsdelta (1, 2, 3, 4) +6 tests, 6 passed, 0 known failure, 0 skipped +[inst/weeknum.m] +>>>>> /build/reproducible-path/octave-financial-0.5.3/inst/weeknum.m +***** assert (weeknum (728647), 52) +***** assert (weeknum ([728647 728848]), [52 27]) +***** assert (weeknum ([728647 ;728648]), [52 ;52]) +***** assert (weeknum ([736413 736813 ; 737213 737613]), [13 17 ; 22 28]) +***** assert (weeknum (datenum (2005, 01, 01), 2, 1), 53) +***** assert (weeknum (datenum (2005, 01, 02), 2, 1), 53) +***** assert (weeknum (datenum (2005, 12, 31), 2, 1), 52) +***** assert (weeknum (datenum (2007, 01, 01), 2, 1), 1) +***** assert (weeknum (datenum (2007, 12, 30), 2, 1), 52) +***** assert (weeknum (datenum (2007, 12, 31), 2, 1), 1) +***** assert (weeknum (datenum (2008, 01, 01), 2, 1), 1) +***** assert (weeknum (datenum (2008, 12, 28), 2, 1), 52) +***** assert (weeknum (datenum (2008, 12, 29), 2, 1), 1) +***** assert (weeknum (datenum (2008, 12, 30), 2, 1), 1) +***** assert (weeknum (datenum (2008, 12, 31), 2, 1), 1) +***** assert (weeknum (datenum (2009, 01, 01), 2, 1), 1) +***** assert (weeknum (datenum (2009, 12, 31), 2, 1), 53) +***** assert (weeknum (datenum (2010, 01, 01), 2, 1), 53) +***** assert (weeknum (datenum (2010, 01, 02), 2, 1), 53) +***** assert (weeknum (datenum (2010, 01, 03), 2, 1), 53) +***** assert (weeknum ([datenum(2005, 1, 1) datenum(2008, 12, 29)], 2, 1), [53 1]) +***** test + [n, y] = weeknum (datenum (2010, 1, 3), 2, 1); + assert ([n y],[53 2009]) +***** demo + d = datenum (2014, 12, 29); + [w, y] = weeknum (datenum (2014, 12, 29), 2, 1); + disp(['In ISO8601 ' datestr(d) ' is week ' num2str(w) ' of year ' num2str(y)]) + disp(['Octave default weeknumber for ' datestr(d) ' is ' num2str(weeknum (d))]) +22 tests, 22 passed, 0 known failure, 0 skipped +[inst/onbalvol.m] +>>>>> /build/reproducible-path/octave-financial-0.5.3/inst/onbalvol.m +***** shared c, v, obv + c = [22.44 22.61 22.67 22.88 23.36 23.23 23.08 22.86 23.17 23.69 23.77 23.84 24.32 24.8 24.16 24.1 23.37 23.61 23.21]; + v = [10 12 23 25 34 12 32 15 15 34 54 12 86 45 32 76 89 13 28]; + obv = [0 12 35 60 94 82 50 35 50 84 138 150 236 281 249 173 84 97 69]'; +***** assert(onbalvol(c, v), obv) +***** assert(onbalvol([c' v']), obv) +2 tests, 2 passed, 0 known failure, 0 skipped +[inst/year.m] +>>>>> /build/reproducible-path/octave-financial-0.5.3/inst/year.m +***** assert (year (523383), 1432); +***** assert (year ("12-02-34", "mm-dd-yy"), 2034); +***** assert (year ([728647 728848]), [1994 1995]); +***** assert (year ([728647; 728848]), [1994; 1995]); +***** assert (year ({"12-02-34", "12-02-85"}, "mm-dd-yy"), [2034 1985]); +***** assert (year ({"12-02-34"; "12-02-85"}, "mm-dd-yy"), [2034; 1985]); +6 tests, 6 passed, 0 known failure, 0 skipped +[inst/blkimpv.m] +>>>>> /build/reproducible-path/octave-financial-0.5.3/inst/blkimpv.m +***** assert (blkimpv (90, 100, 0.04, 1, [3.4484 13.0563], 1, 1e-6, [1 0]), [0.2 0.2], 1e-4) +***** error blkimpv () +***** error blkimpv (1) +***** error blkimpv (1, 2) +***** error blkimpv (1, 2, 3) +***** error blkimpv (1, 2, 3, 4) +***** error blkimpv (1, 2, 3, 4, 5, 6, 7, 8, 2) +7 tests, 7 passed, 0 known failure, 0 skipped +[inst/binprice.m] +>>>>> /build/reproducible-path/octave-financial-0.5.3/inst/binprice.m +***** test + [AssetPrice, OptionValue] = binprice (100, 100, 0.04, 1, 0.25, 0.2, 0, 0.01); + assert (OptionValue(1:2,1:2), [6.4701 2.2159; 0 11.0776], 1e-4) +***** error binprice () +***** error binprice (1) +***** error binprice (1, 2) +***** error binprice (1, 2, 3) +***** error binprice (1, 2, 3, 4) +***** error binprice (1, 2, 3, 4, 5) +***** error binprice (1, 2, 3, 4, 5, 6) +8 tests, 8 passed, 0 known failure, 0 skipped +[inst/lbusdate.m] +>>>>> /build/reproducible-path/octave-financial-0.5.3/inst/lbusdate.m +***** assert(lbusdate(2008,4), datenum(2008,4,30)) +***** assert(lbusdate(2008,5), datenum(2008,5,30)) 2 tests, 2 passed, 0 known failure, 0 skipped +[inst/blsvega.m] +>>>>> /build/reproducible-path/octave-financial-0.5.3/inst/blsvega.m +***** test +***** error blsvega () +***** error blsvega (1) +***** error blsvega (1, 2) +***** error blsvega (1, 2, 3) +***** error blsvega (1, 2, 3, 4) +6 tests, 6 passed, 0 known failure, 0 skipped +[inst/easter.m] +>>>>> /build/reproducible-path/octave-financial-0.5.3/inst/easter.m +***** assert(easter(1990), datenum(1990, 4, 15)) +***** assert(easter(1991), datenum(1991, 3, 31)) +***** assert(easter(1992), datenum(1992, 4, 19)) +***** assert(easter(1993), datenum(1993, 4, 11)) +***** assert(easter(1994), datenum(1994, 4, 3)) +***** assert(easter(1995), datenum(1995, 4, 16)) +***** assert(easter(1996), datenum(1996, 4, 7)) +***** assert(easter(1997), datenum(1997, 3, 30)) +***** assert(easter(1998), datenum(1998, 4, 12)) +***** assert(easter(1999), datenum(1999, 4, 4)) +***** assert(easter([2000 2001]), [datenum(2000, 4, 23) datenum(2001, 4, 15)]) +***** assert(easter([2002;2003]), [datenum(2002, 3, 31);datenum(2003, 4, 20)]) +***** assert(easter([2004 2005;2006 2007;2008 2009]), [datenum(2004, 4, 11) datenum(2005, 3, 27);datenum(2006, 4, 16) datenum(2007, 4, 8);datenum(2008, 3, 23) datenum(2009, 4, 12)]) +***** assert(easter([2002;2003]), [datenum(2002, 3, 31);datenum(2003, 4, 20)]) +14 tests, 14 passed, 0 known failure, 0 skipped +[inst/corr2cov.m] +>>>>> /build/reproducible-path/octave-financial-0.5.3/inst/corr2cov.m +***** demo + sigma = [ 0.5 2.0 ]; + corr = [ 1.0 -0.5; -0.5 1.0 ]; + cov = corr2cov( sigma, corr ); + %-------------------------------------------------- + % Input standard deviations and correlation matrix, output covariance + % matrix +***** test + sigma = [0.5 2.0]; + corr = [1.0 -0.5; -0.5 1.0]; + cov = corr2cov( sigma, corr ); + assert( cov, [ 0.25 -0.5; -0.5 4.0 ] ) +1 test, 1 passed, 0 known failure, 0 skipped +[inst/busdate.m] +>>>>> /build/reproducible-path/octave-financial-0.5.3/inst/busdate.m +***** assert(busdate(datenum(2008,1,2)), datenum(2008,1,3)) +***** assert(busdate(datenum(2007,12,31)), datenum(2008,1,2)) +***** assert(busdate(datenum(2007,1,5)), datenum(2007,1,8)) +***** assert(busdate(datenum(2007,1,6)), datenum(2007,1,8)) +***** assert(busdate(datenum(2008,1,3), -1), datenum(2008,1,2)) +***** assert(busdate(datenum(2008,1,2), -1), datenum(2007,12,31)) +***** assert(busdate(datenum(2008,1,2), -1, datenum(2007,1,1):datenum(2008,1,1)), datenum(2006,12,29)) +***** assert(busdate([datenum(2008,1,2) datenum(2007,1,1)]), [datenum(2008,1,3) datenum(2007,1,3)]) +***** assert(busdate([datenum(2008,1,2) datenum(2007,1,1)], [1 1]), [datenum(2008,1,3) datenum(2007,1,3)]) +***** assert(busdate([datenum(2008,1,2) datenum(2007,1,1)], 1), [datenum(2008,1,3) datenum(2007,1,3)]) +***** assert(busdate([datenum(2008,1,2);datenum(2007,1,1)], [1;1]), [datenum(2008,1,3);datenum(2007,1,3)]) +***** assert(busdate([datenum(2008,1,2);datenum(2007,1,2)], [1;-1]), [datenum(2008,1,3);datenum(2006,12,29)]) +***** assert(busdate(datenum(2008,1,2), 1, holidays(datenum(2008,1,1), datenum(2008,1,31)), [1 0 0 0 0 0 0]), datenum(2008,1,3)) +***** assert(busdate(datenum(2008,1,4), 1, holidays(datenum(2008,1,1), datenum(2008,1,31)), [1 0 0 0 0 0 0]), datenum(2008,1,5)) +***** assert(busdate(datenum(2008,1,5), 1, holidays(datenum(2008,1,1), datenum(2008,1,31)), [1 0 0 0 0 0 0]), datenum(2008,1,7)) +***** assert(busdate(datenum(2008,1,6), 1, holidays(datenum(2008,1,1), datenum(2008,1,31)), [1 0 0 0 0 0 0]), datenum(2008,1,7)) +***** assert(busdate(datenum(2008,1,1), 1, holidays(datenum(2008,1,1), datenum(2008,1,31)), [1 1 1 1 1 1 0]), datenum(2008,1,5)) +17 tests, 17 passed, 0 known failure, 0 skipped +[inst/yeardays.m] +>>>>> /build/reproducible-path/octave-financial-0.5.3/inst/yeardays.m +***** assert(yeardays(2000), 366) +***** assert(yeardays(2001), 365) +***** assert(yeardays(2000:2004), [366 365 365 365 366]) +***** assert(yeardays(2000, 0), 366) +***** assert(yeardays(2000, 1), 360) +***** assert(yeardays(2000, 2), 360) +***** assert(yeardays(2000, 3), 365) +***** assert(yeardays(2000, 4), 360) +***** assert(yeardays(2000, 5), 360) +***** assert(yeardays(2000, 6), 360) +***** assert(yeardays(2000, 7), 365) +***** assert(yeardays(2000, 8), 366) +***** assert(yeardays(2000, 9), 360) +***** assert(yeardays(2000, 10), 365) +***** assert(yeardays(2000, 11), 360) +15 tests, 15 passed, 0 known failure, 0 skipped [inst/holidays.m] >>>>> /build/reproducible-path/octave-financial-0.5.3/inst/holidays.m ***** assert(holidays("jan 1 1999", "jan 1 1998"), zeros(0,1)); # return empty when startdate is after enddate @@ -3149,28 +3227,12 @@ ***** assert (holidays ("dec 29 2005", "jan 2 2006"), datenum (2006 ,1 ,2)); ***** assert(holidays(datenum(2004,1,1), datenum(2004,12,31)), datenum(2004*ones(10,1), [1;1;2;4;5;6;7;9;11;12], [1;19;16;9;31;11;5;6;25;24])); 9 tests, 9 passed, 0 known failure, 0 skipped -[inst/rsindex.m] ->>>>> /build/reproducible-path/octave-financial-0.5.3/inst/rsindex.m -***** shared c, r - c = [22.44 22.61 22.67 22.88 23.36 23.23 23.08 22.86 23.17 23.69 23.77 23.84 24.32 24.8 24.16 24.1 23.37 23.61 23.21]; - r = [nan(1, 13) 85.1190 70.235 68.6684 55.6322 53.0414 49.7717]; -***** assert(rsindex(c), r, 0.0001) -***** assert(rsindex(c'), r', 0.0001) -2 tests, 2 passed, 0 known failure, 0 skipped -[inst/opprofit.m] ->>>>> /build/reproducible-path/octave-financial-0.5.3/inst/opprofit.m -***** assert (opprofit (100, 90, 4, 0, 0), 6) -***** assert (opprofit (80:20:120, 90, 4, 0, 0), [-4 6 26]) -***** assert (opprofit (80:20:120, 80:20:120, 0, 0, 0), [0 0 0]) -***** assert (opprofit (100, 90, 4, [0 0 1 1], [0 1 0 1]), [6 -4 -6 4]) -***** error opprofit () -***** error opprofit (1) -***** error opprofit (1, 2) -***** error opprofit (1, 2, 3) -***** error opprofit (1, 2, 3, 4) -***** error opprofit (1, 2, 3, 4, 0) -***** error opprofit (1, 2, 3, 0, 5) -11 tests, 11 passed, 0 known failure, 0 skipped +[inst/taxedrr.m] +>>>>> /build/reproducible-path/octave-financial-0.5.3/inst/taxedrr.m +***** assert (taxedrr (0.12, 0.30), 0.084, 10*eps) +***** assert (taxedrr (0.12, 0), 0.12, 10*eps) +***** assert (taxedrr (0.12, 1), 0, 10*eps) +3 tests, 3 passed, 0 known failure, 0 skipped [inst/cov2corr.m] >>>>> /build/reproducible-path/octave-financial-0.5.3/inst/cov2corr.m ***** demo @@ -3185,17 +3247,22 @@ assert( sigma, [0.5 2.0] ) assert( corr, [1.0 -0.5; -0.5 1.0] ); 1 test, 1 passed, 0 known failure, 0 skipped -[inst/day.m] ->>>>> /build/reproducible-path/octave-financial-0.5.3/inst/day.m -***** assert (day (523383), 21); -***** assert (day ("12-02-34", "mm-dd-yy"), 2); +[inst/thirdwednesday.m] +>>>>> /build/reproducible-path/octave-financial-0.5.3/inst/thirdwednesday.m +***** shared m, y, bt, et + m = (1:12)'; + y = 2008; + bt = datenum(2008, m, [16;20;19;16;21;18;16;20;17;15;19;17]); + et = datenum([2008*ones(9,1);2009*ones(3,1)], [4:12 1:3]', [16;20;19;16;21;18;16;20;17;15;19;17]); +***** test + [b e] = thirdwednesday (m, y); + assert(b, bt) + assert(e, et) +***** test + [b e] = thirdwednesday (m', y); + assert(b, bt') + assert(e, et') 2 tests, 2 passed, 0 known failure, 0 skipped -[inst/fbusdate.m] ->>>>> /build/reproducible-path/octave-financial-0.5.3/inst/fbusdate.m -***** assert(fbusdate(2008,2), datenum(2008,2,1)) -***** assert(fbusdate(2008,1), datenum(2008,1,2)) -***** assert(fbusdate(2008,3), datenum(2008,3,3)) -3 tests, 3 passed, 0 known failure, 0 skipped [inst/blsgamma.m] >>>>> /build/reproducible-path/octave-financial-0.5.3/inst/blsgamma.m ***** error blsgamma () @@ -3204,6 +3271,18 @@ ***** error blsgamma (1, 2, 3) ***** error blsgamma (1, 2, 3, 4) 5 tests, 5 passed, 0 known failure, 0 skipped +[inst/blstheta.m] +>>>>> /build/reproducible-path/octave-financial-0.5.3/inst/blstheta.m +***** test + [CallTheta, PutTheta] = blstheta (90:10:110, 100, 0.04, 1, 0.2, 0.01); + assert (CallTheta, [-4.2901 -5.2337 -5.1954], 1e-4) + assert (PutTheta, [-1.3380 -2.3806 -2.4413], 1e-4) +***** error blstheta () +***** error blstheta (1) +***** error blstheta (1, 2) +***** error blstheta (1, 2, 3) +***** error blstheta (1, 2, 3, 4) +6 tests, 6 passed, 0 known failure, 0 skipped [inst/blslambda.m] >>>>> /build/reproducible-path/octave-financial-0.5.3/inst/blslambda.m ***** test @@ -3220,114 +3299,6 @@ ***** error blslambda (1, 2, 3) ***** error blslambda (1, 2, 3, 4) 7 tests, 7 passed, 0 known failure, 0 skipped -[inst/mirr.m] ->>>>> /build/reproducible-path/octave-financial-0.5.3/inst/mirr.m -***** assert (mirr ([-100000 20000 -10000 30000 38000 50000], 0.09, 0.12), 0.0832, 0.00005) -1 test, 1 passed, 0 known failure, 0 skipped -[inst/onbalvol.m] ->>>>> /build/reproducible-path/octave-financial-0.5.3/inst/onbalvol.m -***** shared c, v, obv - c = [22.44 22.61 22.67 22.88 23.36 23.23 23.08 22.86 23.17 23.69 23.77 23.84 24.32 24.8 24.16 24.1 23.37 23.61 23.21]; - v = [10 12 23 25 34 12 32 15 15 34 54 12 86 45 32 76 89 13 28]; - obv = [0 12 35 60 94 82 50 35 50 84 138 150 236 281 249 173 84 97 69]'; -***** assert(onbalvol(c, v), obv) -***** assert(onbalvol([c' v']), obv) -2 tests, 2 passed, 0 known failure, 0 skipped -[inst/minute.m] ->>>>> /build/reproducible-path/octave-financial-0.5.3/inst/minute.m -***** assert (minute (451482.906781456), 45) -***** assert (minute ("1967-09-21 11:56:34", "yyyy-mm-dd HH:MM:SS"), 56) -2 tests, 2 passed, 0 known failure, 0 skipped -[inst/easter.m] ->>>>> /build/reproducible-path/octave-financial-0.5.3/inst/easter.m -***** assert(easter(1990), datenum(1990, 4, 15)) -***** assert(easter(1991), datenum(1991, 3, 31)) -***** assert(easter(1992), datenum(1992, 4, 19)) -***** assert(easter(1993), datenum(1993, 4, 11)) -***** assert(easter(1994), datenum(1994, 4, 3)) -***** assert(easter(1995), datenum(1995, 4, 16)) -***** assert(easter(1996), datenum(1996, 4, 7)) -***** assert(easter(1997), datenum(1997, 3, 30)) -***** assert(easter(1998), datenum(1998, 4, 12)) -***** assert(easter(1999), datenum(1999, 4, 4)) -***** assert(easter([2000 2001]), [datenum(2000, 4, 23) datenum(2001, 4, 15)]) -***** assert(easter([2002;2003]), [datenum(2002, 3, 31);datenum(2003, 4, 20)]) -***** assert(easter([2004 2005;2006 2007;2008 2009]), [datenum(2004, 4, 11) datenum(2005, 3, 27);datenum(2006, 4, 16) datenum(2007, 4, 8);datenum(2008, 3, 23) datenum(2009, 4, 12)]) -***** assert(easter([2002;2003]), [datenum(2002, 3, 31);datenum(2003, 4, 20)]) -14 tests, 14 passed, 0 known failure, 0 skipped -[inst/hhigh.m] ->>>>> /build/reproducible-path/octave-financial-0.5.3/inst/hhigh.m -***** shared c, h - c = [22.44 22.61 22.67 22.88 23.36 23.23 23.08 22.86 23.17 23.69 23.77 23.84 24.32 24.8 24.16 24.1 23.37 23.61 23.21 25]; - h = [22.44 22.61 22.67 22.88 23.36 23.36 23.36 23.36 23.36 23.69 23.77 23.84 24.32 24.8 24.8 24.8 24.8 24.8 24.8 25]; -***** assert(hhigh(c), h) -***** assert(hhigh(c'), h') -2 tests, 2 passed, 0 known failure, 0 skipped -[inst/blsdelta.m] ->>>>> /build/reproducible-path/octave-financial-0.5.3/inst/blsdelta.m -***** test - [CallDelta, PutDelta] = blsdelta (90:10:110, 100, 0.04, 1, 0.2, 0.01); - assert (CallDelta, [0.3871 0.5927 0.7586], 1e-4) - assert (PutDelta, [-0.6030 -0.3973 -0.2314], 1e-4) -***** error blsdelta () -***** error blsdelta (1) -***** error blsdelta (1, 2) -***** error blsdelta (1, 2, 3) -***** error blsdelta (1, 2, 3, 4) -6 tests, 6 passed, 0 known failure, 0 skipped -[inst/movavg.m] ->>>>> /build/reproducible-path/octave-financial-0.5.3/inst/movavg.m -***** shared a - a = [1 2 3 2 4 2 1]; -***** test - [s l] = movavg(a, 2, 4); - assert(s, [1 1.5 2.5 2.5 3 3 1.5]) - assert(l, [1 1.5 2 2 2.75 2.75 2.25]) -***** test - [s l] = movavg(a', 2, 4); - assert(s, [1;1.5;2.5;2.5;3;3;1.5]) - assert(l, [1;1.5;2;2;2.75;2.75;2.25]) -***** test - [s l] = movavg(a, 3, 4, 1); - assert(s, [3 4.8 7 7 9.5 8 5.5]./3, 10*eps) - assert(l, [1 11/7 20/9 2.2 3 2.7 2], 10*eps) -3 tests, 3 passed, 0 known failure, 0 skipped -[inst/weeknum.m] ->>>>> /build/reproducible-path/octave-financial-0.5.3/inst/weeknum.m -***** assert (weeknum (728647), 52) -***** assert (weeknum ([728647 728848]), [52 27]) -***** assert (weeknum ([728647 ;728648]), [52 ;52]) -***** assert (weeknum ([736413 736813 ; 737213 737613]), [13 17 ; 22 28]) -***** assert (weeknum (datenum (2005, 01, 01), 2, 1), 53) -***** assert (weeknum (datenum (2005, 01, 02), 2, 1), 53) -***** assert (weeknum (datenum (2005, 12, 31), 2, 1), 52) -***** assert (weeknum (datenum (2007, 01, 01), 2, 1), 1) -***** assert (weeknum (datenum (2007, 12, 30), 2, 1), 52) -***** assert (weeknum (datenum (2007, 12, 31), 2, 1), 1) -***** assert (weeknum (datenum (2008, 01, 01), 2, 1), 1) -***** assert (weeknum (datenum (2008, 12, 28), 2, 1), 52) -***** assert (weeknum (datenum (2008, 12, 29), 2, 1), 1) -***** assert (weeknum (datenum (2008, 12, 30), 2, 1), 1) -***** assert (weeknum (datenum (2008, 12, 31), 2, 1), 1) -***** assert (weeknum (datenum (2009, 01, 01), 2, 1), 1) -***** assert (weeknum (datenum (2009, 12, 31), 2, 1), 53) -***** assert (weeknum (datenum (2010, 01, 01), 2, 1), 53) -***** assert (weeknum (datenum (2010, 01, 02), 2, 1), 53) -***** assert (weeknum (datenum (2010, 01, 03), 2, 1), 53) -***** assert (weeknum ([datenum(2005, 1, 1) datenum(2008, 12, 29)], 2, 1), [53 1]) -***** test - [n, y] = weeknum (datenum (2010, 1, 3), 2, 1); - assert ([n y],[53 2009]) -***** demo - d = datenum (2014, 12, 29); - [w, y] = weeknum (datenum (2014, 12, 29), 2, 1); - disp(['In ISO8601 ' datestr(d) ' is week ' num2str(w) ' of year ' num2str(y)]) - disp(['Octave default weeknumber for ' datestr(d) ' is ' num2str(weeknum (d))]) -22 tests, 22 passed, 0 known failure, 0 skipped -[inst/effrr.m] ->>>>> /build/reproducible-path/octave-financial-0.5.3/inst/effrr.m -***** assert (effrr (0.09, 12), 0.0938, 0.00005) -1 test, 1 passed, 0 known failure, 0 skipped [inst/cfconv.m] >>>>> /build/reproducible-path/octave-financial-0.5.3/inst/cfconv.m ***** demo @@ -3343,27 +3314,11 @@ errVal = round(errVal*(1e+10)); assert(errVal, 0) 1 test, 1 passed, 0 known failure, 0 skipped -[inst/month.m] ->>>>> /build/reproducible-path/octave-financial-0.5.3/inst/month.m -***** assert (nthargout (1:2, @month, 523383), {12 "Dec"}); -***** assert (nthargout (1:2, @month, "12-02-34", "mm-dd-yy"), {12 "Dec"}); +[inst/datefind.m] +>>>>> /build/reproducible-path/octave-financial-0.5.3/inst/datefind.m +***** assert (datefind (datenum (1999, 7, [10;20]), datenum (1999, 7, 1:31)), [10;20]) +***** assert (datefind (datenum (1999, 7, [10;20]), datenum (1999, 7, 1:31), 1), [9;10;11;19;20;21]) 2 tests, 2 passed, 0 known failure, 0 skipped -[inst/cfdur.m] ->>>>> /build/reproducible-path/octave-financial-0.5.3/inst/cfdur.m -***** demo - cf = [2.5 2.5 2.5 2.5 2.5 2.5 2.5 2.5 2.5 102.5]; - yield = 0.025; - [ duration, modDuration ] = cfdur( cf, yield ); - %-------------------------------------------------- - % Input cash flow and yield, output duration and modified duration -***** test - cf = [2.5 2.5 2.5 2.5 2.5 2.5 2.5 2.5 2.5 102.5]; - [dur modDur] = cfdur( cf, 0.025 ); - errVal1 = round(dur*(1e+4))*(1e-4) - 8.9709; - errVal2 = round(modDur*(1e+4))*(1e-4) - 8.7521; - assert( errVal1, 0 ) - assert( errVal2, 0 ) -1 test, 1 passed, 0 known failure, 0 skipped [inst/blsrho.m] >>>>> /build/reproducible-path/octave-financial-0.5.3/inst/blsrho.m ***** test @@ -3376,6 +3331,25 @@ ***** error blsrho (1, 2, 3) ***** error blsrho (1, 2, 3, 4) 6 tests, 6 passed, 0 known failure, 0 skipped +[inst/llow.m] +>>>>> /build/reproducible-path/octave-financial-0.5.3/inst/llow.m +***** shared c, l + c = [22.44 22.61 22.67 22.88 23.36 23.23 23.08 22.86 23.17 23.69 23.77 23.84 24.32 24.8 24.16 24.1 23.37 23.61 23.21 25]; + l = [22.44 22.44 22.44 22.44 22.44 22.44 22.44 22.44 22.44 22.44 22.44 22.44 22.44 22.44 22.61 22.67 22.86 22.86 22.86 22.86]; +***** assert(llow(c), l) +***** assert(llow(c'), l') +2 tests, 2 passed, 0 known failure, 0 skipped +[inst/fbusdate.m] +>>>>> /build/reproducible-path/octave-financial-0.5.3/inst/fbusdate.m +***** assert(fbusdate(2008,2), datenum(2008,2,1)) +***** assert(fbusdate(2008,1), datenum(2008,1,2)) +***** assert(fbusdate(2008,3), datenum(2008,3,3)) +3 tests, 3 passed, 0 known failure, 0 skipped +[inst/month.m] +>>>>> /build/reproducible-path/octave-financial-0.5.3/inst/month.m +***** assert (nthargout (1:2, @month, 523383), {12 "Dec"}); +***** assert (nthargout (1:2, @month, "12-02-34", "mm-dd-yy"), {12 "Dec"}); +2 tests, 2 passed, 0 known failure, 0 skipped [inst/blsimpv.m] >>>>> /build/reproducible-path/octave-financial-0.5.3/inst/blsimpv.m ***** assert (blsimpv (100, 100, 0.04, 1, [9.9251 6.0040], 1, 0, 1e-6, [1 0]), [0.2 0.2], 1e-4) @@ -3386,38 +3360,121 @@ ***** error blsimpv (1, 2, 3, 4) ***** error blsimpv (1, 2, 3, 4, 5, 6, 7, 8, 2) 7 tests, 7 passed, 0 known failure, 0 skipped -[inst/posvolidx.m] ->>>>> /build/reproducible-path/octave-financial-0.5.3/inst/posvolidx.m -***** shared c, v, pvia, pvib +[inst/bolling.m] +>>>>> /build/reproducible-path/octave-financial-0.5.3/inst/bolling.m +***** error bolling () +***** error bolling (1) +***** error bolling (1, 2) +***** error bolling ("invalid", "type") +4 tests, 4 passed, 0 known failure, 0 skipped +[inst/negvolidx.m] +>>>>> /build/reproducible-path/octave-financial-0.5.3/inst/negvolidx.m +***** shared c, v, nvia, nvib c = [22.44 22.61 22.67 22.88 23.36 23.23 23.08 22.86 23.17 23.69 23.77 23.84 24.32 24.8 24.16 24.1 23.37 23.61 23.21]; v = [10 12 23 25 34 12 32 15 15 34 54 12 86 45 32 76 89 13 28]; - pvia = [100 100.7575758 101.0249554 101.9607843 104.0998217 104.0998217 103.4276318 103.4276318 103.4276318 105.7488389 106.1059477 106.1059477 108.242309 108.242309 108.242309 107.9734953 104.7029289 104.7029289 102.9290546]'; - pvib = [5 5.037878788 5.051247772 5.098039216 5.204991087 5.204991087 5.171381588 5.171381588 5.171381588 5.287441943 5.305297383 5.305297383 5.412115451 5.412115451 5.412115451 5.398674767 5.235146444 5.235146444 5.14645273]'; -***** assert(posvolidx(c, v), pvia, 1e-5) -***** assert(posvolidx([c' v']), pvia, 1e-5) -***** assert(posvolidx(c, v, 5), pvib, 1e-5) -***** assert(posvolidx([c' v'], 5), pvib, 1e-5) + nvia = [100 100 100 100 100 99.44349315 99.44349315 98.49559157 98.49559157 98.49559157 98.49559157 98.78565011 98.78565011 100.7353669 98.13574451 98.13574451 98.13574451 99.14355704 99.14355704]'; + nvib = [5 5 5 5 5 4.972174658 4.972174658 4.924779578 4.924779578 4.924779578 4.924779578 4.939282505 4.939282505 5.036768344 4.906787226 4.906787226 4.906787226 4.957177852 4.957177852]'; +***** assert(negvolidx(c, v), nvia, 1e-5) +***** assert(negvolidx([c' v']), nvia, 1e-5) +***** assert(negvolidx(c, v, 5), nvib, 1e-5) +***** assert(negvolidx([c' v'], 5), nvib, 1e-5) 4 tests, 4 passed, 0 known failure, 0 skipped -[inst/eomdate.m] ->>>>> /build/reproducible-path/octave-financial-0.5.3/inst/eomdate.m -***** assert(eomdate(2008, 2), datenum(2008, 2, 29)) -***** assert(eomdate(2007, 2), datenum(2007, 2, 28)) -***** assert(eomdate([2008 2007], [3 4]), [datenum(2008, 3, 31) datenum(2007, 4, 30)]) -***** assert(eomdate([2008;2007], [3;4]), [datenum(2008, 3, 31);datenum(2007, 4, 30)]) +[inst/effrr.m] +>>>>> /build/reproducible-path/octave-financial-0.5.3/inst/effrr.m +***** assert (effrr (0.09, 12), 0.0938, 0.00005) +1 test, 1 passed, 0 known failure, 0 skipped +[inst/isbusday.m] +>>>>> /build/reproducible-path/octave-financial-0.5.3/inst/isbusday.m +***** assert(isbusday(datenum(2008,1,2)), true()) +***** assert(isbusday(datenum(2008,1,1)), false()) +***** assert(isbusday(datenum(2008,1,1), []), false()) +***** assert(isbusday(datenum(2008,2,2)), false()) +***** assert(isbusday(datenum(2008,1,2), datenum(2008,1,2)), false()) +***** assert(isbusday(datenum(2008,1,2), [], zeros(1,7)), true()) +***** assert(isbusday(datenum(2008,1,2), [], ones(1,7)), false()) +***** assert(isbusday([datenum(2008,1,2) datenum(2008,2,2)]), [true() false()]) +***** assert(isbusday([datenum(2008,1,2);datenum(2008,2,2)]), [true();false()]) +9 tests, 9 passed, 0 known failure, 0 skipped +[inst/opprofit.m] +>>>>> /build/reproducible-path/octave-financial-0.5.3/inst/opprofit.m +***** assert (opprofit (100, 90, 4, 0, 0), 6) +***** assert (opprofit (80:20:120, 90, 4, 0, 0), [-4 6 26]) +***** assert (opprofit (80:20:120, 80:20:120, 0, 0, 0), [0 0 0]) +***** assert (opprofit (100, 90, 4, [0 0 1 1], [0 1 0 1]), [6 -4 -6 4]) +***** error opprofit () +***** error opprofit (1) +***** error opprofit (1, 2) +***** error opprofit (1, 2, 3) +***** error opprofit (1, 2, 3, 4) +***** error opprofit (1, 2, 3, 4, 0) +***** error opprofit (1, 2, 3, 0, 5) +11 tests, 11 passed, 0 known failure, 0 skipped +[inst/m2xdate.m] +>>>>> /build/reproducible-path/octave-financial-0.5.3/inst/m2xdate.m +***** assert(m2xdate(datenum(2008, 1, 1)), 39448) +***** assert(m2xdate(datenum(2007:2008, 1, 1)), [39083 39448]) +***** assert(m2xdate(datenum(1900, 1, 1)), 2) +***** assert(m2xdate(datenum(1900, 1, 1), 0, "ExcelBug"), 1) +***** assert(m2xdate(datenum(1904, 1, 1), 1), 0) +5 tests, 5 passed, 0 known failure, 0 skipped +[inst/daysact.m] +>>>>> /build/reproducible-path/octave-financial-0.5.3/inst/daysact.m +***** assert (daysact ("01-Jan-2007", ["10-Jan-2007"; "23-Feb-2007"; "23-Jul-2007"]), [9;53;203]) +***** assert (daysact ("7-sep-2002", "25-dec-2002"), 109) +2 tests, 2 passed, 0 known failure, 0 skipped +[inst/@sde/sde.m] +>>>>> /build/reproducible-path/octave-financial-0.5.3/inst/@sde/sde.m +***** error sde () +***** error sde (1) +***** error sde (1, 2) +***** error sde (1, 2, "OptionName") 4 tests, 4 passed, 0 known failure, 0 skipped -[inst/binprice.m] ->>>>> /build/reproducible-path/octave-financial-0.5.3/inst/binprice.m +[inst/@sde/simulate.m] +>>>>> /build/reproducible-path/octave-financial-0.5.3/inst/@sde/simulate.m +***** error simulate () +***** error simulate (1) +2 tests, 2 passed, 0 known failure, 0 skipped +[inst/@sde/simByEuler.m] +>>>>> /build/reproducible-path/octave-financial-0.5.3/inst/@sde/simByEuler.m ***** test - [AssetPrice, OptionValue] = binprice (100, 100, 0.04, 1, 0.25, 0.2, 0, 0.01); - assert (OptionValue(1:2,1:2), [6.4701 2.2159; 0 11.0776], 1e-4) -***** error binprice () -***** error binprice (1) -***** error binprice (1, 2) -***** error binprice (1, 2, 3) -***** error binprice (1, 2, 3, 4) -***** error binprice (1, 2, 3, 4, 5) -***** error binprice (1, 2, 3, 4, 5, 6) -8 tests, 8 passed, 0 known failure, 0 skipped + Asset1Price = 40.; Asset2Price = 40.; Strike = 40.; RiskFreeRate = 0.05; Volatility1 = 0.5; Volatility2 = 0.5; ExpiryTime = 0.25; Correlation = 0.3; + Simulations = 1e5; Timesteps = 10; + Drift = drift ([0.;0.], [RiskFreeRate 0.;0. RiskFreeRate]); + Diffusion = diffusion ([1.;1.], [Volatility1 0.;0. Volatility2]); + SDE = sde (Drift, Diffusion, "StartState", [Asset1Price;Asset2Price], "Correlation", [1 Correlation;Correlation 1]); + [Paths, ~, ~] = simulate (SDE, 1, "DeltaTime", ExpiryTime, "NTRIALS", Simulations, "NSTEPS", Timesteps, "Antithetic", true); + BasketCallApproximate = exp (-RiskFreeRate * ExpiryTime) * mean (max (max (Paths(end, :, :)) - Strike, 0.)); + BasketCall = 6.8477; ## Computed using formula from Stulz (1982) + assert (BasketCallApproximate, BasketCall, 1e-1); +***** test + AssetPrice = 100.; RiskFreeRate = 0.04; Dividends = 0.01; Volatility = 0.2; ExpiryTime = 1.; + Simulations = 1e6; Timesteps = 10; + Drift = drift (0., RiskFreeRate - Dividends); + Diffusion = diffusion (1., Volatility); + SDE = sde (Drift, Diffusion, "StartState", AssetPrice); + [Paths, ~, ~] = simByEuler (SDE, 1, "DeltaTime", ExpiryTime, "NTRIALS", Simulations, "NSTEPS", Timesteps, "Antithetic", true); + AssetExpiryMean = AssetPrice * exp ((RiskFreeRate - Dividends) * ExpiryTime); + AssetExpiryMeanApproximate = mean (Paths(end, 1, :)); + AssetExpiryVariance = AssetPrice * AssetPrice * exp (2 * (RiskFreeRate - Dividends) * ExpiryTime) * (exp (Volatility * Volatility * ExpiryTime) - 1); + ConfidenceInterval = 0.01; + tol = norminv(1 - ConfidenceInterval/2) * sqrt (AssetExpiryVariance / Simulations); + assert (AssetExpiryMeanApproximate, AssetExpiryMean, tol) + Strike = 100.; + CallApproximate = exp (-RiskFreeRate * ExpiryTime) * mean (max (Paths(end, 1, :) - Strike, 0.)); + [Call, ~] = blsprice (AssetPrice, Strike, RiskFreeRate, ExpiryTime, Volatility, Dividends); + assert (CallApproximate, Call, 1e-1); +***** error simByEuler() +***** error simByEuler(1) +***** error simByEuler("invalid type", 1) +5 tests, 5 passed, 0 known failure, 0 skipped +[inst/hhigh.m] +>>>>> /build/reproducible-path/octave-financial-0.5.3/inst/hhigh.m +***** shared c, h + c = [22.44 22.61 22.67 22.88 23.36 23.23 23.08 22.86 23.17 23.69 23.77 23.84 24.32 24.8 24.16 24.1 23.37 23.61 23.21 25]; + h = [22.44 22.61 22.67 22.88 23.36 23.36 23.36 23.36 23.36 23.69 23.77 23.84 24.32 24.8 24.8 24.8 24.8 24.8 24.8 25]; +***** assert(hhigh(c), h) +***** assert(hhigh(c'), h') +2 tests, 2 passed, 0 known failure, 0 skipped [inst/months.m] >>>>> /build/reproducible-path/octave-financial-0.5.3/inst/months.m ***** assert(months('may 31 2004', 'jun 30 2004'), 1) @@ -3429,32 +3486,11 @@ ***** assert(months('jun 30 2005', 'june 30 2006'), 12) ***** assert(months('jun 30 2005', 'june 29 2006'), 11) 8 tests, 8 passed, 0 known failure, 0 skipped -[inst/nomrr.m] ->>>>> /build/reproducible-path/octave-financial-0.5.3/inst/nomrr.m -***** assert (nomrr (0.0938, 12), 0.09, 0.00005) -1 test, 1 passed, 0 known failure, 0 skipped -[inst/lbusdate.m] ->>>>> /build/reproducible-path/octave-financial-0.5.3/inst/lbusdate.m -***** assert(lbusdate(2008,4), datenum(2008,4,30)) -***** assert(lbusdate(2008,5), datenum(2008,5,30)) +[inst/minute.m] +>>>>> /build/reproducible-path/octave-financial-0.5.3/inst/minute.m +***** assert (minute (451482.906781456), 45) +***** assert (minute ("1967-09-21 11:56:34", "yyyy-mm-dd HH:MM:SS"), 56) 2 tests, 2 passed, 0 known failure, 0 skipped -[inst/bolling.m] ->>>>> /build/reproducible-path/octave-financial-0.5.3/inst/bolling.m -***** error bolling () -***** error bolling (1) -***** error bolling (1, 2) -***** error bolling ("invalid", "type") -4 tests, 4 passed, 0 known failure, 0 skipped -[inst/blkimpv.m] ->>>>> /build/reproducible-path/octave-financial-0.5.3/inst/blkimpv.m -***** assert (blkimpv (90, 100, 0.04, 1, [3.4484 13.0563], 1, 1e-6, [1 0]), [0.2 0.2], 1e-4) -***** error blkimpv () -***** error blkimpv (1) -***** error blkimpv (1, 2) -***** error blkimpv (1, 2, 3) -***** error blkimpv (1, 2, 3, 4) -***** error blkimpv (1, 2, 3, 4, 5, 6, 7, 8, 2) -7 tests, 7 passed, 0 known failure, 0 skipped Checking C++ files ... Done running the unit tests. Summary: 292 tests, 292 passed, 0 known failures, 0 skipped @@ -3483,12 +3519,14 @@ dpkg-buildpackage: info: binary-only upload (no source included) dpkg-genchanges: info: not including original source code in upload I: copying local configuration +I: user script /srv/workspace/pbuilder/32151/tmp/hooks/B01_cleanup starting +I: user script /srv/workspace/pbuilder/32151/tmp/hooks/B01_cleanup finished I: unmounting dev/ptmx filesystem I: unmounting dev/pts filesystem I: unmounting dev/shm filesystem I: unmounting proc filesystem I: unmounting sys filesystem I: cleaning the build env -I: removing directory /srv/workspace/pbuilder/13705 and its subdirectories -I: Current time: Fri May 31 07:29:37 -12 2024 -I: pbuilder-time-stamp: 1717183777 +I: removing directory /srv/workspace/pbuilder/32151 and its subdirectories +I: Current time: Sat Jun 1 09:34:17 +14 2024 +I: pbuilder-time-stamp: 1717184057