#' @import lubridate
#' @import tidyr
#' @export
Asset <- R6::R6Class(
classname = 'Asset',
public = list(
meta = NULL,
time_series = NULL,
initialize = function(
meta = NULL,
time_series = NULL,
check_meta = TRUE
) {
self$meta = meta
self$time_series = time_series
if (check_meta) {
self$checkMetaData()
}
},
assignBlankMetaData = function() {
self$meta <- tibble(
name = NA,
forefront_id = NA,
provider_id = NA,
data_provider = NA,
asset_type = NA,
asset_class = NA,
country = NA,
currency = NA,
maturity = NA,
duration = NA,
benchmark = NA,
cme_asset = NA,
mult = NA,
rf_net = NA,
auto_correl = NA,
data_type = NA,
freq = NA,
constr_fnc = NA,
ext_meth = NA,
state = NA,
mgr_name = NA,
notice_period = NA,
liq = NA,
lock_up = NA,
mgmt_fee = NA,
perf_fee = NA,
main_strat = NA,
sub_strat = NA,
off_bench = NA,
aum = NA,
aum_date = NA,
contact_name = NA,
contact_num = NA,
contact_email = NA,
mgr_address = NA,
auditor = NA,
admin = NA,
custodian = NA,
pb = NA,
legal = NA
)
},
assignMinMetaData = function(
name,
provider_id,
freq,
mult = 1,
rf_net = TRUE,
data_type = 'RETURN'
) {
self$assignBlankMetaData()
self$meta$name <- name
self$meta$provider_id <- provider_id
self$meta$mult <- mult
self$meta$rf_net <- rf_net
self$meta$data_type <- data_type
self$meta$freq <- freq
},
checkMetaData = function() {
meta <- self$meta
if (is.null(meta)) {
meta <- self$meta()
}
good_name <- c(
'name',
'forefront_id',
'provider_id',
'data_provider',
'asset_type',
'asset_class',
'country',
'currency',
'maturity',
'duration',
'benchmark',
'cme_asset',
'mult',
'rf_net',
'auto_correl',
'data_type',
'freq',
'constr_fnc',
'ext_meth',
'state',
'mgr_name',
'notice_period',
'liq',
'lock_up',
'mgmt_fee',
'perf_fee',
'main_strat',
'sub_strat',
'off_bench',
'aum',
'aum_date',
'contact_name',
'contact_num',
'contact_email',
'mgr_address',
'auditor',
'admin',
'custodian',
'pb',
'legal')
name_check <- good_name %in% names(meta)
if (sum(!name_check) > 0) {
stop(paste0('meta names misspecified ', good_name[!name_check]))
}
meta$data_type <- toupper(meta$data_type)
if (!meta$data_type %in% c('RETURN', 'LEVEL')) {
stop('data_type misspecified, must be \'return\' or \'level\'')
}
meta$freq <- toupper(meta$freq)
if (!meta$freq %in% c('D', 'W', 'M', 'Q', 'S', 'A')) {
stop('freq misspecified, must be \'D\', \'W\', \'M\', \'Q\', \'S\', or
\'A\'')
}
self$meta <- meta
},
changeFreq = function(freq) {
freq <- checkFreq(freq)
time_series <- changeTimeSeriesFreq(self$time_series, freq, self$meta$data_type)
self$time_series <- time_series
self$meta$freq <- freq
}
)
)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.