# assign the url github_raw_csv_url <-"https://raw.githubusercontent.com/t-emery/sais-susfin_data/main/datasets/blackrock_etf_screener_2022-08-30.csv"# read 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...
ℹ Use `spec()` to retrieve the full column specification for this data.
ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
#transforming both data columns (currently character columns)# lubridate::mdy() function to turn them into date objects.blackrock_etf_data <- blackrock_etf_data %>%mutate(across(contains("date"), lubridate::mdy)) %>%# turn assets into billions from millions by dividing `net_assets_millions` by 1,000 (10^3)mutate(net_assets_usd_bn = net_assets_usd_mn/10^3) %>%# getting rid of net_assets_as_of since it is uselessselect(-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(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` instead of long namerename(co2_intensity = msci_weighted_average_carbon_intensity_tons_co2e_m_sales) %>%# always good to ungroup() if you've used a group_by(). ungroup()
Adding missing grouping variables: `is_esg`
mini_blackrock_data
# A tibble: 10 × 9
is_esg ticker fund_…¹ asset…² sub_a…³ region incept_d…⁴ net_a…⁵ co2_i…⁶
<chr> <chr> <chr> <chr> <chr> <chr> <date> <dbl> <dbl>
1 ESG Fund ESGU ESG Aw… Equity Large/… North… 2016-12-01 22.4 104.
2 ESG Fund ESGD ESG Aw… Equity Large/… Global 2016-06-28 6.43 104.
3 ESG Fund ICLN Global… Equity All Cap Global 2008-06-24 5.63 266.
4 ESG Fund ESGE ESG Aw… Equity Large/… Global 2016-06-28 4.23 168.
5 ESG Fund DSI MSCI K… Equity Large/… North… 2006-11-14 3.69 72.7
6 Regular Fund IVV Core S… Equity Large … North… 2000-05-15 298. 148.
7 Regular Fund IEFA Core M… Equity All Cap Global 2012-10-18 84.2 127.
8 Regular Fund AGG Core U… Fixed … Multi … North… 2003-09-22 82.3 283.
9 Regular Fund IJR Core S… Equity Small … North… 2000-05-22 66.5 133.
10 Regular Fund IEMG Core M… Equity All Cap Global 2012-10-18 64.9 369.
# … with abbreviated variable names ¹fund_name, ²asset_class, ³sub_asset_class,
# ⁴incept_date, ⁵net_assets_usd_bn, ⁶co2_intensity
blackrock_etf_data %>%# the column you want to examineselect(asset_class) %>%# selects the unique valuesdistinct()
# A tibble: 5 × 1
asset_class
<chr>
1 Equity
2 Fixed Income
3 Commodity
4 Real Estate
5 Multi Asset
## Now Your Tryblackrock_etf_data %>%# the column you want to examineselect(region) %>%# selects the unique valuesdistinct()
# A tibble: 7 × 1
region
<chr>
1 North America
2 Global
3 Asia Pacific
4 Latin America
5 Europe
6 Middle East and Africa
7 Kuwait
blackrock_etf_data %>%# the column you want to examineselect(sub_asset_class) %>%# selects the unique valuesdistinct()
# A tibble: 18 × 1
sub_asset_class
<chr>
1 Large Cap
2 All Cap
3 Multi Sectors
4 Small Cap
5 Large/Mid Cap
6 Mid Cap
7 Credit
8 Inflation
9 Municipals
10 Precious Metals
11 Government
12 Mortgages
13 High Yield
14 Real Estate Securities
15 Multi Commodity
16 Static Allocation
17 Mid/Small Cap
18 Multi Strategy
blackrock_etf_data %>%# selecting all character columns and finding distinct numberssummarize(across(where(is.character), n_distinct)) %>%# rename column rename(msci_esg_rating = sustainability_characteristics_msci_esg_fund_ratings_msci_esg_fund_rating_aaa_ccc) %>%# pivot into long format pivot_longer(cols =everything()) %>%#arrange from highest to lowestarrange(value %>%desc())
# A tibble: 12 × 2
name value
<chr> <int>
1 ticker 393
2 name 393
3 name_wo_ishares_etf 393
4 location 41
5 sub_asset_class 18
6 region 7
7 msci_esg_rating 7
8 asset_class 5
9 sustainable_classification 5
10 market 3
11 investment_style 2
12 is_esg 2
blackrock_etf_data %>%# select columns that are character data types and take out the columns discussed aboveselect(where(is.character), -ticker, -name, -name_wo_ishares_etf) %>%# for each column, find the unique values map(unique)
blackrock_etf_data %>%ggplot(aes(x = is_esg, fill = region)) +geom_bar()
This visualization shows the data set separated by the types of fund. It is colored (or filled) by the regions. Through this bar graph, we can see that North America holds the most counts of regular fund and ESG fund, and the total count of Regular Fund overall greatly outnumbers the total count of ESG fund.
This graph compares the distributions by region, and thereby shows North America as the largest net assets. This helps show which market may be the most robust.
`stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
This graph illustrates the gross expense ratios of reach region. There is not a clear similarity between the spread of each region, with North America clustered towards the left, and other funds towards the right. Most are clustering below .5%, which is a good sign for potential investors.
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
ℹ Use `spec()` to retrieve the full column specification for this data.
ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
This graph highlights the outliers in ESG_tilt and standard ETF. Tech companies seem to be outliers in both esg_etf, standard_etf, but not esg_tilt. This makes us question if tech companies performances will be if they are outliers in ESG_tilt also.
This graph breaks down by sector within these two largest funds. Generally, a greater count of technology companies are not included in standard only, although certain sectors look very even. This indicates that ESG funds are included in most sectors.
This box is flattened, which indicates that even the 75th percentile of funds is very small. We can therefore say that almost all of the ESG ETFs are in a few large outlier funds. Therefore, we can confidently focus on a few large funds, most likely tech funds, instead of looking at all of them.