Math-Business-BlackScholes-Binaries-Greeks
view release on metacpan or search on metacpan
gamma => 0.2051,
theta => -0.0003,
vanna => -0.0053,
vega => 0.0089,
volga => -1.0103,
},
{
type => 'UPORDOWN',
barriers => [50, 0.05],
t => 365,
sigma => 1,
delta => -0.0102,
gamma => 0.0292,
theta => -0.0266,
vanna => -0.0954,
vega => 0.0532,
volga => 0.4598,
},
{
type => 'UPORDOWN',
barriers => [1.35, 1.34],
delta => 0.0009,
gamma => 0.1813,
theta => 0,
vanna => -0.0167,
vega => 0,
volga => 0,
},
{
type => 'UPORDOWN',
barriers => [1.35, 1.34],
r => -0.005,
q => -0.002,
delta => -0.0015,
gamma => -0.3075,
theta => 0,
vanna => 0.0518,
vega => 0,
volga => 0,
},
);
foreach my $case (@test_cases) {
my $bet_type = $case->{type};
foreach my $key (keys %defaults) {
$case->{$key} //= $defaults{$key};
}
my $case_descrip =
$case->{t} . 'D '
. $bet_type . ' '
. 'sigma: ['
. $case->{sigma} . '] '
. 'barrier:['
. $case->{barriers}[0]
. ($case->{barriers}[1] ? ', ' . $case->{barriers}[1] : '') . '] '
. 's,r,q:['
. join(', ', map { $case->{$_} } ('s', 'r', 'q')) . ']';
subtest $case_descrip => sub {
foreach my $greek (qw(delta gamma theta vanna vega volga)) {
my $formula_name = 'Math::Business::BlackScholes::Binaries::Greeks::' . ucfirst($greek) . '::' . lc($bet_type);
my $formula = \&$formula_name;
my $computed_value = $formula->($case->{s}, @{$case->{barriers}}, $case->{t} / 365, $case->{r}, $case->{r} - $case->{q}, $case->{sigma});
is(roundnear(1e-4, $computed_value), $case->{$greek}, $greek);
}
};
}
( run in 1.197 second using v1.01-cache-2.11-cpan-b301d465b3d )