Paste
Of Code


 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
is_liability_portfolio = 3
    begin_end = (realunreal
                .merge(position, on="Position_ID", how="left")
                .merge(position[['Position_ID', 'MarketValueRC', 'AccruedIncomeRC', 'OutstandingRC', 'BookValueRC', 'BVPrice']], on="Position_ID", how="left", suffixes=("_Begin", "_End"))
                .merge(earned, on="Position_ID", how="left")
                .merge(amort_fees, on="Position_ID", how="left")
                .merge(divs, on="Position_ID", how="left")
                .assign(
                   EarnedInterestRC = lambda df: df['EarnedInterestRC'].fillna(0),
                   EarnedFeesRC     = lambda df: df['EarnedFeesRC'].fillna(0),
                   Dividend_Amount  = lambda df: df['Dividend_Amount'].fillna(0),
                   AmortizedFee     = lambda df: df['AmortizedFee'].fillna(0),
                   TranIncome_Amount= lambda df: df['TranIncome_Amount'].fillna(0),
                   MarketValueRC_Begin = lambda df: df['MarketValueRC_Begin'].fillna(0),
                   MarketValueRC_End = lambda df: df['MarketValueRC_End'].fillna(0),
                   AccruedIncomeRC_Begin = lambda df: np.where(
                       df["Portfolio_PortfolioType_ID"] == is_liability_portfolio,
                       df["AccruedIncomeRC_Begin"].fillna(0) * -1,
                       df["AccruedIncomeRC_Begin"].fillna(0)
                   ),
                   AccruedIncomeRC_End = lambda df: np.where(
                       df["Portfolio_PortfolioType_ID"] == is_liability_portfolio,
                       df["AccruedIncomeRC_End"].fillna(0) * -1,
                       df["AccruedIncomeRC_End"].fillna(0)
                   ),
                   EarnedIncome = lambda df: np.where(
                       df["Portfolio_PortfolioType_ID"] == 3,
                       (df["EarnedInterestRC"] + df["EarnedFeesRC"]) * -1,
                       df["EarnedInterestRC"] + df["EarnedFeesRC"]
                   ),
                   MarketValueAccruedIncome_Begin   = lambda df: df["MarketValueRC_Begin"] + df["AccruedIncomeRC_Begin"],
                   MarketValueAccruedIncome_End     = lambda df: df["MarketValueRC_End"] + df["AccruedIncomeRC_End"],
                   GainLoss                         = lambda df: df["RealGainsMVInPeriodRC"] + df["UnrealGainsMVInPeriodRC"],
                   Interest = lambda df: df["EarnedIncome"] + df["AmortizedFee"] + df["Dividend_Amount"] + df["TranIncome_Amount"],
                   TotalGain = lambda df: df["GainLoss"] + df["Interest"],
                   AsOfDate = lambda df: df['StartDate'], # TODO: delete the asofdate because we will only rely on start and enddate
                   DateRecordCreated = pd.Timestamp.now()
        )
    )

Toggle: theme, font