internal CompanyAnnualData PopulateFinancialStatement(CompanyAnnualFilterItem item, CompanyAnnualData ann) { ann.CostOfDebt = GetAvgValue(item.CostOfDebt); ann.SharesOutstanding = GetMaxValue(item.SharesOutstanding); return ann; }
public void UpdateCompanyAnnual(CompanyAnnualData comp) { if (CompanyAnnualExists(comp.Symbol, comp.Year)) { _dao.UpdateCompanyAnnual(comp); } else if (comp.SharesOutstanding != 0) { _dao.InsertCompanyAnnual(comp); } }
public CompanyAnnualData Populate(XbrlDocument xbrlDoc, string symbol, int year) { CompanyAnnualData ann = new CompanyAnnualData(); ann.Symbol = symbol; ann.Year = year; CompanyAnnualFilterItem item = new CompanyAnnualFilterItem(); foreach (XbrlFragment frag in xbrlDoc.XbrlFragments) { foreach (Item xbrlItem in frag.Facts) { if (xbrlItem.ContextRef.InstantDate.Year == ann.Year) { if (!xbrlItem.Type.Name.Equals("monetaryItemType")) { item = CheckItem(xbrlItem, item); } } } } ann = PopulateFinancialStatement(item, ann); if (ann.SharesOutstanding < 0) { ann.SharesOutstanding = ann.SharesOutstanding * -1; } if (ann.SharesOutstanding < 1000) { ann.SharesOutstanding = ann.SharesOutstanding * 1000000; } else if (ann.SharesOutstanding < 1000000) { ann.SharesOutstanding = ann.SharesOutstanding * 1000; } return ann; }
public void ProcessXbrlInstanceDocument(string xmlUrl, Dictionary<string, List<string>> xbrlTaxonomyTree) { JeffFerguson.Gepsio.XbrlDocument xbrlDoc = new XbrlDocument(); xbrlDoc.Load(xmlUrl); //AddXbrlNodes(xbrlDoc); int yearsToLoad = 3; string fileName = System.IO.Path.GetFileNameWithoutExtension(xmlUrl); string tickerSymbol = fileName.Split(new[] { '-' })[0]; int year = GetFiscalYear(tickerSymbol, xbrlDoc.XbrlFragments[0]); IncomeStatement incToAdd = new IncomeStatement(); BalanceSheet balToAdd = new BalanceSheet(); CompanyAnnualData compAnnToAdd = new CompanyAnnualData(); Dictionary<string, Object> yahooStats = GetYahooStatistics(tickerSymbol); CreateCompanyObject(tickerSymbol, xbrlDoc, yahooStats); for (int y = year; y > year - yearsToLoad; y--) { XbrlIncomeStatementFilter incFilter = new XbrlIncomeStatementFilter(); XbrlBalanceSheetFilter bsFilter = new XbrlBalanceSheetFilter(); XbrlCompanyAnnualFilter compAnFilter = new XbrlCompanyAnnualFilter(); incToAdd = incFilter.Populate(this, xbrlDoc, tickerSymbol, y, xbrlTaxonomyTree); balToAdd = bsFilter.Populate(xbrlDoc, tickerSymbol, y, xbrlTaxonomyTree); compAnnToAdd = compAnFilter.Populate(xbrlDoc, tickerSymbol, y); compAnnToAdd.LeveredBeta = Convert.ToDecimal(yahooStats["Beta"]); compAnnToAdd.DividendYield = Convert.ToDecimal(yahooStats["DividendYield"]); IncomeStatementBL.Instance.UpdateIncomeStatement(incToAdd); BalanceSheetBL.Instance.UpdateBalanceSheet(balToAdd); CompanyAnnualDataBL.Instance.UpdateCompanyAnnual(compAnnToAdd); } }
private static void SetCompanyAnnualParameters(CompanyAnnualData comp, MySqlParameter[] parms) { parms[0].Value = comp.Symbol; parms[1].Value = comp.Year; parms[2].Value = comp.CostOfDebt; parms[3].Value = comp.LeveredBeta; parms[4].Value = comp.SharesOutstanding; parms[5].Value = comp.DividendYield; }
private CompanyAnnualData ConvertReaderToCompanyAnnualObject(MySqlDataReader rdr) { CompanyAnnualData cmp = new CompanyAnnualData(); cmp.Symbol = MySqlHelper.ConvertReaderToString(rdr, "SYMBOL"); cmp.Year = MySqlHelper.ConvertReaderToInt(rdr, "YEAR"); cmp.CostOfDebt = MySqlHelper.ConvertReaderToDecimal(rdr, "COST_OF_DEBT"); cmp.LeveredBeta = MySqlHelper.ConvertReaderToDecimal(rdr, "LEVERED_BETA"); cmp.SharesOutstanding = MySqlHelper.ConvertReaderToDecimal(rdr, "SHARES_OUTSTANDING"); cmp.DividendYield = MySqlHelper.ConvertReaderToDecimal(rdr, "DIVIDEND_YIELD"); return cmp; }
public void UpdateCompanyAnnual(CompanyAnnualData comp) { MySqlParameter[] parms = GetCompanyAnnualParameters(); SetCompanyAnnualParameters(comp, parms); using (MySqlConnection conn = new MySqlConnection(MySqlHelper.SV_CONN_STRING)) { conn.Open(); MySqlHelper.ExecuteNonQuery(conn, SQL_UPDATE_COMPANYANNUAL, parms); } }
public void PopulateCompanyFinancialStatisticsFromStatements(CompanyFinancialStatistics finStats, IncomeStatement inc, BalanceSheet bs, CompanyAnnualData cad) { finStats.BookValuePerShare = bs.ShareholdersEquity / cad.SharesOutstanding; finStats.DebtToEquity = bs.Debt / bs.ShareholdersEquity; finStats.ProfitMargin = inc.NetIncome / inc.Revenue; finStats.ReturnOnAssets = inc.NetIncome / bs.TotalAssets; if (bs.ShareholdersEquity == 0) { finStats.ReturnOnEquity = 0; } else { finStats.ReturnOnEquity = inc.NetIncome / bs.ShareholdersEquity; } finStats.RevenuePerShare = inc.Revenue / cad.SharesOutstanding; finStats.TotalDebt = bs.Debt; }
private void EnterFinancialData(IncomeStatementCollection incs, BalanceSheetCollection bals, CompanyAnnualData cad, int year, int yearsToLoad) { CompanyAnnualDataBL.Instance.UpdateCompanyAnnual(cad); for (int y = year; y > year - yearsToLoad; y--) { IncomeStatementBL.Instance.UpdateIncomeStatement(incs.Find(y)); BalanceSheetBL.Instance.UpdateBalanceSheet(bals.Find(y)); } }