library("XML")
library("rvest")
## Loading required package: xml2
##
## Attaching package: 'rvest'
## The following object is masked from 'package:XML':
##
## xml
library("ggplot2")
library('dplyr')
##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
Data Extraction
nepse <- read_html('https://nepsealpha.com/trading-signals/funda/')
nepse_d <- nepse %>%
html_node(xpath = '//*[@id="funda-table"]') %>% html_table(fill = TRUE)
Cleaning
nepse_d$LTP <- as.numeric(nepse_d$LTP)
nepse_d$PE <- as.numeric(nepse_d$PE)
nepse_d$PB <- as.numeric(nepse_d$PB)
## Warning: NAs introduced by coercion
nepse_d$PEG <- as.numeric(nepse_d$PEG)
library(janitor)
##
## Attaching package: 'janitor'
## The following objects are masked from 'package:stats':
##
## chisq.test, fisher.test
nepse_cleaned <- clean_names(nepse_d)
pe_undervalued <- filter(nepse_cleaned,pe_vs_sector=="Undervalued")
names(nepse_cleaned)
## [1] "symbol" "ratios_summary"
## [3] "financial_strength" "sector"
## [5] "daily_gain" "ltp"
## [7] "pe" "pb"
## [9] "roe" "roa"
## [11] "peg" "discount_from_graham_number"
## [13] "pe_vs_sector" "pb_vs_sector"
## [15] "peg_vs_sector" "dividend_yield_vs_sector"
## [17] "roe_vs_sector" "yoy_growth_vs_sector"
## [19] "qoq_growth_vs_sector" "roa_vs_sector"
## [21] "dividend_yield" "payout_ratio"
three_undervalued<- filter(nepse_cleaned,pe_vs_sector=="Undervalued" & pb_vs_sector=="Undervalued" & peg_vs_sector=="Undervalued")
all_undervalued<- filter(nepse_cleaned,pe_vs_sector=="Undervalued" & pb_vs_sector=="Undervalued" & peg_vs_sector=="Undervalued", dividend_yield_vs_sector=="Undervalued", roe_vs_sector=="Undervalued")
all_undervalued$dividend_yield_num <- as.numeric(gsub("[\\%,]", "",all_undervalued$dividend_yield))
names(all_undervalued)
## [1] "symbol" "ratios_summary"
## [3] "financial_strength" "sector"
## [5] "daily_gain" "ltp"
## [7] "pe" "pb"
## [9] "roe" "roa"
## [11] "peg" "discount_from_graham_number"
## [13] "pe_vs_sector" "pb_vs_sector"
## [15] "peg_vs_sector" "dividend_yield_vs_sector"
## [17] "roe_vs_sector" "yoy_growth_vs_sector"
## [19] "qoq_growth_vs_sector" "roa_vs_sector"
## [21] "dividend_yield" "payout_ratio"
## [23] "dividend_yield_num"
drops <- c("financial_strength","pe_vs_sector", "pb_vs_sector", "peg_vs_sector", "dividend_yield_vs_sector", "roe_vs_sector","yoy_growth_vs_sector", "qoq_growth_vs_sector","roa_vs_sector")
all_undervalued <- all_undervalued[ , !(names(all_undervalued) %in% drops)]
filter(pe_undervalued,ratios_summary=="Strong")
## symbol ratios_summary financial_strength sector
## 1 KBL Strong NA Commercial Banks
## 2 MEGA Strong NA Commercial Banks
## 3 NBB Strong NA Commercial Banks
## 4 NBL Strong NA Commercial Banks
## 5 BOKL Strong NA Commercial Banks
## 6 NMB Strong NA Commercial Banks
## 7 PCBL Strong NA Commercial Banks
## 8 SANIMA Strong NA Commercial Banks
## 9 SBL Strong NA Commercial Banks
## 10 SRBL Strong NA Commercial Banks
## 11 GBBL Strong NA Development Banks
## 12 JBBL Strong NA Development Banks
## 13 MNBBL Strong NA Development Banks
## 14 SADBL Strong NA Development Banks
## 15 SHINE Strong NA Development Banks
## 16 GFCL Strong NA Finance
## 17 GMFIL Strong NA Finance
## 18 MFIL Strong NA Finance
## 19 RLFL Strong NA Finance
## 20 SIFC Strong NA Finance
## 21 BFC Strong NA Finance
## 22 KPCL Strong NA Hydro Power
## 23 NGPL Strong NA Hydro Power
## 24 HIDCL Strong NA INVESTMENT
## 25 SLICL Strong NA Life Insurance
## 26 PLIC Strong NA Life Insurance
## 27 HDL Strong NA Manufacturing And Processing
## 28 RMDC Strong NA Microfinance
## 29 SDLBSL Strong NA Microfinance
## 30 SKBBL Strong NA Microfinance
## 31 SMFBS Strong NA Microfinance
## 32 GILB Strong NA Microfinance
## 33 ILBS Strong NA Microfinance
## 34 MERO Strong NA Microfinance
## 35 SIC Strong NA Non Life Insurance
## 36 SIL Strong NA Non Life Insurance
## 37 NICL Strong NA Non Life Insurance
## 38 EIC Strong NA Non Life Insurance
## 39 PRIN Strong NA Non Life Insurance
## 40 IGI Strong NA Non Life Insurance
## daily_gain ltp pe pb roe roa peg discount_from_graham_number
## 1 0 % 312 21.4 2.3 11.97 % 1.28% 1.75 48%
## 2 0.33 % 302 21.7 2.2 11.48 % 1.33% 0.87 46%
## 3 -0.53 % 378 18.1 2.3 13.86 % 2.11% 20.94 36%
## 4 0 % 418 18.7 1.5 9.03 % 1.45% -5.06 13%
## 5 -0.66 % 301 16.4 1.8 12.02 % 1.54% 1.00 15%
## 6 -0.48 % 414 22.5 2.8 13.14 % 1.5% 1.33 66%
## 7 0.46 % 433 19.7 2.6 14.23 % 1.94% 1.12 50%
## 8 0 % 395 19.7 NA 14.87 % 1.46% 1.67 -
## 9 -0.71 % 419 16.3 2.3 16.3 % 0% 1.29 29%
## 10 -0.99 % 300 17.9 2.0 11.55 % 1.32% 1.97 25%
## 11 0 % 343 17.4 2.5 15.87 % 1.3% 0.78 38%
## 12 -0.38 % 262 17.5 2.0 12.29 % 1.21% 0.70 24%
## 13 -0.23 % 428 21.0 3.1 16.02 % 1.29% 1.44 70%
## 14 -0.42 % 237 20.8 1.8 9.11 % 0.83% -5.38 28%
## 15 0.75 % 270 18.9 1.9 11.16 % 1.33% 1.38 28%
## 16 1.83 % 278 23.4 1.8 8.05 % 0.92% -5.07 37%
## 17 0.85 % 237 22.4 1.5 7.67 % 1.35% -1.27 23%
## 18 2.25 % 500 10.4 3.0 35.02 % 4.44% 0.42 17%
## 19 -0.41 % 245 20.3 1.7 9.77 % 1.72% -3.56 25%
## 20 0 % 252 22.2 2.0 8.94 % 1.55% 0.89 39%
## 21 0 % 177 21.4 1.6 8.1 % 1.81% 0.86 23%
## 22 7.84 % 330 30.2 2.8 9.66 % 5.12% 1.21 92%
## 23 9.38 % 315 43.0 2.9 6.84 % 4.58% 1.72 137%
## 24 -0.41 % 487 86.8 4.5 6.02 % 4.78% 3.47 315%
## 25 -0.95 % 838 60.8 6.3 10.65 % 2.98% 2.43 313%
## 26 -0.45 % 876 63.0 6.7 10.41 % 2.27% 2.52 332%
## 27 -1.4 % 4565 43.3 19.4 46.83 % 29.23% 1.73 511%
## 28 0.34 % 1179 36.0 4.4 13.78 % 3.22% 2.87 166%
## 29 2.36 % 1648 43.7 12.1 34.41 % 3.59% 0.00 384%
## 30 -0.88 % 1695 37.6 6.5 18.88 % 2.28% 1.64 230%
## 31 -1.87 % 2630 49.4 17.0 40.16 % 3.71% -3.78 510%
## 32 -2.13 % 2799 45.2 15.2 41.54 % 3.97% 1.81 453%
## 33 -3.19 % 1820 41.2 11.7 33.43 % 4.05% 1.65 363%
## 34 4.3 % 1796 49.5 12.1 28.28 % 3.68% 2.59 417%
## 35 2.1 % 1700 39.4 6.9 19.3 % 21.2% 2.39 248%
## 36 -0.4 % 1233 35.7 5.2 15.7 % 15.7% 3.68 187%
## 37 0.5 % 799 39.4 4.9 12.46 % 13.27% 1.58 194%
## 38 -1 % 790 41.1 4.9 12.66 % 12.66% 1.65 199%
## 39 0.21 % 970 36.6 4.7 13.71 % 13.71% 2.81 177%
## 40 0.17 % 1155 45.5 7.4 17.95 % 17.95% 1.82 287%
## pe_vs_sector pb_vs_sector peg_vs_sector dividend_yield_vs_sector
## 1 Undervalued Undervalued Undervalued Undervalued
## 2 Undervalued Undervalued Undervalued Undervalued
## 3 Undervalued Undervalued Overvalued Overvalued
## 4 Undervalued Undervalued Undervalued Undervalued
## 5 Undervalued Undervalued Undervalued Undervalued
## 6 Undervalued Overvalued Undervalued Undervalued
## 7 Undervalued Overvalued Undervalued Undervalued
## 8 Undervalued -- Undervalued Undervalued
## 9 Undervalued Undervalued Undervalued Undervalued
## 10 Undervalued Undervalued Undervalued Overvalued
## 11 Undervalued Overvalued Undervalued Undervalued
## 12 Undervalued Undervalued Undervalued Undervalued
## 13 Undervalued Overvalued Overvalued Undervalued
## 14 Undervalued Undervalued Undervalued Undervalued
## 15 Undervalued Undervalued Undervalued Undervalued
## 16 Undervalued Undervalued Undervalued Undervalued
## 17 Undervalued Undervalued Undervalued Undervalued
## 18 Undervalued Overvalued Undervalued Undervalued
## 19 Undervalued Undervalued Undervalued Undervalued
## 20 Undervalued Undervalued Undervalued Undervalued
## 21 Undervalued Undervalued Undervalued --
## 22 Undervalued Undervalued Undervalued --
## 23 Undervalued Undervalued Undervalued Undervalued
## 24 Undervalued Undervalued Undervalued Undervalued
## 25 Undervalued Undervalued Undervalued Undervalued
## 26 Undervalued Undervalued Undervalued Undervalued
## 27 Undervalued Overvalued Undervalued Undervalued
## 28 Undervalued Undervalued Undervalued Undervalued
## 29 Undervalued Overvalued -- Undervalued
## 30 Undervalued Undervalued Undervalued Undervalued
## 31 Undervalued Overvalued Undervalued Undervalued
## 32 Undervalued Overvalued Undervalued Undervalued
## 33 Undervalued Overvalued Undervalued Undervalued
## 34 Undervalued Overvalued Undervalued Undervalued
## 35 Undervalued Overvalued Undervalued Undervalued
## 36 Undervalued Undervalued Overvalued Undervalued
## 37 Undervalued Undervalued Undervalued Undervalued
## 38 Undervalued Undervalued Undervalued Undervalued
## 39 Undervalued Undervalued Overvalued Undervalued
## 40 Undervalued Overvalued Undervalued Overvalued
## roe_vs_sector yoy_growth_vs_sector qoq_growth_vs_sector roa_vs_sector
## 1 Undervalued NA NA NA
## 2 Overvalued NA NA NA
## 3 Undervalued NA NA NA
## 4 Overvalued NA NA NA
## 5 Undervalued NA NA NA
## 6 Undervalued NA NA NA
## 7 Undervalued NA NA NA
## 8 Undervalued NA NA NA
## 9 Undervalued NA NA NA
## 10 Undervalued NA NA NA
## 11 Undervalued NA NA NA
## 12 Undervalued NA NA NA
## 13 Undervalued NA NA NA
## 14 Undervalued NA NA NA
## 15 Undervalued NA NA NA
## 16 Overvalued NA NA NA
## 17 Overvalued NA NA NA
## 18 Undervalued NA NA NA
## 19 Undervalued NA NA NA
## 20 Undervalued NA NA NA
## 21 Undervalued NA NA NA
## 22 Undervalued NA NA NA
## 23 Undervalued NA NA NA
## 24 Undervalued NA NA NA
## 25 Undervalued NA NA NA
## 26 Undervalued NA NA NA
## 27 Undervalued NA NA NA
## 28 Overvalued NA NA NA
## 29 Undervalued NA NA NA
## 30 Undervalued NA NA NA
## 31 Undervalued NA NA NA
## 32 Undervalued NA NA NA
## 33 Undervalued NA NA NA
## 34 Undervalued NA NA NA
## 35 Undervalued NA NA NA
## 36 Undervalued NA NA NA
## 37 Undervalued NA NA NA
## 38 Undervalued NA NA NA
## 39 Undervalued NA NA NA
## 40 Undervalued NA NA NA
## dividend_yield payout_ratio
## 1 4.49% 96 %
## 2 4.32% 94 %
## 3 2.23% 40 %
## 4 3.83% 72 %
## 5 5.32% 87 %
## 6 3.91% 88 %
## 7 3.46% 68 %
## 8 3.44% 68 %
## 9 3.58% 58 %
## 10 2.76% 49 %
## 11 4.14% 72 %
## 12 3.82% 67 %
## 13 3.62% 76 %
## 14 3.78% 79 %
## 15 4.81% 91 %
## 16 4.32% 101 %
## 17 4.81% 108 %
## 18 4.70% 49 %
## 19 4.30% 87 %
## 20 4.18% 93 %
## 21 0.00% 0 %
## 22 0.00% 0 %
## 23 3.34% 144 %
## 24 2.46% 214 %
## 25 1.26% 76 %
## 26 1.71% 108 %
## 27 2.19% 95 %
## 28 1.70% 61 %
## 29 1.21% 53 %
## 30 1.55% 58 %
## 31 0.80% 40 %
## 32 1.03% 47 %
## 33 0.82% 34 %
## 34 0.99% 49 %
## 35 5.06% 200 %
## 36 1.28% 46 %
## 37 1.25% 49 %
## 38 1.07% 44 %
## 39 1.09% 40 %
## 40 0.58% 27 %
filter(all_undervalued,ratios_summary=="Strong")
## symbol ratios_summary sector daily_gain ltp pe pb roe
## 1 KBL Strong Commercial Banks 0 % 312 21.4 2.3 11.97 %
## 2 BOKL Strong Commercial Banks -0.66 % 301 16.4 1.8 12.02 %
## 3 SBL Strong Commercial Banks -0.71 % 419 16.3 2.3 16.3 %
## 4 JBBL Strong Development Banks -0.38 % 262 17.5 2.0 12.29 %
## 5 SADBL Strong Development Banks -0.42 % 237 20.8 1.8 9.11 %
## 6 SHINE Strong Development Banks 0.75 % 270 18.9 1.9 11.16 %
## 7 RLFL Strong Finance -0.41 % 245 20.3 1.7 9.77 %
## 8 SIFC Strong Finance 0 % 252 22.2 2.0 8.94 %
## 9 NGPL Strong Hydro Power 9.38 % 315 43.0 2.9 6.84 %
## 10 HIDCL Strong INVESTMENT -0.41 % 487 86.8 4.5 6.02 %
## 11 SLICL Strong Life Insurance -0.95 % 838 60.8 6.3 10.65 %
## 12 PLIC Strong Life Insurance -0.45 % 876 63.0 6.7 10.41 %
## 13 SKBBL Strong Microfinance -0.88 % 1695 37.6 6.5 18.88 %
## 14 NICL Strong Non Life Insurance 0.5 % 799 39.4 4.9 12.46 %
## 15 EIC Strong Non Life Insurance -1 % 790 41.1 4.9 12.66 %
## roa peg discount_from_graham_number dividend_yield payout_ratio
## 1 1.28% 1.75 48% 4.49% 96 %
## 2 1.54% 1.00 15% 5.32% 87 %
## 3 0% 1.29 29% 3.58% 58 %
## 4 1.21% 0.70 24% 3.82% 67 %
## 5 0.83% -5.38 28% 3.78% 79 %
## 6 1.33% 1.38 28% 4.81% 91 %
## 7 1.72% -3.56 25% 4.30% 87 %
## 8 1.55% 0.89 39% 4.18% 93 %
## 9 4.58% 1.72 137% 3.34% 144 %
## 10 4.78% 3.47 315% 2.46% 214 %
## 11 2.98% 2.43 313% 1.26% 76 %
## 12 2.27% 2.52 332% 1.71% 108 %
## 13 2.28% 1.64 230% 1.55% 58 %
## 14 13.27% 1.58 194% 1.25% 49 %
## 15 12.66% 1.65 199% 1.07% 44 %
## dividend_yield_num
## 1 4.49
## 2 5.32
## 3 3.58
## 4 3.82
## 5 3.78
## 6 4.81
## 7 4.30
## 8 4.18
## 9 3.34
## 10 2.46
## 11 1.26
## 12 1.71
## 13 1.55
## 14 1.25
## 15 1.07
library(writexl)
## Warning: package 'writexl' was built under R version 4.0.5
write_xlsx(pe_undervalued,"C:/Users/Dell/Desktop/NEPSE/PE undervalued.xlsx")
write_xlsx(all_undervalued,"C:/Users/Dell/Desktop/NEPSE/ALL undervalued.xlsx")
write_xlsx(nepse_d,"C:/Users/Dell/Desktop/NEPSE/Nepse today.xlsx")
write_xlsx(nepse_d, "C:/Users/Dell/Desktop/NEPSE/NEPSE today.xlsx")
banks <- filter(nepse_cleaned, nepse_cleaned$sector== "Commercial Banks")
NEPSE_Extract <- list("NEPSE TODAY" = nepse_d, "BANKS" = banks, "All undervalued" = all_undervalued,"three_undervalued"=three_undervalued, "pe_undervalued" = pe_undervalued ) #assume sheet1 and sheet2 are data frames
write_xlsx(NEPSE_Extract, "C:/Users/Dell/Desktop/NEPSE/NEPSE_Extract.xlsx")
Note that the echo = FALSE parameter was added to the code chunk to prevent printing of the R code that generated the plot.