Diff of the two buildlogs: -- --- b1/build.log 2024-10-25 01:13:25.447931436 +0000 +++ b2/build.log 2024-10-25 01:19:41.842521219 +0000 @@ -1,6 +1,6 @@ I: pbuilder: network access will be disabled during build -I: Current time: Wed Nov 26 19:33:22 -12 2025 -I: pbuilder-time-stamp: 1764228802 +I: Current time: Fri Oct 25 15:13:28 +14 2024 +I: pbuilder-time-stamp: 1729818808 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/3535725/tmp/hooks/D02_print_environment starting +I: user script /srv/workspace/pbuilder/3846095/tmp/hooks/D01_modify_environment starting +debug: Running on ionos11-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 25 01:13 /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/3846095/tmp/hooks/D01_modify_environment finished +I: user script /srv/workspace/pbuilder/3846095/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=42 ' - DISTRIBUTION='trixie' - 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]="2" [2]="32" [3]="1" [4]="release" [5]="x86_64-pc-linux-gnu") + BASH_VERSION='5.2.32(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=20 ' + DIRSTACK=() + DISTRIBUTION=trixie + EUID=0 + FUNCNAME=([0]="Echo" [1]="main") + GROUPS=() + HOME=/root + HOSTNAME=i-capture-the-hostname + HOSTTYPE=x86_64 + HOST_ARCH=amd64 IFS=' ' - INVOCATION_ID='099193680ece4efc8dfdc9d4fed2d075' - 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='3535725' - PS1='# ' - PS2='> ' + INVOCATION_ID=06288fd9a1de4a228e610bac8cae61f6 + 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=3846095 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.Ws6bPrsD/pbuilderrc_MRdf --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.Ws6bPrsD/b1 --logfile b1/build.log octave-financial_0.5.3-5.dsc' - SUDO_GID='111' - SUDO_UID='106' - SUDO_USER='jenkins' - TERM='unknown' - TZ='/usr/share/zoneinfo/Etc/GMT+12' - USER='root' - _='/usr/bin/systemd-run' - http_proxy='http://213.165.73.152:3128' + 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.Ws6bPrsD/pbuilderrc_TAiL --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.Ws6bPrsD/b2 --logfile b2/build.log octave-financial_0.5.3-5.dsc' + SUDO_GID=111 + SUDO_UID=106 + SUDO_USER=jenkins + TERM=unknown + TZ=/usr/share/zoneinfo/Etc/GMT-14 + UID=0 + USER=root + _='I: set' + http_proxy=http://46.16.76.132:3128 I: uname -a - Linux ionos15-amd64 6.10.11+bpo-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.10.11-1~bpo12+1 (2024-10-03) x86_64 GNU/Linux + Linux i-capture-the-hostname 6.1.0-26-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.112-1 (2024-09-30) x86_64 GNU/Linux I: ls -l /bin - lrwxrwxrwx 1 root root 7 Aug 4 2024 /bin -> usr/bin -I: user script /srv/workspace/pbuilder/3535725/tmp/hooks/D02_print_environment finished + lrwxrwxrwx 1 root root 7 Aug 4 21:30 /bin -> usr/bin +I: user script /srv/workspace/pbuilder/3846095/tmp/hooks/D02_print_environment finished -> Attempting to satisfy build-dependencies -> Creating pbuilder-satisfydepends-dummy package Package: pbuilder-satisfydepends-dummy @@ -86,7 +118,7 @@ Depends: debhelper-compat (= 13), octave-io, octave-statistics, dh-sequence-octave dpkg-deb: building package 'pbuilder-satisfydepends-dummy' in '/tmp/satisfydepends-aptitude/pbuilder-satisfydepends-dummy.deb'. Selecting previously unselected package pbuilder-satisfydepends-dummy. -(Reading database ... 19945 files and directories currently installed.) +(Reading database ... 21880 files and directories currently installed.) Preparing to unpack .../pbuilder-satisfydepends-dummy.deb ... Unpacking pbuilder-satisfydepends-dummy (0.invalid.0) ... dpkg: pbuilder-satisfydepends-dummy: dependency problems, but configuring anyway as you requested: @@ -633,10 +665,10 @@ Get: 516 http://deb.debian.org/debian trixie/main amd64 octave-io amd64 2.6.4-3+b2 [202 kB] Get: 517 http://deb.debian.org/debian trixie/main amd64 octave-statistics-common all 1.7.0-2 [872 kB] Get: 518 http://deb.debian.org/debian trixie/main amd64 octave-statistics amd64 1.7.0-2 [140 kB] -Fetched 200 MB in 20s (9951 kB/s) +Fetched 200 MB in 2s (82.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 ... 19945 files and directories currently installed.) +(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 ... 21880 files and directories currently installed.) Preparing to unpack .../000-netbase_6.4_all.deb ... Unpacking netbase (6.4) ... Selecting previously unselected package readline-common. @@ -2759,7 +2791,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/3846095/tmp/hooks/A99_set_merged_usr starting +Not re-configuring usrmerge for trixie +I: user script /srv/workspace/pbuilder/3846095/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 @@ -2796,81 +2832,53 @@ Checking package... Run the unit tests... Checking m files ... -[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) +[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/blsdelta.m] ->>>>> /build/reproducible-path/octave-financial-0.5.3/inst/blsdelta.m +[inst/@sde/simByEuler.m] +>>>>> /build/reproducible-path/octave-financial-0.5.3/inst/@sde/simByEuler.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/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/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/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/blstheta.m] ->>>>> /build/reproducible-path/octave-financial-0.5.3/inst/blstheta.m + 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 - [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/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/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) + 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/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/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 @@ -2886,50 +2894,139 @@ 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/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/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 -***** 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/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/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/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/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/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/cir.m] +>>>>> /build/reproducible-path/octave-financial-0.5.3/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/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/macd.m] +>>>>> /build/reproducible-path/octave-financial-0.5.3/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/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/blslambda.m] +>>>>> /build/reproducible-path/octave-financial-0.5.3/inst/blslambda.m +***** 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) +***** 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) +7 tests, 7 passed, 0 known failure, 0 skipped +[inst/blsrho.m] +>>>>> /build/reproducible-path/octave-financial-0.5.3/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/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/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/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/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/blkprice.m] +>>>>> /build/reproducible-path/octave-financial-0.5.3/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/weeknum.m] >>>>> /build/reproducible-path/octave-financial-0.5.3/inst/weeknum.m ***** assert (weeknum (728647), 52) @@ -2962,125 +3059,6 @@ 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/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/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/blsgamma.m] ->>>>> /build/reproducible-path/octave-financial-0.5.3/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/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/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) -4 tests, 4 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/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/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/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/cir.m] ->>>>> /build/reproducible-path/octave-financial-0.5.3/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/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])) @@ -3094,141 +3072,76 @@ ***** 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/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/@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") +[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/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/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/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/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/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/@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); +[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; - Drift = drift (0., RiskFreeRate - Dividends); - Diffusion = diffusion (1., Volatility); - SDE = sde (Drift, Diffusion, "StartState", AssetPrice); + SDE = gbm (RiskFreeRate - Dividends, Volatility, "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/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/blslambda.m] ->>>>> /build/reproducible-path/octave-financial-0.5.3/inst/blslambda.m -***** 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) -***** 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) -7 tests, 7 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/blsrho.m] ->>>>> /build/reproducible-path/octave-financial-0.5.3/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/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/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/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/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/corr2cov.m] >>>>> /build/reproducible-path/octave-financial-0.5.3/inst/corr2cov.m ***** demo @@ -3244,44 +3157,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/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/blkprice.m] ->>>>> /build/reproducible-path/octave-financial-0.5.3/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/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/nweekdate.m] >>>>> /build/reproducible-path/octave-financial-0.5.3/inst/nweekdate.m ***** assert(nweekdate(1, 4, 2008, 1), datenum(2008, 1, 2)) @@ -3297,14 +3172,8 @@ ***** 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/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/movavg.m] ->>>>> /build/reproducible-path/octave-financial-0.5.3/inst/movavg.m +[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 @@ -3320,19 +3189,73 @@ 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/macd.m] ->>>>> /build/reproducible-path/octave-financial-0.5.3/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) +[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/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/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/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/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) +4 tests, 4 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/thirdwednesday.m] >>>>> /build/reproducible-path/octave-financial-0.5.3/inst/thirdwednesday.m ***** shared m, y, bt, et @@ -3349,6 +3272,45 @@ assert(b, bt') assert(e, et') 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) +***** 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/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/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/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 +***** 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/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/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) @@ -3359,25 +3321,92 @@ ***** 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/blsvega.m] ->>>>> /build/reproducible-path/octave-financial-0.5.3/inst/blsvega.m +[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/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/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/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/blsgamma.m] +>>>>> /build/reproducible-path/octave-financial-0.5.3/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.3/inst/blsdelta.m ***** test -***** error blsvega () -***** error blsvega (1) -***** error blsvega (1, 2) -***** error blsvega (1, 2, 3) -***** error blsvega (1, 2, 3, 4) + [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/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/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) +[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/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/cfconv.m] >>>>> /build/reproducible-path/octave-financial-0.5.3/inst/cfconv.m ***** demo @@ -3393,26 +3422,27 @@ errVal = round(errVal*(1e+10)); assert(errVal, 0) 1 test, 1 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) -***** 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/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/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/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/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/cov2corr.m] >>>>> /build/reproducible-path/octave-financial-0.5.3/inst/cov2corr.m ***** demo @@ -3427,22 +3457,28 @@ 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/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/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/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/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 Checking C++ files ... Done running the unit tests. Summary: 292 tests, 292 passed, 0 known failures, 0 skipped @@ -3471,12 +3507,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/3846095/tmp/hooks/B01_cleanup starting +I: user script /srv/workspace/pbuilder/3846095/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/3535725 and its subdirectories -I: Current time: Wed Nov 26 19:36:24 -12 2025 -I: pbuilder-time-stamp: 1764228984 +I: removing directory /srv/workspace/pbuilder/3846095 and its subdirectories +I: Current time: Fri Oct 25 15:19:40 +14 2024 +I: pbuilder-time-stamp: 1729819181