#Get NVDA financial data for recent 3 years
library(quantmod)
NVDA = getFinancials("NVDA",auto.assign = FALSE)
NVDA.BS = viewFinancials(NVDA, type='BS', period='A')
NVDA.IS = viewFinancials(NVDA, type='IS', period='A')
NVDA.CF = viewFinancials(NVDA, type='CF', period='A')
#Get the financial data to calculate F-Score
TA = NVDA.BS[rownames(NVDA.BS)=="Total Assets",]
CA = NVDA.BS[rownames(NVDA.BS)=="Total Current Assets",]
CL = NVDA.BS[rownames(NVDA.BS)=="Total Current Liabilities",]
NCL = NVDA.BS[rownames(NVDA.BS)=="Total Long Term Debt",]
NI = NVDA.IS[rownames(NVDA.IS)=="Net Income",]
CFO = NVDA.CF[rownames(NVDA.CF)=="Cash from Operating Activities",]
SALES = NVDA.IS[rownames(NVDA.IS)=="Revenue",]
NUMSHARES = NVDA.BS[rownames(NVDA.BS)=="Total Common Shares Outstanding",]
GP = NVDA.IS[rownames(NVDA.IS)=="Gross Profit",]
#calculate financial ratio
ROA = NI/TA
TURN = SALES/TA
CR = CA/CL
LDE = NCL / TA
GM = GP/SALES
#conditions for fscore
F1 = as.integer(ROA[1]>0)
F2 = as.integer(CFO[1]>0)
F3 = as.integer((CFO-NI)[1]>0)
F4 = as.integer(NUMSHARES[1]-NUMSHARES[2]<=0)
F5 = as.integer(TURN[1]-TURN[2]>0)
F6 = as.integer(CR[1]-CR[2]>0)
F7 = as.integer(LDE[1]-LDE[2]<=0)
F8 = as.integer(GM[1]-GM[2]>0)
F9 = as.integer(ROA[1]-ROA[2]>0)
F = F1+F2+F3+F4+F5+F6+F7+F8+F9
#define function
getFScore <-function code="" p="">{
Company = getFinancials(code,auto.assign = FALSE)
Company.BS = viewFinancials(Company, type='BS', period='A')
Company.IS = viewFinancials(Company, type='IS', period='A')
Company.CF = viewFinancials(Company, type='CF', period='A')
TA = Company.BS[rownames(Company.BS)=="Total Assets",]
CA = Company.BS[rownames(Company.BS)=="Total Current Assets",]
CL = Company.BS[rownames(Company.BS)=="Total Current Liabilities",]
NCL = Company.BS[rownames(Company.BS)=="Total Long Term Debt",]
NI = Company.IS[rownames(Company.IS)=="Net Income",]
CFO = Company.CF[rownames(Company.CF)=="Cash from Operating Activities",]
SALES = Company.IS[rownames(Company.IS)=="Revenue",]
NUMSHARES = Company.BS[rownames(Company.BS)=="Total Common Shares Outstanding",]
GP = Company.IS[rownames(Company.IS)=="Gross Profit",]
ROA = NI/TA
TURN = SALES/TA
CR = CA/CL
LDE = NCL / TA
GM = GP/SALES
F1 = as.integer(ROA[1]>0)
F2 = as.integer(CFO[1]>0)
F3 = as.integer((CFO-NI)[1]>0)
F4 = as.integer(NUMSHARES[1]-NUMSHARES[2]<=0)
F5 = as.integer(TURN[1]-TURN[2]>0)
F6 = as.integer(CR[1]-CR[2]>0)
F7 = as.integer(LDE[1]-LDE[2]<=0)
F8 = as.integer(GM[1]-GM[2]>0)
F9 = as.integer(ROA[1]-ROA[2]>0)
F_SCORE = F1+F2+F3+F4+F5+F6+F7+F8+F9
return (F_SCORE)
}
codes <- c="" p="">CompanyFscores = c()
for(code in codes)
{
CompanyFscores=rbind(CompanyFscores,getFScore(code))
}
rownames(CompanyFscores) = codes
colnames(CompanyFscores) = "FScore"
CompanyFscores
#result
FScore
GOOG 6
IBM 5
MSFT 5
ORCL 5
NVDA 7
AAPL 5
-reference-
http://blog.naver.com/htk1019/220955604506->-function>
0 Comment to "How to calculate F-score in R"
Post a Comment