02/05/2017

How to calculate F-score in R

Click and see the complete code


#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

Share this

Tag :

0 Comment to "How to calculate F-score in R"

Post a Comment