v ggplot2 3.3.5 v purrr 0.3.4
v tibble 3.1.6 v dplyr 1.0.7
v tidyr 1.1.4 v stringr 1.4.0
v readr 2.1.1 v forcats 0.5.1
-- Conflicts ------------------------------------------ tidyverse_conflicts() --
x dplyr::filter() masks stats::filter()
x dplyr::lag() masks stats::lag()
# assign the url to `github_raw_csv_url`github_raw_csv_url <-"https://raw.githubusercontent.com/t-emery/sais-susfin_data/main/datasets/blackrock_etf_screener_2022-08-30.csv"# read in the data, and assign it to the object `blackrock_etf_data`blackrock_etf_data <-read_csv(github_raw_csv_url)
Rows: 393 Columns: 22
-- Column specification --------------------------------------------------------
Delimiter: ","
chr (14): ticker, name, incept_date, net_assets_as_of, asset_class, sub_asse...
dbl (8): gross_expense_ratio_percent, net_expense_ratio_percent, net_assets...
i Use `spec()` to retrieve the full column specification for this data.
i Specify the column types or set `show_col_types = FALSE` to quiet this message.
blackrock_etf_data <- blackrock_etf_data |># we are transforming both date columns (currently character strings) into date objects# so we can work with them.# this syntax is a bit confusing, but selects all columns containing `date` and applies# lubridate::mdy() function to them to turn them into date objects. mutate(across(contains("date"), lubridate::mdy)) |># Billions is a more useful magnitude than millions, so we'll create a column with # the assets in billions by dividing by `net_assets_millions` by 1,000 (10^3)# If we wanted trillions, we could divide by 1,000,000 (10^6)mutate(net_assets_usd_bn = net_assets_usd_mn/10^3) |># this column doesn't add anything to our analysis - it says that the data is from 8/30/22select(-net_assets_as_of)
mini_blackrock_data <- blackrock_etf_data |># group by whether the fund is an ESG fund or notgroup_by(is_esg) |># take the top 5 from each group, by net assetsslice_max(order_by = net_assets_usd_bn, n =5) |># select the following columns select(ticker, fund_name = name_wo_ishares_etf, asset_class, sub_asset_class, region, incept_date, net_assets_usd_bn, msci_weighted_average_carbon_intensity_tons_co2e_m_sales) |># rename to `co2_intensity` because the full name is a mouthful, if descriptive.rename(co2_intensity = msci_weighted_average_carbon_intensity_tons_co2e_m_sales) |># always good to ungroup() if you've used a group_by(). We'll discuss later.ungroup()
Adding missing grouping variables: `is_esg`
mini_blackrock_data
# A tibble: 10 x 9
is_esg ticker fund_name asset_class sub_asset_class region incept_date
<chr> <chr> <chr> <chr> <chr> <chr> <date>
1 ESG Fund ESGU ESG Aware~ Equity Large/Mid Cap North~ 2016-12-01
2 ESG Fund ESGD ESG Aware~ Equity Large/Mid Cap Global 2016-06-28
3 ESG Fund ICLN Global Cl~ Equity All Cap Global 2008-06-24
4 ESG Fund ESGE ESG Aware~ Equity Large/Mid Cap Global 2016-06-28
5 ESG Fund DSI MSCI KLD ~ Equity Large/Mid Cap North~ 2006-11-14
6 Regular Fund IVV Core S&P ~ Equity Large Cap North~ 2000-05-15
7 Regular Fund IEFA Core MSCI~ Equity All Cap Global 2012-10-18
8 Regular Fund AGG Core U.S.~ Fixed Inco~ Multi Sectors North~ 2003-09-22
9 Regular Fund IJR Core S&P ~ Equity Small Cap North~ 2000-05-22
10 Regular Fund IEMG Core MSCI~ Equity All Cap Global 2012-10-18
# ... with 2 more variables: net_assets_usd_bn <dbl>, co2_intensity <dbl>
This graph demonstrates that ESG funds have a lower on average gross expense ratio. According to investopedia, this is “the total percentage of a fund’s assets that are devoted to running the fund”. While both regular and ESG funds have low gross expense ratios, ESG funds seem to have lower one’s on average. Since a lower gross expense ratio is typically consider good, ESG funds seem to be more profitable (when looking at this aspect at least) because they should have a higher return on investment. If one is a proponent of ESG funds, then this is good news and might explain why Blackrock’s CEO supports ESG funds while not being very pro climate.
Here we can see that, compared to regular funds, a greater percentage of ESG funds seem to be concentrated in equity. This makes sense since many actors participating in ESG activities are likely to be companies with equity. It also makes sense that there are no ESG funds in categories such as commodities, because commodities are often unsustainable or their processing do not meet ESG goals. However, narrowing down to equity category, I wonder if there is a difference in the sub asset classes within equity between the two different fund types?
Here we see a large difference in the diversity of the sub asset classes of equity in ESG versus Regular funds. ESG funds seem to be composed of either high/mid cap or All Cap sub asset classes while regular funds seem to be more diverse in their sub asset classes. This would make sense because ESG funds are very specific while Regular funds are a broader category so they might have more diversity within themselves.
Rows: 537 Columns: 14
-- Column specification --------------------------------------------------------
Delimiter: ","
chr (4): ticker, company_name, sector, esg_uw_ow
dbl (7): esg_etf, standard_etf, esg_tilt, esg_tilt_z_score, esg_tilt_rank, e...
lgl (3): in_esg_only, in_standard_only, in_on_index_only
i Use `spec()` to retrieve the full column specification for this data.
i Specify the column types or set `show_col_types = FALSE` to quiet this message.
Here, we have a graph comparing the relationship between standard and esf etf’s. Here we see a strong positively correlated relationship between standard etf values and esg etf values. When removing outliers, the trend line did not change much. This makes sense because it shows that companies with high standard etf’s tend to also have high esg etf’s. This makes sense because the reputation of the company may be more significant than whether they have a standard or esg etf.
etf_comparison %>%ggplot(aes(x = sector, y = esg_tilt)) +geom_point()
This graph shows the different esg tilts by sector. Here it seems that esg tilt does not greatly by sector. Each sector has actors with low esg tilts and actors with high esg tilts. From this visual alone it is difficult to calculate which sector might have a higher average esg tilt. When actually calculating the mean by industry, the second graph shows that the information technology industry has the highest on average esg tilt while the communications industry has on average the lowest esg tilt. This is interesting because it shows what industries still need work regarding esg ambitions.
`stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
Here we can see a strong correlation between whether an esg fund is overweight and underweight and esg_tilt. Funds with a greater esg tilt were more likely to be overweight while funds with a smaller esg tilt were more likely to be underweight. This makes sense, but it is interesting that there is some overlap, meaning that esg tilt is not the only factor that determines whether or not a fund is overweight or underweight. This is important because it shows a correlation between whether a fund is overweight or underweight and its esg tilt, which can be used to better understand the impact and properties of esg tilts.