0

考虑到所有者频繁申请和拯救资金,我如何计算基金组合的回报?我在下面有一个示例数据库,我需要使用NAV 值(基金价格)来了解他从min(Date) 到 Yesterday获得了多少。

我使用了两列表示相同的内容(NAVinitialDate 和 NAVMC *手动计算),因为由于应用日期 x 大写日期问题,值存在一些差异。

      df <-  structure(list(Date = structure(c(18824, 18823, 18825, 18802, 
        18802, 18802, 18774, 18774, 18774), class = "Date"), Client = c(55916, 
        55916, 55916, 55916, 55916, 55916, 55916, 55916, 55916), FundName = c("SAFRA S&P REAIS FIC MULTIMERCADO", 
        "SAFRA S&P SPECIAL FIC MULTIMERCADO", "SAFRA FIC AÇÕES BDR NÍVEL I", 
        "SAFRA FIC AÇÕES BDR NÍVEL I", "SAFRA CONSUMO II FIC AÇÕES", 
        "SAFRA AÇÕES LIVRE FIC AÇÕES", "SAFRA KEPLER EQUITY HEDGE FI MULTIMERCADO", 
        "SAFRA AÇÕES LIVRE FIC AÇÕES", "SAFRA S&P SPECIAL FIC MULTIMERCADO"
        ), Nature = c("Application", "Rescue", "Rescue", "Application", 
        "Application", "Application", "Application", "Application", "Application"
        ), Quantity = c(148.027808, 0, 38.296823, 77.152464, 263.605244, 
        142.044339, 569.759599, 44.18238, 88.811145), Value = c(46976.6, 
        -47177.54, -19685.59, 37234.91, 30000, 23611.14, 82903.85, 7123, 
        46281.27), FundCode = c(20394372000157, 19107923000175, 18770648000102, 
        18770648000102, 35712452000180, 32666326000149, 25079578000106, 
        32666326000149, 19107923000175), NAVInitialDate = c(322.308397999965, 
        531.220042999834, 499.586203000043, 482.614653000142, 113.806536999997, 
        166.223730999976, 145.685680000111, 161.218113000039, 521.120066000149
        ), NAVYesterday = c(327.404480999801, 541.062088999897, 514.130742000416, 
        514.130742000416, 111.223012999981, 165.302627000026, 147.122290000087, 
        165.302627000026, 541.062088999897), NAVmanuallycalculatedinDate = c(317.349831999134, 
        -Inf, -514.026711824111, 482.614657647227, 113.806537171924, 
        166.223731028098, 145.50671922949, 161.218114551547, 521.120068883247
        )), row.names = c(NA, -9L), class = c("tbl_df", "tbl", "data.frame"
        ))
    
    df$Date <- as.Date(df$Date)

    df$NAVmanuallycalculatedinDate <- NULL
    
    df$NAVMC = df$Value / df$Quantity
    
    df <- do.call(data.frame,lapply(df, function(x) replace(x,is.infinite(x),NA))) 
    
    df <- df %>%  mutate(NAVMC = coalesce(df$NAVMC,df$NAVInitialDate))
    
    df$NAVMC <- abs(df$NAVMC)
    
    df$VarNAV <- (df$NAVYesterday - df$NAVMC)/df$NAVMC
    
    df$Rent <- df$VarNAV * df$Value
    
    df$Total <- df$Rent + df$Value
4

0 回答 0