Location : Home > Languages > Perl > Package
Title : Math::Financial
Toolbox Logo

名称

 Math::Financial - ローンに関する計算


概要

$calc = new Math::Financial(fv => 100000, pv => 1000);
$calc->set->(pmt => 500, ir => 8);

$calc->compound_interest(find => 'fv');

説明

 本パッケージには、ローン及び年金に関する数学的問題を解く方法を含んでいる。
 The attributes that are used in the equations may be set on a per-object basis, allowing you to run a set of different calculations using the same numbers, or they may be fed directly to the methods.

 get 及び set メソッドでアクセスできる属性は以下の通り。

 属性は大文字小文字を区別しない。個々のメソッドのドキュメンテーションは、それぞれに設定される属性でなければならない。
 計算は new または set メソッドにより設定された属性またはメソッドに直接渡された引数にしたがって行われる。これは異なる方法で本モジュールを使う際にも柔軟に対応できるようにしたものである。
 また、計算は解の属性の更新を行わない。言い換えれば fv を返す式を解いても、結果は返ってくるが内部処理としての fv には影響を与えない。
 計算が完了しなかった場合−欠損値や異常値がある場合など−には undef を返す。
 私は本モジュールを人がどのように使っているのかを知りたいので、インタフェースに関する意見や改善すべき点などについて教えてほしい。


メソッド

new

$calc = new Math::Financial();
$calc = new Math::Financial(pv => 10000, ir => 5, np => 12)

 オブジェクトのコンストラクタ。上記の設定可能な属性に関する記述を参照のこと。
 ここで属性を設定しなくてもよい。後に set を使って、またはメソッドに対して属性を指定することができるからである。
 TPY(年当り期間;デフォルト値は12)及びPD(デフォルト値は0)を除いてデフォルト値はない。
 オブジェクト指向インタフェースがお好みでなければ下のエクスポートの項を参照のこと。

set

$calc->set(fv => 100000, pmt => 500)

 本メソッドを用いて、new で呼び出された格納された属性を設定できる。設定された属性の数を返す。

get

$calc->get(field => 'ir')
$calc->get('ir','pmt','pv')
$calc->get([qw(ir pmt pv)])

 本メソッドを利用して属性を取得できる。複数の属性を操作する際にはリストまたはリスト参照を用いる。
 1つの属性を操作する場合にはスカラーを帰す。複数の属性を操作する際にはコンテキストにしたがってリストまたはリスト参照を返す。

compound_interest

$calc->compound_interest
$calc->compound_interest->('fv')
$calc->compound_interest->(find => 'fv')

 年金に対する複利計算を行う。pv, fv, np, ir のうちどれか3つを指定すれば残りの1つを計算する。
 引数がなければメソッドはオブジェクトが定義された属性について計算をしようとする。通常はおそらく返してほしい属性を明示的に要求するであろう。

funding_annuity

$calc->funding_annuity
$calc->funding_annuity->(pmt => 2000, ir => 6.50, np => 40, tpy => 4)

 funding_annuity は各期間に口座にどれだけ預金して年率 ir の利子がついたら np 期間後に総額でどれだけ(fv)の金額になるかを計算する。
 ここで tpy 属性を12以上に設定することもできる。したがってあまりないが、複数月のローンも計算できる。

loan_balance

$calc->loan_balance
$calc->loan_balance->(pmt => 2000, ir => 6.50, np => 360, pd => 12)

 loan_balance は np 回の支払いを終えた時点のローン収支を計算する。本メソッドを引き出した年金の残金の計算にも用いることができる。

loan_payment

$calc->loan_payment

 ローンの期間あたりの支払額を返す。償却としても知られる。ir, np, pv が設定されねばならない。

loan_size

$calc->loan_term
$calc->loan_size->(pmt => 2000, ir => 6.50, np => 360)

 loan_size は1月の返済額に基づいたローンの期間を計算する。

loan_term

$calc->loan_term

 所与の利子率 ir、支払総額 pmt、ローン金額 pv の下での支払期間を返す。ir, pmt, pv が設定されねばならない。

simple_interest

$calc->simple_interest
$calc->simple_interest->('ir')
$calc->simple_interest->(find => 'ir')

 複利計算を行うが、np は考慮しない。 With any 2 of pv, fv, ir のうち2つを与えれば残りの1つを計算する。
 引数がなければメソッドはメソッドはオブジェクトが定義された属性について計算をしようとする。通常はおそらく返してほしい属性を明示的に要求するであろう。


要件

 POSIX -- c_type functions

 (c_types は Windows でも稼動するかも知れないがよく知らない。誰かが教えてくれるとありがたい。もし稼動しなければ将来のリリースで POSIX 関数をラインタイムで置換してWindowsでも稼動できるようにする。)


エクスポート

 デフォルトでは何もない。
 手続き的なインタフェースで使用することを想定して、use Math::Financial qw(:standard) と書くことができる。この下ではオブジェクト参照なしに、メソッドを関数として以下のように呼び出すことができる。

$term = loan_term(ir => 6.5, pmt => 1000, pv => 200000);

 set と get を除くあらゆるメソッドはこのようにエクスポートすることができる。このことは少々混乱を来たすかも知れない。
 set と get を手続き的インタフェースで呼び出したいかも知れないが、(他の様々な計算で属性を設定するかも知れないので) Math::Financial::set 及び Math::Financial::get として呼び出さねばならない。


著者

 Eric Fixler, fix@fixler.com, 1999


To Do

 もっと扱える式を増やすこと! 組み込んでほしい式を送ってほしい。


謝辞

 Larry Freeman の Financial Formulas Page http://ourworld.compuserve.com/homepages/Larry_Freeman/finance.htm は本プロジェクトには不可欠だった。

(訳注:上記のページは今はリンク切れである。)

Toolbox Logo
Updated : 2007/04/03