Math-Business-BlackScholes-Binaries-Greeks

 view release on metacpan or  search on metacpan

t/Greeks.t  view on Meta::CPAN

        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 )