%classpath config resolver maven-public http://software.pschatzmann.ch/repository/maven-public/ %%classpath add mvn ch.pschatzmann:smart-edgar:LATEST ch.pschatzmann:jupyter-jdk-extensions:LATEST import ch.pschatzmann.display._ import ch.pschatzmann.edgar.base._ import ch.pschatzmann.edgar.reporting.company._ import ch.pschatzmann.edgar.dataload.rss.RSSDataSource import ch.pschatzmann.edgar.utils.Utils import ch.pschatzmann.edgar.base.Fact._ import ch.pschatzmann.edgar.dataload.online._ Displayers.setup %%time val company = new CompanyInformation("AAPL") %%time val company = new CompanyInformation("320193","10-K") %%time company.entries %%time var entries = company.entries("10-K") %%time var xbrl = company.getXBRL xbrl.isEmpty var entry = entries.get(0) entry.getForm entry.getTitle entry.getLink import scala.collection.JavaConverters._ entry.getLinksToDocuments.iterator.asScala.toSeq.foreach(r => println(r)) entry.getLinkToXbrl entry.getLinkBase %%time val xbrl = entry.getXBRL.get xbrl.isEmpty val values = xbrl.findValues("NetIncomeLoss") values.size import scala.collection.JavaConverters._ values.asScala.map(factValue => factValue.getAttributes).asJava import scala.collection.JavaConverters._ new CompanyInformation("320193","10-K").entries().asScala .map(e => (e.getForm, e.getAccessionNumber, e.getLinkToXbrl) ) .foreach(t => println(t) ) new CompanyInformation("320193","10-K") .getXBRL.findValues("NetIncomeLoss").asScala .map(factValue => factValue.getAttributes) .asJava %%time val values = new CompanyEdgarValuesEdgar(new CompanyInformation("320193")) .setFilter(new FilterYearly()) .setParameterNames("NetIncomeLoss","OperatingIncomeLoss","ResearchAndDevelopmentExpense", "CashAndCashEquivalentsAtCarryingValue","AvailableForSaleSecuritiesCurrent","AccountsReceivableNetCurrent", "Revenues","SalesRevenueNet","InventoryNet","AssetsCurrent","LiabilitiesCurrent","Assets","EarningsPerShareBasic", "StockholdersEquity") .addFormula("Revenue","Edgar.coalesce('Revenues', 'SalesRevenueNet')") .addFormula("QuickRatio","(CashAndCashEquivalentsAtCarryingValue + AccountsReceivableNetCurrent + AvailableForSaleSecuritiesCurrent) / LiabilitiesCurrent") .addFormula("CurrentRatio","AssetsCurrent / LiabilitiesCurrent") .addFormula("InventoryTurnover","Revenue / InventoryNet") .addFormula("NetProfitMargin","NetIncomeLoss / Revenue") .addFormula("SalesResearchRatio%","ResearchAndDevelopmentExpense / Revenue *100") .addFormula("NetIncomeResearchRatio%","ResearchAndDevelopmentExpense / NetIncomeLoss * 100") .addFormula("NetIncomeChange%", "NetIncomeLoss - Edgar.lag('NetIncomeLoss', -1) / Edgar.lag('NetIncomeLoss', -1) * 100 ") .addFormula("RevenueChange%", "Edgar.percentChange('Revenue')" ) .addFormula("ResearchAndDevelopmentChange%","Edgar.percentChange('ResearchAndDevelopmentExpense')" ) .removeParameterNames("Revenues","SalesRevenueNet") val table = values.getTable %%time val values = new CompanyEdgarValuesRest(new CompanyInformation("320193")) .setFilter(new FilterYearly()) .setParameterNames("NetIncomeLoss","OperatingIncomeLoss","ResearchAndDevelopmentExpense", "CashAndCashEquivalentsAtCarryingValue","AvailableForSaleSecuritiesCurrent","AccountsReceivableNetCurrent", "Revenues","SalesRevenueNet","InventoryNet","AssetsCurrent","LiabilitiesCurrent","Assets","EarningsPerShareBasic", "StockholdersEquity") .addFormula("Revenue","Edgar.coalesce('Revenues', 'SalesRevenueNet')") .addFormula("QuickRatio","(CashAndCashEquivalentsAtCarryingValue + AccountsReceivableNetCurrent + AvailableForSaleSecuritiesCurrent) / LiabilitiesCurrent") .addFormula("CurrentRatio","AssetsCurrent / LiabilitiesCurrent") .addFormula("InventoryTurnover","Revenue / InventoryNet") .addFormula("NetProfitMargin","NetIncomeLoss / Revenue") .addFormula("SalesResearchRatio%","ResearchAndDevelopmentExpense / Revenue *100") .addFormula("NetIncomeResearchRatio%","ResearchAndDevelopmentExpense / NetIncomeLoss * 100") .addFormula("NetIncomeChange%", "NetIncomeLoss - Edgar.lag('NetIncomeLoss', -1) / Edgar.lag('NetIncomeLoss', -1) * 100 ") .addFormula("RevenueChange%", "Edgar.percentChange('Revenue')" ) .addFormula("ResearchAndDevelopmentChange%","Edgar.percentChange('ResearchAndDevelopmentExpense')" ) .removeParameterNames("Revenues","SalesRevenueNet") val table = values.getTable