そのポートフォリオの個々の株式保有に関する時系列の評価データを集計することにより、株式ポートフォリオの評価の時系列を作成したいと考えています。私が抱えている問題は、特定の日付に特定の株式保有の評価がない可能性があるため、その日付で集計すると誤った結果が生じることです。
私が思いついた解決策は、特定の持ち株の評価 (実際には価格) データが存在しない日付を除外し、完全なデータがあるこれらの日付で集計することです。私が使用する手順は次のとおりです。
# Get the individual holding valuation data
valuation = get_valuation(portfolio = portfolio, df = True)
# Then next few lines retrieve the dates for which I have complete price data for the
# assets that comprise this portflio
# First get a list of the assets that this portfolio contains (or has contained).
unique_assets = valuation['asset'].unique().tolist()
# Then I get the price data for these assets
ats = get_ats(assets = unique_assets, df = True )[['data_date','close_price']]
# I mark those dates for which I have a 'close_price' for each asset:
ats = ats.groupby('data_date')['close_price'].agg({'data_complete':lambda x: len(x) == len(unique_assets)} ).reset_index()
# And extract the corresponding valid dates.
valid_dates = ats['data_date'][ats['data_complete']]
# Filter the valuation data for those dates for which I have complete data:
valuation = valuation[valuation['data_date'].apply(lambda x: x in valid_dates.values)]
# Group by date, and sum the individual hodling valuations by date, to get the Portfolio valuation
portfolio_valuation = valuation[['data_date','valuation']].groupby('data_date').agg(lambda df: sum(df['valuation'])).reset_index()
私の質問は2つあります:
1)上記のアプローチは非常に複雑に感じられます.Pandasには私のソリューションを実装するためのより良い方法があると確信しています. 助言がありますか?
2) 私が使用したアプローチは理想的ではありません。最良の方法は、(所与の持ち株について)評価データがない日付については、その持ち株の最新の評価を使用することです。したがって、2012 年 6 月 21 日のポートフォリオの評価を計算していて、その日の GOOG の評価データがあり、2012 年 6 月 20 日の APPL のみの評価データがあるとします。この場合、2012 年 6 月 21 日のポートフォリオの評価は依然として合計になるはずです。この二つの評価。パンダでこれを行う効率的な方法はありますか? データを反復処理する必要はありません。