私は長い間スモール台帳を使い続け、多くのデータを蓄積してきました。 概念は明確でシンプルですが、データをエクスポートすることができず、マージだけでなくカスタマイズされた分析も行うことができません。
それはちょうど最近櫛転換社債ダブルロー戦略で、それは機能のいくつかを行うことが起こる、重なりが比較的高い感じ、ところで、櫛のこの部分の機能は、ツールの個々のより良い使用にもっと一緒に持って来ら。
主な自作ツールで、この分野での将来のニーズは、目標は、投資リターンの純資産法を記録する際に支援することであり、最初に結果を示し、添付のコードが続きます。
主な関心事を満たす機能
- 操作は簡単で、初期化、転送、合計金額の記録の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()