blog

ARTSシェア:自家製ファンド純資産法計算ツール

また、多くのデータを蓄積し、一般的な考え方は明確でシンプルですが、データをエクスポートすることはできませんが、長い時間のための使用と低速の小さな帳簿は、合併やカスタム分析を行うには良いことではありませ...

Apr 7, 2020 · 3 min. read
シェア

私は長い間スモール台帳を使い続け、多くのデータを蓄積してきました。 概念は明確でシンプルですが、データをエクスポートすることができず、マージだけでなくカスタマイズされた分析も行うことができません。

それはちょうど最近櫛転換社債ダブルロー戦略で、それは機能のいくつかを行うことが起こる、重なりが比較的高い感じ、ところで、櫛のこの部分の機能は、ツールの個々のより良い使用にもっと一緒に持って来ら。

主な自作ツールで、この分野での将来のニーズは、目標は、投資リターンの純資産法を記録する際に支援することであり、最初に結果を示し、添付のコードが続きます。

主な関心事を満たす機能

  • 操作は簡単で、初期化、転送、合計金額の記録の3つだけです。
  • フォーマットの最適化に配慮した制御可能な出力フォーマット
  • ベースデータに加え、シェア変動、累積インプット、損益も計算可能
  • ヒストリカルデータが入手可能な場合は、それを使用して、基 礎となるインデックスを基準価額手法の表現に落とし込むこと ができ、比較が容易になります。
  • ややカプセル化されているため、複数アカウントのデータを簡単に集約できます。
  • また、計算されたデータはデータベースに入れるのに適しており、BIソフトウェアを使用してより詳細に分析し、表示することができます。
  • いくつかの簡単なカプセル化を行うには、ここで入力し、より実用的なGUIツールにパッケージ化することができ、ユーザーフレンドリーな操作
  • 機能は基本的に小口帳簿と同じです。
  • SaaSとしてパッケージ化されれば、その後の二次開発も容易です。
  • 出力形式は、プレゼンテーションや共有が容易なエクセル形式とすることもできます。

python自体の準備は省略され、主に依存関係のインストールpipのinstlal pandasをインストールします。以下は、コード例の実際の短いバージョンを示していますが、基本的な関数を完了することができ、拡張関数の長さに限定され、ここでは示されていません。

import pandas as pd
class NetValueInvestPlan2:
 """
 純資産取引戦略
 """
 def __init__(self, start_date, amount, data_format={' ': "{:.4f}", ' ': "{:,.0f}", ' ': "{:,.0f}", '資金調達の変更': "{:,.0f}", '変更点を共有する': "{:,.0f}", '期間中の累積入力': "{:,.0f}", '絶対損失': "{:.2%}"}):
 self.start_date = start_date
 self.initial_amount = amount
 self.data_format = data_format
 self.amount_data = []
 self.transfer_data = []
 
 def record_value(self, date, amount, moneyinout=0.0):
 self.amount_data.append({"":date, "総資産":amount})
 if moneyinout!=0.0:
 self.money_transfer(date, moneyinout)
 def money_transfer(self, date, moneyinout):
 self.transfer_data.append({"":date, " :moneyinout}) 
 def compute_table(self):
 headers=""" 純資産額 総資産額 総株式数 資金増減額 株式増減額 期中累積投入額 絶対損失額 """.strip().split()
 d = """{0} 1.00 {1} {1} {1} {1} {1} 0.0""".format(self.start_date, self.initial_amount)
 self.df = pd.DataFrame([dict(zip(headers, i.split())) for i in d.strip().splitlines()])
 self.df.set_index("", inplace=True)
 self.df = self.df[headers[1:]] 
 # self.df.sort_index(inplace=True)
 for col in headers[1:]:
 self.df[col] = pd.to_numeric(self.df[col], errors='coerce')
 
 for d in self.amount_data:
 self.df.loc[d[""]] = [0.0, d["総資産"], 0.0, 0.0, 0.0, 0.0, 0.0]
 for d in self.transfer_data:
 if d[""] in self.df.index:
 self.df.loc[d[""]]["資金の変更"] = d[" ]
 else:
 pre_amount = self.df.iloc[self.df.index.get_loc(d[""])-1]["総資産"]
 self.df.loc[d[""]] = [0.0, pre_amount + d[" ], 0.0, d[" ], 0.0, 0.0, 0.0]
 self.df['期間中の累積入力'] = self.df['資金調達の変更'].cumsum()
 for i, row in self.df.iterrows():
 if i != self.start_date:
 cur = self.df.loc[i]
 pre = self.df.iloc[self.df.index.get_loc(i)-1]
 cur['変更点を共有する'] = cur['資金調達の変更'] / pre[' ']
 cur[' '] = cur['変更点を共有する'] + pre[' ']
 cur[' '] = cur[' '] / cur[' ']
 cur['絶対損失'] = cur[' '] / cur['期間中の累積入力'] - 1
 
 def output(self):
 return (self.df.style.format(self.data_format)) 
p = NetValueInvestPlan2("", )
p.record_value('', )
p.record_value('', )
p.record_value('', )
p.money_transfer('', )
p.compute_table()
p.output()
Read next

モバイルPCフレンドリーの強力なビュー画像切り抜きプラグイン

コンポーネントを使用している場合、幅と高さは親ラベルに従いますので、親ラベルの幅と高さを設定する必要があります。 このとき、次の3つのコンポーネントが登録されます。 コンポーネント:,,...

Apr 7, 2020 · 15 min read