Diff of the two buildlogs: -- --- b1/build.log 2025-09-11 13:56:45.799957479 +0000 +++ b2/build.log 2025-09-11 14:02:57.028416760 +0000 @@ -1,6 +1,6 @@ I: pbuilder: network access will be disabled during build -I: Current time: Thu Sep 11 01:51:50 -12 2025 -I: pbuilder-time-stamp: 1757598710 +I: Current time: Thu Oct 15 10:19:48 +14 2026 +I: pbuilder-time-stamp: 1792009188 I: Building the build Environment I: extracting base tarball [/var/cache/pbuilder/forky-reproducible-base.tgz] I: copying local configuration @@ -22,52 +22,84 @@ dpkg-source: info: unpacking octave-financial_0.5.4-2.debian.tar.xz I: using fakeroot in build. I: Installing the build-deps -I: user script /srv/workspace/pbuilder/2104683/tmp/hooks/D02_print_environment starting +I: user script /srv/workspace/pbuilder/2462439/tmp/hooks/D01_modify_environment starting +debug: Running on infom02-amd64. +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 Oct 14 20:20 /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/2462439/tmp/hooks/D01_modify_environment finished +I: user script /srv/workspace/pbuilder/2462439/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='amd64' - DEBIAN_FRONTEND='noninteractive' - DEB_BUILD_OPTIONS='buildinfo=+all reproducible=+all parallel=12 ' - DISTRIBUTION='forky' - HOME='/root' - HOST_ARCH='amd64' + 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]="3" [2]="3" [3]="1" [4]="release" [5]="x86_64-pc-linux-gnu") + BASH_VERSION='5.3.3(1)-release' + BUILDDIR=/build/reproducible-path + BUILDUSERGECOS='second user,second room,second work-phone,second home-phone,second other' + BUILDUSERNAME=pbuilder2 + BUILD_ARCH=amd64 + DEBIAN_FRONTEND=noninteractive + DEB_BUILD_OPTIONS='buildinfo=+all reproducible=+all parallel=16 ' + DIRSTACK=() + DISTRIBUTION=forky + EUID=0 + FUNCNAME=([0]="Echo" [1]="main") + GROUPS=() + HOME=/root + HOSTNAME=i-capture-the-hostname + HOSTTYPE=x86_64 + HOST_ARCH=amd64 IFS=' ' - INVOCATION_ID='489809401ffb4ccebc9d9f4f461c99c1' - 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='2104683' - PS1='# ' - PS2='> ' + INVOCATION_ID=31c98d63fbe04cd9b4e91229cb4160b5 + LANG=C + LANGUAGE=et_EE:et + LC_ALL=C + MACHTYPE=x86_64-pc-linux-gnu + MAIL=/var/mail/root + OPTERR=1 + OPTIND=1 + OSTYPE=linux-gnu + 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=2462439 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.fecE7JHU/pbuilderrc_1iq2 --distribution forky --hookdir /etc/pbuilder/first-build-hooks --debbuildopts -b --basetgz /var/cache/pbuilder/forky-reproducible-base.tgz --buildresult /srv/reproducible-results/rbuild-debian/r-b-build.fecE7JHU/b1 --logfile b1/build.log octave-financial_0.5.4-2.dsc' - SUDO_GID='109' - SUDO_HOME='/var/lib/jenkins' - SUDO_UID='104' - SUDO_USER='jenkins' - TERM='unknown' - TZ='/usr/share/zoneinfo/Etc/GMT+12' - USER='root' - _='/usr/bin/systemd-run' + 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.fecE7JHU/pbuilderrc_Bce3 --distribution forky --hookdir /etc/pbuilder/rebuild-hooks --debbuildopts -b --basetgz /var/cache/pbuilder/forky-reproducible-base.tgz --buildresult /srv/reproducible-results/rbuild-debian/r-b-build.fecE7JHU/b2 --logfile b2/build.log octave-financial_0.5.4-2.dsc' + SUDO_GID=109 + SUDO_HOME=/var/lib/jenkins + SUDO_UID=104 + SUDO_USER=jenkins + TERM=unknown + TZ=/usr/share/zoneinfo/Etc/GMT-14 + UID=0 + USER=root + _='I: set' I: uname -a - Linux infom01-amd64 6.12.43+deb13-cloud-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.12.43-1 (2025-08-27) x86_64 GNU/Linux + Linux i-capture-the-hostname 6.12.43+deb13-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.12.43-1 (2025-08-27) x86_64 GNU/Linux I: ls -l /bin - lrwxrwxrwx 1 root root 7 Aug 10 12:30 /bin -> usr/bin -I: user script /srv/workspace/pbuilder/2104683/tmp/hooks/D02_print_environment finished + lrwxrwxrwx 1 root root 7 Aug 10 2025 /bin -> usr/bin +I: user script /srv/workspace/pbuilder/2462439/tmp/hooks/D02_print_environment finished -> Attempting to satisfy build-dependencies -> Creating pbuilder-satisfydepends-dummy package Package: pbuilder-satisfydepends-dummy @@ -645,7 +677,7 @@ Get: 534 http://deb.debian.org/debian forky/main amd64 octave-io amd64 2.7.0-2 [234 kB] Get: 535 http://deb.debian.org/debian forky/main amd64 octave-statistics-common all 1.7.5-2 [907 kB] Get: 536 http://deb.debian.org/debian forky/main amd64 octave-statistics amd64 1.7.5-2 [141 kB] -Fetched 283 MB in 5s (54.4 MB/s) +Fetched 283 MB in 12s (23.2 MB/s) Preconfiguring packages ... Selecting previously unselected package libexpat1:amd64. (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 ... 21054 files and directories currently installed.) @@ -2847,7 +2879,11 @@ fakeroot is already the newest version (1.37.1.2-1). 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. I: Building the package -I: Running cd /build/reproducible-path/octave-financial-0.5.4/ && 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.4-2_source.changes +I: user script /srv/workspace/pbuilder/2462439/tmp/hooks/A99_set_merged_usr starting +Not re-configuring usrmerge for forky +I: user script /srv/workspace/pbuilder/2462439/tmp/hooks/A99_set_merged_usr finished +hostname: Name or service not known +I: Running cd /build/reproducible-path/octave-financial-0.5.4/ && 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.4-2_source.changes dpkg-buildpackage: info: source package octave-financial dpkg-buildpackage: info: source version 0.5.4-2 dpkg-buildpackage: info: source distribution unstable @@ -2886,105 +2922,22 @@ Checking package... Run the unit tests... Checking m files ... -[inst/rsindex.m] ->>>>> /build/reproducible-path/octave-financial-0.5.4/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/weeknum.m] ->>>>> /build/reproducible-path/octave-financial-0.5.4/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/daysact.m] ->>>>> /build/reproducible-path/octave-financial-0.5.4/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/month.m] ->>>>> /build/reproducible-path/octave-financial-0.5.4/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/nomrr.m] ->>>>> /build/reproducible-path/octave-financial-0.5.4/inst/nomrr.m -***** assert (nomrr (0.0938, 12), 0.09, 0.00005) -1 test, 1 passed, 0 known failure, 0 skipped -[inst/blkprice.m] ->>>>> /build/reproducible-path/octave-financial-0.5.4/inst/blkprice.m -***** test - [Call, Put] = blkprice (90:10:110, 100, 0.04, 1, 0.2); - assert (Call, [3.4484 7.6532 13.7316], 1e-4) - assert (Put, [13.0563 7.6532 4.1237], 1e-4) -***** error blkprice () -***** error blkprice (1) -***** error blkprice (1, 2) -***** error blkprice (1, 2, 3) -***** error blkprice (1, 2, 3, 4) -6 tests, 6 passed, 0 known failure, 0 skipped -[inst/movavg.m] ->>>>> /build/reproducible-path/octave-financial-0.5.4/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]) +[inst/blslambda.m] +>>>>> /build/reproducible-path/octave-financial-0.5.4/inst/blslambda.m ***** 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/blsrho.m] ->>>>> /build/reproducible-path/octave-financial-0.5.4/inst/blsrho.m + [CallEl, PutEl] = blslambda (90:10:110, 100, 0.04, 1, 0.2); + assert (CallEl, [7.7536 6.2258 5.0647], 1e-4) + assert (PutEl, [-4.8955 -6.3639 -7.8941], 1e-4) ***** test - [CallRho, PutRho] = blsrho (90:10:110, 100, 0.04, 1, 0.2, 0.01); - assert (CallRho, [30.4331 49.9552 67.3271], 1e-4) - assert (PutRho, [-65.6458 -46.1238 -28.7519], 1e-4) -***** error blsrho () -***** error blsrho (1) -***** error blsrho (1, 2) -***** error blsrho (1, 2, 3) -***** error blsrho (1, 2, 3, 4) -6 tests, 6 passed, 0 known failure, 0 skipped -[inst/effrr.m] ->>>>> /build/reproducible-path/octave-financial-0.5.4/inst/effrr.m -***** assert (effrr (0.09, 12), 0.0938, 0.00005) -1 test, 1 passed, 0 known failure, 0 skipped + [CallEl, PutEl] = blslambda (90:10:110, 100, 0.04, 1, 0.2, 0.01); + assert (CallEl, [7.9108 6.3601 5.1762], 1e-4) + assert (PutEl, [-4.7695 -6.2139 -7.7255], 1e-4) +***** error blslambda () +***** error blslambda (1) +***** error blslambda (1, 2) +***** error blslambda (1, 2, 3) +***** error blslambda (1, 2, 3, 4) +7 tests, 7 passed, 0 known failure, 0 skipped [inst/bolling.m] >>>>> /build/reproducible-path/octave-financial-0.5.4/inst/bolling.m ***** error bolling () @@ -2992,6 +2945,32 @@ ***** error bolling (1, 2) ***** error bolling ("invalid", "type") 4 tests, 4 passed, 0 known failure, 0 skipped +[inst/month.m] +>>>>> /build/reproducible-path/octave-financial-0.5.4/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/day.m] +>>>>> /build/reproducible-path/octave-financial-0.5.4/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/isbusday.m] +>>>>> /build/reproducible-path/octave-financial-0.5.4/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/mirr.m] +>>>>> /build/reproducible-path/octave-financial-0.5.4/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/depstln.m] >>>>> /build/reproducible-path/octave-financial-0.5.4/inst/depstln.m ***** assert (depstln (13000, 1000, 10), 1200) @@ -3000,20 +2979,59 @@ ***** assert (depstln (2000, 0, 1), 2000) ***** assert (depstln (234, 233, 10), 0.1) 5 tests, 5 passed, 0 known failure, 0 skipped -[inst/opprofit.m] ->>>>> /build/reproducible-path/octave-financial-0.5.4/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/blsvega.m] +>>>>> /build/reproducible-path/octave-financial-0.5.4/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/m2xdate.m] +>>>>> /build/reproducible-path/octave-financial-0.5.4/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/yeardays.m] +>>>>> /build/reproducible-path/octave-financial-0.5.4/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/blsimpv.m] +>>>>> /build/reproducible-path/octave-financial-0.5.4/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) +***** error blsimpv () +***** error blsimpv (1) +***** error blsimpv (1, 2) +***** error blsimpv (1, 2, 3) +***** 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/rsindex.m] +>>>>> /build/reproducible-path/octave-financial-0.5.4/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/busdays.m] >>>>> /build/reproducible-path/octave-financial-0.5.4/inst/busdays.m ***** assert (busdays (datenum (2008, 1, 1), datenum (2008, 1, 12)), datenum (2008, 1, [2;3;4;7;8;9;10;11])) @@ -3027,91 +3045,26 @@ ***** 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/datefind.m] ->>>>> /build/reproducible-path/octave-financial-0.5.4/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/easter.m] ->>>>> /build/reproducible-path/octave-financial-0.5.4/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/holidays.m] ->>>>> /build/reproducible-path/octave-financial-0.5.4/inst/holidays.m -***** assert(holidays("jan 1 1999", "jan 1 1998"), zeros(0,1)); # return empty when startdate is after enddate -***** assert(holidays("mar 5 2008", "mar 8 2008"), zeros(0,1)); -***** assert(holidays(datenum(2008,3,5), datenum(2008,3,5)), zeros(0,1)); -***** assert(holidays(datenum(2008,1,1), datenum(2008,1,1)), datenum(2008,1,1)); -***** assert (holidays ("jan 1 2010", "mar 1 2010"), [734139; 734156; 734184]); -***** assert (holidays (datenum (2010, 1, 1), datenum (2010, 3, 1)), [734139; 734156; 734184]); -***** assert (holidays ("dec 29 2004", "jan 2 2005"), zeros (0, 1)); -***** 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/macd.m] ->>>>> /build/reproducible-path/octave-financial-0.5.4/inst/macd.m -***** shared d, m, n, a, b - d = [46.84 47.07 45.92 47.24 47.64 47.3 48.22 46.98 46.41 44.78 46.29 47.99 47.47 49.19 48.85 48.13 49.13 50.91 51.01 50.48 50.88 51.2 50.85 50.16 48.44 49.1 47.67 45.43 46.47 48.76 50.08 50.74 51.91 51.11 49.36 48.96 49.28 49.02 48.24 49.71]; - m = [NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 1.10928 0.87603 0.50460 0.29081 0.30268 0.41383 0.54884 0.74170 0.82053 0.73334 0.62476 0.55810 0.47877 0.34894 0.36051]; - n = [NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.66262 0.67677 0.66636 0.64471 0.61152 0.55901 0.51931]; - [a, b] = macd (d); -***** assert([a, b], [m, n], 0.0001) - [a, b] = macd (d, 1); -***** assert([a, b], [m, n], 0.0001) - [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.4/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/thirdwednesday.m] ->>>>> /build/reproducible-path/octave-financial-0.5.4/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') +[inst/daysact.m] +>>>>> /build/reproducible-path/octave-financial-0.5.4/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/x2mdate.m] ->>>>> /build/reproducible-path/octave-financial-0.5.4/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/fbusdate.m] ->>>>> /build/reproducible-path/octave-financial-0.5.4/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/nweekdate.m] +>>>>> /build/reproducible-path/octave-financial-0.5.4/inst/nweekdate.m +***** assert(nweekdate(1, 4, 2008, 1), datenum(2008, 1, 2)) +***** assert(nweekdate(2, 4, 2008, 1), datenum(2008, 1, 9)) +***** assert(nweekdate(3, 4, 2008, 1), datenum(2008, 1, 16)) +***** assert(nweekdate(4, 4, 2008, 1), datenum(2008, 1, 23)) +***** assert(nweekdate(5, 4, 2008, 1), datenum(2008, 1, 30)) +***** assert(nweekdate(6, 4, 2008, 1), 0) +***** assert(nweekdate(5, 6, 2008, 1), 0) +***** assert(nweekdate(1, 4, 2008, 1, 2), datenum(2008, 1, 9)) +***** assert(nweekdate(5, 4, 2008, 1, 6), 0) +***** assert(nweekdate(1:6, 4, 2008, 1, 6), [datenum(2008, 1, 2:7:23), 0, 0]) +***** 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/onbalvol.m] >>>>> /build/reproducible-path/octave-financial-0.5.4/inst/onbalvol.m ***** shared c, v, obv @@ -3121,11 +3074,55 @@ ***** assert(onbalvol(c, v), obv) ***** assert(onbalvol([c' v']), obv) 2 tests, 2 passed, 0 known failure, 0 skipped -[inst/hour.m] ->>>>> /build/reproducible-path/octave-financial-0.5.4/inst/hour.m -***** assert (hour (451482.906781456), 21) -***** assert (hour ("1967-09-21 11:56:34", "yyyy-mm-dd HH:MM:SS"), 11) +[inst/x2mdate.m] +>>>>> /build/reproducible-path/octave-financial-0.5.4/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/cir.m] +>>>>> /build/reproducible-path/octave-financial-0.5.4/inst/cir.m +***** test + InitialInterestRate = 0.03; Speed = 1.; MeanInterestRate = 0.04; Volatility = 0.3; ExpiryTime = 1.; + Simulations = 1e4; Timesteps = 100; + SDE = cir (Speed, MeanInterestRate, Volatility, "StartState", InitialInterestRate); + [Paths, ~, ~] = simByEuler (SDE, Timesteps, "DeltaTime", ExpiryTime / Timesteps, "NTRIALS", Simulations, "NSTEPS", 1, "Antithetic", true, "Processes", @(t, X) max(X, 0)); + BondApproximate = mean (exp (-(sum (Paths) - InitialInterestRate) * ExpiryTime / Timesteps)); + h = sqrt (Speed * Speed + 2 * Volatility * Volatility); + d = (2 * h + (Speed + h) * (exp (ExpiryTime * h) - 1)); + A = ( (2 * h * exp ((Speed + h) * ExpiryTime / 2)) / d )^((2 * Speed * MeanInterestRate) / (Volatility * Volatility)); + B = 2 * (exp (ExpiryTime * h) - 1) / d; + Bond = A * exp (-B * InitialInterestRate); + assert (BondApproximate, Bond, 1e-3); +1 test, 1 passed, 0 known failure, 0 skipped +[inst/llow.m] +>>>>> /build/reproducible-path/octave-financial-0.5.4/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/nomrr.m] +>>>>> /build/reproducible-path/octave-financial-0.5.4/inst/nomrr.m +***** assert (nomrr (0.0938, 12), 0.09, 0.00005) +1 test, 1 passed, 0 known failure, 0 skipped +[inst/opprofit.m] +>>>>> /build/reproducible-path/octave-financial-0.5.4/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/posvolidx.m] >>>>> /build/reproducible-path/octave-financial-0.5.4/inst/posvolidx.m ***** shared c, v, pvia, pvib @@ -3138,22 +3135,189 @@ ***** 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/blslambda.m] ->>>>> /build/reproducible-path/octave-financial-0.5.4/inst/blslambda.m +[inst/macd.m] +>>>>> /build/reproducible-path/octave-financial-0.5.4/inst/macd.m +***** shared d, m, n, a, b + d = [46.84 47.07 45.92 47.24 47.64 47.3 48.22 46.98 46.41 44.78 46.29 47.99 47.47 49.19 48.85 48.13 49.13 50.91 51.01 50.48 50.88 51.2 50.85 50.16 48.44 49.1 47.67 45.43 46.47 48.76 50.08 50.74 51.91 51.11 49.36 48.96 49.28 49.02 48.24 49.71]; + m = [NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 1.10928 0.87603 0.50460 0.29081 0.30268 0.41383 0.54884 0.74170 0.82053 0.73334 0.62476 0.55810 0.47877 0.34894 0.36051]; + n = [NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.66262 0.67677 0.66636 0.64471 0.61152 0.55901 0.51931]; + [a, b] = macd (d); +***** assert([a, b], [m, n], 0.0001) + [a, b] = macd (d, 1); +***** assert([a, b], [m, n], 0.0001) + [a, b] = macd (d', 2); +***** assert([a, b], [m, n], 0.0001) +3 tests, 3 passed, 0 known failure, 0 skipped +[inst/cfconv.m] +>>>>> /build/reproducible-path/octave-financial-0.5.4/inst/cfconv.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; + cfConv = cfconv( cf, yield ); + %-------------------------------------------------- + % Input cash flow and yield, output convexity ***** test - [CallEl, PutEl] = blslambda (90:10:110, 100, 0.04, 1, 0.2); - assert (CallEl, [7.7536 6.2258 5.0647], 1e-4) - assert (PutEl, [-4.8955 -6.3639 -7.8941], 1e-4) + cf = [2.5 2.5 2.5 2.5 2.5 2.5 2.5 2.5 2.5 102.5]; + cfConv = cfconv( cf, 0.025 ); + errVal = round(cfConv*(1e+4))*(1e-4) - 90.4493; + errVal = round(errVal*(1e+10)); + assert(errVal, 0) +1 test, 1 passed, 0 known failure, 0 skipped +[inst/cfdur.m] +>>>>> /build/reproducible-path/octave-financial-0.5.4/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 - [CallEl, PutEl] = blslambda (90:10:110, 100, 0.04, 1, 0.2, 0.01); - assert (CallEl, [7.9108 6.3601 5.1762], 1e-4) - assert (PutEl, [-4.7695 -6.2139 -7.7255], 1e-4) -***** error blslambda () -***** error blslambda (1) -***** error blslambda (1, 2) -***** error blslambda (1, 2, 3) -***** error blslambda (1, 2, 3, 4) + 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/blstheta.m] +>>>>> /build/reproducible-path/octave-financial-0.5.4/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/months.m] +>>>>> /build/reproducible-path/octave-financial-0.5.4/inst/months.m +***** assert(months('may 31 2004', 'jun 30 2004'), 1) +***** assert(months({'may 31 2004' 'may 30 2004'}, 'jun 30 2004'), [1;1]) +***** assert(months('may 31 2004', 'jun 30 2004', 1), 1) +***** assert(months({'may 31 2004' 'may 30 2004'}, 'jun 30 2004', 1), [1;1]) +***** assert(months('may 31 2004', 'jun 30 2004', 0), 0) +***** assert(months({'may 31 2004' 'may 30 2004'}, 'jun 30 2004', 0), [0;1]) +***** 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/blsrho.m] +>>>>> /build/reproducible-path/octave-financial-0.5.4/inst/blsrho.m +***** test + [CallRho, PutRho] = blsrho (90:10:110, 100, 0.04, 1, 0.2, 0.01); + assert (CallRho, [30.4331 49.9552 67.3271], 1e-4) + assert (PutRho, [-65.6458 -46.1238 -28.7519], 1e-4) +***** error blsrho () +***** error blsrho (1) +***** error blsrho (1, 2) +***** error blsrho (1, 2, 3) +***** error blsrho (1, 2, 3, 4) +6 tests, 6 passed, 0 known failure, 0 skipped +[inst/blkimpv.m] +>>>>> /build/reproducible-path/octave-financial-0.5.4/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/blsgamma.m] +>>>>> /build/reproducible-path/octave-financial-0.5.4/inst/blsgamma.m +***** error blsgamma () +***** error blsgamma (1) +***** error blsgamma (1, 2) +***** error blsgamma (1, 2, 3) +***** error blsgamma (1, 2, 3, 4) +5 tests, 5 passed, 0 known failure, 0 skipped +[inst/blsdelta.m] +>>>>> /build/reproducible-path/octave-financial-0.5.4/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/hour.m] +>>>>> /build/reproducible-path/octave-financial-0.5.4/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/eomdate.m] +>>>>> /build/reproducible-path/octave-financial-0.5.4/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/lbusdate.m] +>>>>> /build/reproducible-path/octave-financial-0.5.4/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/busdate.m] +>>>>> /build/reproducible-path/octave-financial-0.5.4/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/weeknum.m] +>>>>> /build/reproducible-path/octave-financial-0.5.4/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/second.m] +>>>>> /build/reproducible-path/octave-financial-0.5.4/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/gbm.m] >>>>> /build/reproducible-path/octave-financial-0.5.4/inst/gbm.m ***** test @@ -3166,84 +3330,100 @@ [Call, ~] = blsprice (AssetPrice, Strike, RiskFreeRate, ExpiryTime, Volatility, Dividends); assert (CallApproximate, Call, 1e-1); 1 test, 1 passed, 0 known failure, 0 skipped +[inst/taxedrr.m] +>>>>> /build/reproducible-path/octave-financial-0.5.4/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/year.m] +>>>>> /build/reproducible-path/octave-financial-0.5.4/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/minute.m] >>>>> /build/reproducible-path/octave-financial-0.5.4/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/nweekdate.m] ->>>>> /build/reproducible-path/octave-financial-0.5.4/inst/nweekdate.m -***** assert(nweekdate(1, 4, 2008, 1), datenum(2008, 1, 2)) -***** assert(nweekdate(2, 4, 2008, 1), datenum(2008, 1, 9)) -***** assert(nweekdate(3, 4, 2008, 1), datenum(2008, 1, 16)) -***** assert(nweekdate(4, 4, 2008, 1), datenum(2008, 1, 23)) -***** assert(nweekdate(5, 4, 2008, 1), datenum(2008, 1, 30)) -***** assert(nweekdate(6, 4, 2008, 1), 0) -***** assert(nweekdate(5, 6, 2008, 1), 0) -***** assert(nweekdate(1, 4, 2008, 1, 2), datenum(2008, 1, 9)) -***** assert(nweekdate(5, 4, 2008, 1, 6), 0) -***** assert(nweekdate(1:6, 4, 2008, 1, 6), [datenum(2008, 1, 2:7:23), 0, 0]) -***** 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/day.m] ->>>>> /build/reproducible-path/octave-financial-0.5.4/inst/day.m -***** assert (day (523383), 21); -***** assert (day ("12-02-34", "mm-dd-yy"), 2); +[inst/datefind.m] +>>>>> /build/reproducible-path/octave-financial-0.5.4/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/negvolidx.m] ->>>>> /build/reproducible-path/octave-financial-0.5.4/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) -4 tests, 4 passed, 0 known failure, 0 skipped -[inst/cfconv.m] ->>>>> /build/reproducible-path/octave-financial-0.5.4/inst/cfconv.m +[inst/hhigh.m] +>>>>> /build/reproducible-path/octave-financial-0.5.4/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/cov2corr.m] +>>>>> /build/reproducible-path/octave-financial-0.5.4/inst/cov2corr.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; - cfConv = cfconv( cf, yield ); + cov = [ 0.25 -0.5; -0.5 4.0 ]; + [ sigma, corr ] = cov2corr( cov ); %-------------------------------------------------- - % Input cash flow and yield, output convexity + % Input covariance matrix, output standard deviations and correlation + % matrix ***** test - cf = [2.5 2.5 2.5 2.5 2.5 2.5 2.5 2.5 2.5 102.5]; - cfConv = cfconv( cf, 0.025 ); - errVal = round(cfConv*(1e+4))*(1e-4) - 90.4493; - errVal = round(errVal*(1e+10)); - assert(errVal, 0) + cov = [ 0.25 -0.5; -0.5 4.0 ]; + [sigma, corr] = cov2corr( cov ); + 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/taxedrr.m] ->>>>> /build/reproducible-path/octave-financial-0.5.4/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.4/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/second.m] ->>>>> /build/reproducible-path/octave-financial-0.5.4/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/thirdwednesday.m] +>>>>> /build/reproducible-path/octave-financial-0.5.4/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/eomdate.m] ->>>>> /build/reproducible-path/octave-financial-0.5.4/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/pointfig.m] +>>>>> /build/reproducible-path/octave-financial-0.5.4/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/blsprice.m] +>>>>> /build/reproducible-path/octave-financial-0.5.4/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/corr2cov.m] >>>>> /build/reproducible-path/octave-financial-0.5.4/inst/corr2cov.m ***** demo @@ -3259,40 +3439,6 @@ cov = corr2cov( sigma, corr ); assert( cov, [ 0.25 -0.5; -0.5 4.0 ] ) 1 test, 1 passed, 0 known failure, 0 skipped -[inst/lbusdate.m] ->>>>> /build/reproducible-path/octave-financial-0.5.4/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/months.m] ->>>>> /build/reproducible-path/octave-financial-0.5.4/inst/months.m -***** assert(months('may 31 2004', 'jun 30 2004'), 1) -***** assert(months({'may 31 2004' 'may 30 2004'}, 'jun 30 2004'), [1;1]) -***** assert(months('may 31 2004', 'jun 30 2004', 1), 1) -***** assert(months({'may 31 2004' 'may 30 2004'}, 'jun 30 2004', 1), [1;1]) -***** assert(months('may 31 2004', 'jun 30 2004', 0), 0) -***** assert(months({'may 31 2004' 'may 30 2004'}, 'jun 30 2004', 0), [0;1]) -***** 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/binprice.m] ->>>>> /build/reproducible-path/octave-financial-0.5.4/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/@sde/simulate.m] ->>>>> /build/reproducible-path/octave-financial-0.5.4/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.4/inst/@sde/simByEuler.m ***** test @@ -3326,6 +3472,11 @@ ***** error simByEuler(1) ***** error simByEuler("invalid type", 1) 5 tests, 5 passed, 0 known failure, 0 skipped +[inst/@sde/simulate.m] +>>>>> /build/reproducible-path/octave-financial-0.5.4/inst/@sde/simulate.m +***** error simulate () +***** error simulate (1) +2 tests, 2 passed, 0 known failure, 0 skipped [inst/@sde/sde.m] >>>>> /build/reproducible-path/octave-financial-0.5.4/inst/@sde/sde.m ***** error sde () @@ -3333,97 +3484,30 @@ ***** error sde (1, 2) ***** error sde (1, 2, "OptionName") 4 tests, 4 passed, 0 known failure, 0 skipped -[inst/busdate.m] ->>>>> /build/reproducible-path/octave-financial-0.5.4/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/blstheta.m] ->>>>> /build/reproducible-path/octave-financial-0.5.4/inst/blstheta.m +[inst/blkprice.m] +>>>>> /build/reproducible-path/octave-financial-0.5.4/inst/blkprice.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) + [Call, Put] = blkprice (90:10:110, 100, 0.04, 1, 0.2); + assert (Call, [3.4484 7.6532 13.7316], 1e-4) + assert (Put, [13.0563 7.6532 4.1237], 1e-4) +***** error blkprice () +***** error blkprice (1) +***** error blkprice (1, 2) +***** error blkprice (1, 2, 3) +***** error blkprice (1, 2, 3, 4) 6 tests, 6 passed, 0 known failure, 0 skipped -[inst/cfdur.m] ->>>>> /build/reproducible-path/octave-financial-0.5.4/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/cir.m] ->>>>> /build/reproducible-path/octave-financial-0.5.4/inst/cir.m -***** test - InitialInterestRate = 0.03; Speed = 1.; MeanInterestRate = 0.04; Volatility = 0.3; ExpiryTime = 1.; - Simulations = 1e4; Timesteps = 100; - SDE = cir (Speed, MeanInterestRate, Volatility, "StartState", InitialInterestRate); - [Paths, ~, ~] = simByEuler (SDE, Timesteps, "DeltaTime", ExpiryTime / Timesteps, "NTRIALS", Simulations, "NSTEPS", 1, "Antithetic", true, "Processes", @(t, X) max(X, 0)); - BondApproximate = mean (exp (-(sum (Paths) - InitialInterestRate) * ExpiryTime / Timesteps)); - h = sqrt (Speed * Speed + 2 * Volatility * Volatility); - d = (2 * h + (Speed + h) * (exp (ExpiryTime * h) - 1)); - A = ( (2 * h * exp ((Speed + h) * ExpiryTime / 2)) / d )^((2 * Speed * MeanInterestRate) / (Volatility * Volatility)); - B = 2 * (exp (ExpiryTime * h) - 1) / d; - Bond = A * exp (-B * InitialInterestRate); - assert (BondApproximate, Bond, 1e-3); +[inst/fbusdate.m] +>>>>> /build/reproducible-path/octave-financial-0.5.4/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/effrr.m] +>>>>> /build/reproducible-path/octave-financial-0.5.4/inst/effrr.m +***** assert (effrr (0.09, 12), 0.0938, 0.00005) 1 test, 1 passed, 0 known failure, 0 skipped -[inst/yeardays.m] ->>>>> /build/reproducible-path/octave-financial-0.5.4/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/blsgamma.m] ->>>>> /build/reproducible-path/octave-financial-0.5.4/inst/blsgamma.m -***** error blsgamma () -***** error blsgamma (1) -***** error blsgamma (1, 2) -***** error blsgamma (1, 2, 3) -***** error blsgamma (1, 2, 3, 4) -5 tests, 5 passed, 0 known failure, 0 skipped -[inst/pointfig.m] ->>>>> /build/reproducible-path/octave-financial-0.5.4/inst/pointfig.m +[inst/movavg.m] +>>>>> /build/reproducible-path/octave-financial-0.5.4/inst/movavg.m ***** shared a a = [1 2 3 2 4 2 1]; ***** test @@ -3439,108 +3523,60 @@ 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/blsprice.m] ->>>>> /build/reproducible-path/octave-financial-0.5.4/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/blsvega.m] ->>>>> /build/reproducible-path/octave-financial-0.5.4/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/blsdelta.m] ->>>>> /build/reproducible-path/octave-financial-0.5.4/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/hhigh.m] ->>>>> /build/reproducible-path/octave-financial-0.5.4/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/mirr.m] ->>>>> /build/reproducible-path/octave-financial-0.5.4/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/isbusday.m] ->>>>> /build/reproducible-path/octave-financial-0.5.4/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()]) +[inst/holidays.m] +>>>>> /build/reproducible-path/octave-financial-0.5.4/inst/holidays.m +***** assert(holidays("jan 1 1999", "jan 1 1998"), zeros(0,1)); # return empty when startdate is after enddate +***** assert(holidays("mar 5 2008", "mar 8 2008"), zeros(0,1)); +***** assert(holidays(datenum(2008,3,5), datenum(2008,3,5)), zeros(0,1)); +***** assert(holidays(datenum(2008,1,1), datenum(2008,1,1)), datenum(2008,1,1)); +***** assert (holidays ("jan 1 2010", "mar 1 2010"), [734139; 734156; 734184]); +***** assert (holidays (datenum (2010, 1, 1), datenum (2010, 3, 1)), [734139; 734156; 734184]); +***** assert (holidays ("dec 29 2004", "jan 2 2005"), zeros (0, 1)); +***** 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/year.m] ->>>>> /build/reproducible-path/octave-financial-0.5.4/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.4/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/blsimpv.m] ->>>>> /build/reproducible-path/octave-financial-0.5.4/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) -***** error blsimpv () -***** error blsimpv (1) -***** error blsimpv (1, 2) -***** error blsimpv (1, 2, 3) -***** 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/cov2corr.m] ->>>>> /build/reproducible-path/octave-financial-0.5.4/inst/cov2corr.m -***** demo - cov = [ 0.25 -0.5; -0.5 4.0 ]; - [ sigma, corr ] = cov2corr( cov ); - %-------------------------------------------------- - % Input covariance matrix, output standard deviations and correlation - % matrix +[inst/negvolidx.m] +>>>>> /build/reproducible-path/octave-financial-0.5.4/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) +4 tests, 4 passed, 0 known failure, 0 skipped +[inst/binprice.m] +>>>>> /build/reproducible-path/octave-financial-0.5.4/inst/binprice.m ***** test - cov = [ 0.25 -0.5; -0.5 4.0 ]; - [sigma, corr] = cov2corr( cov ); - 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 + [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/easter.m] +>>>>> /build/reproducible-path/octave-financial-0.5.4/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 Checking C++ files ... Done running the unit tests. Summary: 297 tests, 297 passed, 0 known failures, 0 skipped @@ -3569,12 +3605,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/2462439/tmp/hooks/B01_cleanup starting +I: user script /srv/workspace/pbuilder/2462439/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/2104683 and its subdirectories -I: Current time: Thu Sep 11 01:56:45 -12 2025 -I: pbuilder-time-stamp: 1757599005 +I: removing directory /srv/workspace/pbuilder/2462439 and its subdirectories +I: Current time: Thu Oct 15 10:25:56 +14 2026 +I: pbuilder-time-stamp: 1792009556