私のアプリケーションはXIRRを計算する必要がありますが、Linux上で動作するためExcelを使うことはできません。ポストに述べたようにエクセルや他のライブラリを使わずにXIRRを計算するJavaプログラム
1
A
答えて
2
XIRR関数のOpenOfficeのドキュメント(式はExcelのと同じである)あなたは以下のFでXIRR変数を解決する必要がある(XIRR)式によれば: xirr equation
私はJavaでC#コードを勉強しています。日付の違いでさえ。しかし、プロダクションコードでは、apache commonのようなものを使用します。
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class XirrDate {
public static final double tol = 0.001;
public static double dateDiff(Date d1, Date d2){
long day = 24*60*60*1000;
return (d1.getTime() - d2.getTime())/day;
}
public static double f_xirr(double p, Date dt, Date dt0, double x) {
return p * Math.pow((1.0 + x), (dateDiff(dt0,dt)/365.0));
}
public static double df_xirr(double p, Date dt, Date dt0, double x) {
return (1.0/365.0) * dateDiff(dt0,dt) * p * Math.pow((x + 1.0), ((dateDiff(dt0,dt)/365.0) - 1.0));
}
public static double total_f_xirr(double[] payments, Date[] days, double x) {
double resf = 0.0;
for (int i = 0; i < payments.length; i++) {
resf = resf + f_xirr(payments[i], days[i], days[0], x);
}
return resf;
}
public static double total_df_xirr(double[] payments, Date[] days, double x) {
double resf = 0.0;
for (int i = 0; i < payments.length; i++) {
resf = resf + df_xirr(payments[i], days[i], days[0], x);
}
return resf;
}
public static double Newtons_method(double guess, double[] payments, Date[] days) {
double x0 = guess;
double x1 = 0.0;
double err = 1e+100;
while (err > tol) {
x1 = x0 - total_f_xirr(payments, days, x0)/total_df_xirr(payments, days, x0);
err = Math.abs(x1 - x0);
x0 = x1;
}
return x0;
}
private static SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
public static Date strToDate(String str){
try {
return sdf.parse(str);
} catch (ParseException ex) {
return null;
}
}
public static void main(String... args) {
double[] payments = {-1151250,232912,233123,233336,233551,233768}; // payments
Date[] days = {strToDate("11/11/2015"),strToDate("25/11/2015"),strToDate("25/12/2015"),strToDate("25/01/2016"),strToDate("25/02/2016"),strToDate("25/03/2016")}; // days of payment (as day of year)
double xirr = Newtons_method(0.1, payments, days);
System.out.println("XIRR value is " + xirr);
}}
+0
これは365がハードコードされています。これはうるう年をサポートしないことを意味しますか? – dukethrash
関連する問題
- 1. 数学ライブラリを使わずに関心を計算する
- 2. ライブラリを使わずにPythonでCRC32を計算する
- 3. XIRR Excelでの計算
- 4. PythonでXIRRを計算する
- 5. _collectionsや他のライブラリを使わずに辞書を注文する方法は?
- 6. エクセル式計算
- 7. ピボットテーブルの計算フィールドは、1つの列を他のエクセルで除算します。
- 8. HttpUrlConnectionライブラリや他のライブラリを使用せずにhttp POSTリクエストを使ってWebサイトにログインしてログインする
- 9. エクセルで休暇を計算する
- 10. パンダと並列計算や外部ライブラリ
- 11. のJava - プログラムによるタブ区切りにエクセルやオープンオフィススプレッドシートを取ったファイル
- 12. VBAエクセル計算が遅い
- 13. Javaプログラムで例外を計算平均
- 14. どのようにJavaプログラムのメモリ使用量を計算するには?
- 15. Java:プログラムの複雑さを計算するには?
- 16. "system()ライブラリ関数"を使わずにcプログラムでpkillを呼び出す方法
- 17. MPIマスタープロセスが他のプロクトの計算を待たずに
- 18. VBAエクセルで計算式を書く
- 19. ANTやMavenを使わずにJavaでTravis CIを使用できますか?
- 20. sum ++を使わずに合計を正しく計算するにはどうすればいいですか?
- 21. 計算の意味や基準に基づいて、中央値 - エクセル
- 22. Cグラフィックスライブラリやその他のライブラリ関数を使用せずに点を描く/ピクセルを設定する方法
- 23. Pythonでmod functを使わずにモジュラス計算を行う方法
- 24. Unix日時をライブラリや定義済みのヘルパーを使用せずに時刻に換算する
- 25. matlabやその他のプログラムを使ってテキストファイルをフィルタリングする
- 26. Console.ReadLine()を使わずにC#プログラムを実行するには?
- 27. ガウス曲率を計算するPythonベースのライブラリやコードはありますか?
- 28. XIRRが目標の返還率を得るために必要なキャッシュフローを計算する方法
- 29. Cの計算プログラムを変更する
- 30. F#数学ライブラリ - メジアンを計算する
インターネットからのロジックが見つかりました。 – sskini