A desktop application that allows comparison over multiple filings, across companies.
XBurble is open-source desktop application written in Groovy, that allows a user to search across company earnings reports submitted to the EDGAR site in XBRL format. Once found, filings can be be viewed within the application, exported to Excel, and merged together for comparison purposes.
To run, the application requires the Java 6 runtime.
How It Works
Rather than using a database, XBurble plugs into the existing functionality of the EDGAR website, and uses web scraping to mimic the actions of browser. By doing this, it can reuse the search page, and connect to the RSS feed showing the latest filing submissions. It can also pull down and render filings stored online.
A brief demonstration of the application is available here.
The Start Screen – what the user sees when they first open the application. Notice the options to search filngs, load recently viewed filngs, view new filings, and to exit the application.
Searching for a Filing – search can be done by company name or CIK.
A Rendered Filing – different sections of the filing can be highlighted, and they will be rendered in the detail pane. Note the link to view the filing on the EDGAR website.
Reopening Recently Viewed Filings – a list of recently viewed filings ia stored for easy access. This list persists between restarts of the application.
New Submissions – this list is drawn from the SEC RSS feed.
Exporting to Excel – the export format is fairly authentic to how the filing is rendered within the application.
Merging Filings – filings from different companies can be merged. in order to view reported figures alongside each other.
Viewing the Raw Document Structure
Building the Code From Scratch
To check out the code, using the following command
svn checkout http://xburble.googlecode.com/svn/trunk/ xburble-read-only
This will create a local copy of the source code. To compile and package the code, run:
…in the directory containing the pom.xml file. This will generate a file in the /target directory, called xburble.jar. This jar file contains all the project dependencies, and is an executable jar – meaning that on most systems, you need only double-click on the jar to start the application. Failing this, you can use the following syntax to start from the command line:
java -classpath target/xburble.jar xburble.XBurble
XBurble is built using the following libraries, released under various open source license:
- TagSoup – A library for parsing HTML, allowing for non-standard and incomplete syntax. Used to connect to the EDGAR search screens, and scrape the contents.
- Groovy – A dynamic language for the Java Virtual Machine, that has support for functional programming. Has powerful libraries to assist in building Swing GUIs, and parsing XML.
- Apache POI – Permits creation of Excel files within the application.
- Java Swing Docking Framework – Used to create dynamic tabs in the main application screen.
- Glazed Lists – Used to add auto-complete support in various places in the application.
There a number of limitations and shortcomings to the project in it’s current state. The key areas for improvement are:
- Simplistic Merges – The original intention of the application was to allow close comparison between data points on filings submitted by different companies. As is, sections of each filing are simply rendered on top of each other – these type of data tables should be interleaved to make comparison easier.
- Rendering Issues – There is room for improvement around the HTML rendering – it has not been extensively tested on non-standard filings, and is prone to break when certain datapoints are missing. It also tends to get confused when too many contexts are supplied in the instance document.
- Improvements to the Excel Export Functionality – Large text blocks are not handled well by the export functionality, and the export format for merged filings is a little messy.
- Shortcomings in the XML Parsing – there are number of short cuts taken in the treatment of namespaces, that allow for ambiguous behaviour during parsing.
- Use of the Calculation and Definition Files – Currently, the calculation and definition files are not used. Both contain data that could inform the rendering of tables, and enrich the display of data.
- Charting Requirements – Balance sheets in particular lend themselves well to being rendered in charts, which would make cross company comparisons easier.
- Historical Analysis – There is currently no easy way to pull up multiple flings for the same company over historical dates, and observe changes year-on-year.
- Non-English Languages – Although XBRL has support for languages in non-English languages, the application currently only supports American English.
- Installer – An installer is required to make the application more user-friendly.