Ancient

 view release on metacpan or  search on metacpan

t/9053-nvec-valid-finance.t  view on Meta::CPAN


    # Correlation ≈ dot(r1, r2) / (n-1) for standardized data
    my $n = $r1->len();
    my $corr = $r1->dot($r2) / ($n - 1);

    # Should be positive (similar patterns)
    ok($corr > 0, 'positive correlation for similar patterns');
    ok($corr < 1, 'correlation < 1');
};

subtest 'value at risk (VaR) - percentile approach' => sub {
    # Simulated returns (sorted for percentile)
    my $returns = nvec::new([-0.05, -0.03, -0.02, -0.01, 0, 0.01, 0.02, 0.03, 0.04, 0.05]);

    # 5% VaR: 5th percentile of returns
    my $sorted = $returns->sort();
    my $var_5pct = $sorted->get(0);  # Worst return in this sample

    within_tolerance($var_5pct, -0.05, 'VaR 5% = worst return');
};

subtest 'position sizing' => sub {
    my $portfolio_value = 100000;
    my $risk_per_trade = 0.01;  # 1% risk



( run in 2.031 seconds using v1.01-cache-2.11-cpan-39bf76dae61 )