Как я могу начать с симуляций Монте-Карло для финансовых данных в Perl? - PullRequest
3 голосов
/ 29 сентября 2010

Мне нужно создать симулятор Монте-Карло для некоторых финансовых транзакций.Входными данными будут:

  • средний процент транзакций, которые в конечном итоге будут прибыльными
  • средняя прибыль за транзакцию
  • количество транзакций за период времени

Я смотрел на Perl-модуль Math :: Random :: MT :: Auto , но не уверен, как сформулировать входные данные для симулятора.

Может кто-нибудьпредложить какой-нибудь совет по началу работы с учетом входов, с которыми я работаю?

1 Ответ

4 голосов
/ 29 сентября 2010

Я бы предположил, что будет модель, определяющая прибыльность транзакций, и что будет вероятностный компонент прибыльности данной транзакции.

Затем необходимо извлечь реализации из соответствующего распределения для этого вероятностного компонента и рассчитать прибыльность для всех введенных транзакций. Очевидно, что нужно также подумать о том, какие транзакции будут заключаться: зачем вводить транзакцию, которая не является ex ante прибыльной по некоторому критерию? Но я не знаю достаточно, чтобы прокомментировать это.

Будьте осторожны, чтобы не использовать встроенный RNG: В Windows , который в основном даст вам только 32768 возможных значений .

Вот глупый пример:

#!/usr/bin/perl

use strict; use warnings;
use List::Util qw( sum );

my @projects = map { mk_project() } 1 .. 1_000;

for my $i (1 .. 10) {
    my $r = rand;
    my @profits = map { $_->($r) } @projects;
    my $avg_profits = sum( @profits ) / @profits;
    my $n_profitable = grep { $_ >= 0 } @profits;
    print "Profits: $avg_profits\tProfitable: $n_profitable\n";
}

sub mk_project {
    my $m = rand;
    return sub {
        my ($r) = @_;
        return 10*($r - $m);
    }
}
...