Thinking XML: Analyze financial reporting using XBRL

Learn to interpret Extensible Business Reporting Language well enough to make sense of financial filings

Thanks to recent events, the world turns its eyes to Wall Street. One of the hot topics is how to increase the transparency of descriptions of business activity and financial results. The financial sector and the SEC have long approached this problem with XBRL, an XML language for business reports. XBRL uses a variety of XML technologies, including XLink to provide rich detail for financial information. Learn to interpret and analyze financial report information in XBRL, using an actual U.S. Securities and Exchange Commission report as an example.

Share:

Uche Ogbuji (uche@ogbuji.net), Partner, Zepheira, LLC

Photo of Uche OgbujiUche Ogbuji is a partner at Zepheira, LLC, a solutions firm specializing in the next generation of Web technologies. Mr. Ogbuji is lead developer of 4Suite, an open source platform for XML, RDF, and knowledge-management applications, and its successor Akara. He is also lead on the Jacqard agile methodology for team Web development, and the Versa RDF query language. He is a Computer Engineer and writer born in Nigeria, living and working in Boulder, Colorado, USA. You can find more about Mr. Ogbuji at his Weblog Copia.



06 January 2009

Also available in Chinese Russian Japanese

Anyone who follows news of Wall Street and other markets worldwide has heard of companies who announced profits or losses that lead analysts and traders to react, buying or selling more of that company's shares. Some of the most anxious times for any company are the preparation and aftermath periods of these announcements. Executives issue press releases, lead conference calls with analysts and press, and often announce related activities. But at the heart of all this activity is the formal report, the financial statement that goes to the regulator (in the U.S., the Securities and Exchange Commission, or SEC) These reports have their own technical language and marketplace semantics, and must be carefully crafted to match standard requirements and conventions.

Frequently used acronyms

  • HTML: Hypertext Markup Language
  • SGML: Standard Generalized Markup Language
  • W3C: World Wide Web Consortium
  • XML: Extensible Markup Language

You can find a treasure trove of information on commerce activity and trends in formal business reports, and the financial services industry moved rapidly to take advantage of XML to standardize the format for exchanging such financial information in the form of Extensible Business Reporting Language (XBRL). XBRL is an open, royalty-free standard for expressing business reports and related semantics, with a mature current version (2.1, dating from April, 2005). XBRL comes under the constant custodianship of XBRL International, Inc. (XII), an international non-profit consortium of about 450 major companies, government agencies, and non-governmental organizations (NGOs). In their own words (from the XBRL home page):

XBRL is a language for the electronic communication of business and financial data which is revolutionising business reporting around the world. It provides major benefits in the preparation, analysis and communication of business information. It offers cost savings, greater efficiency and improved accuracy and reliability to all those involved in supplying or using financial data.... The idea behind [XBRL] is simple. Instead of treating financial information as a block of text - as in a standard internet page or a printed document - it provides an identifying tag for each individual item of data. This is computer readable. For example, company net profit has its own unique tag.

Certainly XBRL is gaining traction through sheer force of law. As of December, 2008, the SEC requires the largest companies to file financial statements, particularly annual 10-K and quarterly 10-Q financial reports using XBRL. By the end of 2009 this mandate will spread to most Fortune 1500 companies, and by the end of 2010 it will cover all public companies.

I've touched on XBRL earlier in this column, in "A glimpse into XML in the financial services industry" (see Resources for a link to this article). Since then, the specification has gained in importance, especially with all the interest in transparency of corporate reporting, and its connection to financial services. In this article, I take a close look at the XBRL format to give developers a feel for the key constructs.

XBRL in its natural habitat

Typical usage of XBRL has several aspects. XBRL documents rise on a foundation of semantics organized into taxonomies and other metadata, using XLink. These taxonomies are the mechanism for semantic transparency in XBRL, referencing industry and global financial reporting standards, including one maintained by XII itself—Global Ledger Framework. The reports are instance documents incorporating these semantics, conveying financial information (business facts in XBRL parlance) in a carefully controlled context. The context is an unambiguous reference to, for example, the company or individual to whom a business fact pertains, relevant units of measure, dates and times, any related facts, references to definitions in taxonomies, and any other metadata that makes clear the nuances of the facts reported in an XBRL instance.

Rather than a toy example of a report, I decided to go with something meaty. I'll use an excerpt from the IBM® 10-Q report to the SEC for the third fiscal quarter of 2008. An overall SEC filing as uploaded to their EDGAR system is a public-key infrastructure (PKI) signature block containing an SGML document which contains both HTML and XBRL versions of the report, as illustrated in Figure 1.

Figure 1. Structure of an SEC filing
Diagram: structure of an SEC filing

In the report I examined, there are 7 text sections, one of HTML and 6 of XBRL. Each has a file name, specified in the FILENAME element. In effect, this is an archived file format, not unlike UNIX™ TAR, or ZIP without the compression. Table 1 is a summary of these embedded documents.

Table 1. Embedded sections of IBM's Q3 10-Q filing
filenamecontentrole
a08-28338_18k.htmHTMLText of 10-Q report form
ibm-20081028.xmlXBRL instanceThe main business facts of the report
ibm-20081028.xsdW3C XML schema with embedded XLinkXBRL definition with addition of IBM-specific constructs
ibm-20081028_cal.xmlXLink linkbaseTaxonomy of details related to calculation of values
ibm-20081028_def.xmlXLink linkbaseTaxonomy links providing basic definitions of business facts
ibm-20081028_lab.xmlXLink linkbaseTaxonomy links providing XLink labels for business facts, which support out-of-band linking
ibm-20081028_pre.xmlXLink linkbaseTaxonomy links providing additional hints for presenting business facts

A first look at the XML

Listing 1 is an excerpt from ibm-20081028.xml, one of the embedded XBRL files, and the one representing the main report.

Listing 1. Main business facts XBRL from IBM 10-Q filing
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<xbrli:xbrl
  xmlns:xbrli="http://www.xbrl.org/2003/instance"
  xmlns:dei="http://xbrl.us/dei/2008-03-31"
  xmlns:link="http://www.xbrl.org/2003/linkbase"
  xmlns:us-gaap="http://xbrl.us/us-gaap/2008-03-31"
  xmlns:xlink="http://www.w3.org/1999/xlink"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xbrl.org/2006/xbrldi http://www.xbrl.org/2006/xbrldi-2006.xsd">
  <link:schemaRef xlink:href="ibm-20081028.xsd" xlink:type="simple"/>
  <xbrli:context id="D-20073Q">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0000051143</xbrli:identifier>
    </xbrli:entity>
    <xbrli:period>
      <xbrli:startDate>2007-07-01</xbrli:startDate>
      <xbrli:endDate>2007-09-30</xbrli:endDate>
    </xbrli:period>
  </xbrli:context>
  <xbrli:context id="D-20083Q">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0000051143</xbrli:identifier>
    </xbrli:entity>
    <xbrli:period>
      <xbrli:startDate>2008-07-01</xbrli:startDate>
      <xbrli:endDate>2008-09-30</xbrli:endDate>
    </xbrli:period>
  </xbrli:context>
  <xbrli:unit id="Shares">
    <xbrli:measure>xbrli:shares</xbrli:measure>
  </xbrli:unit>
  <xbrli:unit id="USD-DecimalMinus6">
    <xbrli:measure>iso4217:USD</xbrli:measure>
  </xbrli:unit>
  <dei:EntityCommonStockSharesOutstanding contextRef="I-2008-09-30" decimals="0" 
	unitRef="Shares">1343457986</dei:EntityCommonStockSharesOutstanding>
  <dei:EntityRegistrantName contextRef="D-20083Q">International Business Machines 
	Corporation</dei:EntityRegistrantName>
  <dei:CurrentFiscalYearEndDate 
	contextRef="D-20083Q">--12-31</dei:CurrentFiscalYearEndDate>
  <dei:DocumentType contextRef="D-20083Q">10-Q</dei:DocumentType>
  <dei:DocumentReportType contextRef="D-20083Q">Transition 
	Report</dei:DocumentReportType>
  <us-gaap:SalesRevenueServicesNet contextRef="D-20083Q" decimals="-6" 
       unitRef="USD-DecimalMinus6">14773000000</us-gaap:SalesRevenueServicesNet>
  <us-gaap:SalesRevenueServicesNet contextRef="D-20073Q" decimals="-6" 
       unitRef="USD-DecimalMinus6">13657000000</us-gaap:SalesRevenueServicesNet>
  <us-gaap:SalesRevenueGoodsNet contextRef="D-20083Q" decimals="-6" 
	unitRef="USD-DecimalMinus6">9892000000</us-gaap:SalesRevenueGoodsNet>
  <us-gaap:SalesRevenueGoodsNet contextRef="D-20073Q" decimals="-6" 
	unitRef="USD-DecimalMinus6">9833000000</us-gaap:SalesRevenueGoodsNet>
  <us-gaap:Revenues contextRef="D-20083Q" decimals="-6" id="f7" 
	unitRef="USD-DecimalMinus6">25302000000</us-gaap:Revenues>
  <us-gaap:Revenues contextRef="D-20073Q" decimals="-6" 
	unitRef="USD-DecimalMinus6">24119000000</us-gaap:Revenues>
  <us-gaap:CostOfServices contextRef="D-20083Q" decimals="-6" 
	unitRef="USD-DecimalMinus6">10230000000</us-gaap:CostOfServices>
  <us-gaap:CostOfServices contextRef="D-20073Q" decimals="-6" 
	unitRef="USD-DecimalMinus6">9855000000</us-gaap:CostOfServices>
  <us-gaap:CostOfGoodsSold contextRef="D-20083Q" decimals="-6" 
	unitRef="USD-DecimalMinus6">3789000000</us-gaap:CostOfGoodsSold>
  <us-gaap:CostOfGoodsSold contextRef="D-20073Q" decimals="-6" 
	unitRef="USD-DecimalMinus6">3960000000</us-gaap:CostOfGoodsSold>
  <us-gaap:GrossProfit contextRef="D-20083Q" decimals="-6" id="f9" 
	unitRef="USD-DecimalMinus6">10959000000</us-gaap:GrossProfit>
  <us-gaap:GrossProfit contextRef="D-20073Q" decimals="-6" 
	unitRef="USD-DecimalMinus6">9956000000</us-gaap:GrossProfit>
</xbrli:xbrl>

The first section includes constructs to set the business context. It's all very well to express the business fact "net revenue from sales of services is $14,773,000,000", but it's next to meaningless without basic context. Is that for an entire year, or for a quarter, or for a week? Is it for a quarter in 1968 or in 2008 (because of inflation, that makes an enormous difference)? For my small consulting company such a revenue figure would be astonishing, but of course the context here is that it's for IBM. XBRL provides the tools to establish all this context for business facts. The first two xbrli:context elements establish temporal context used for business facts—D-20073Q, meaning the third quarter of fiscal 2007 and D-20083Q, meaning the third quarter of fiscal 2008. These two periods are used to provide year-over-year comparisons, which are very important in financial analysis. A net revenue figure of $15 billion might be good if the figure for the corresponding period in the prior year was $10 billion, and might be bad compared to $20 billion.

The next two xbrli:context elements define units of measure. One is bog simple—just a count of shares, but even the simple things are often contextualized to a very fine degree. You don't want a sharp operator manipulating the definition of shares in the cause of a deceitful report, so the standard XBRL taxonomy itself provides a definition of a unit of shares. The other unit is the US Dollar, as defined in ISO 4217, the international standard describing three-letter currency codes ("USD" for the US Dollar). The unit in this case is specialized to express that values are rounded to the nearest million. It's called "USD-DecimalMinus6" because it is equivalent to multiplying the value by 10 to the power -6, removing the fractional portion, and then restoring the multiplier. Again, XBRL allows reporters and analysts to take pains to clarify such details.

Then come the business facts themselves, and here you can learn all you like about IBM's financial performance. For example, the company had 1,343,457,986 outstanding shares, and net revenue from sales of services of $14,773,000,000 in the third quarter of fiscal 2008, compared to $13,657,000,000 for the same period in 2007, a year-over-year gain of $116,000,000. Listing 1 is a pretty small excerpt from the report, which lists a huge number of business facts. Notice the use of namespace referring to the XBRL representation of U.S. generally accepted accounting principles (GAAP), which look to place accounting statements on an even footing nationwide, and to provide a basis for international standardization.


Even more details—the taxonomies

You've had a glimpse at the attention given to business context in XBRL, but the bits in Listing 1 are the merest fraction of it all. The real microscopic (and dull) detail that anchors the business facts spills over into the taxonomies, which are 3 of the 7 files in the filing. I'll focus on the taxonomy files focusing on reference and labels. Listing 2 is an excerpt from ibm-20081028_def.xml, which provides links to formal definitions of terms.

Listing 2. Excerpt from taxonomy of definitions for IBM 10-Q filing
<?xml version="1.0" encoding="utf-8"?>
<linkbase
  xmlns="http://www.xbrl.org/2003/linkbase"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xmlns:xlink="http://www.w3.org/1999/xlink"
  xmlns:xbrldt="http://xbrl.org/2005/xbrldt"
  xsi:schemaLocation="http://www.xbrl.org/2003/linkbase 
	http://www.xbrl.org/2003/xbrl-linkbase-2003-12-31.xsd 
	http://xbrl.org/2005/xbrldt  
	http://www.xbrl.org/2005/xbrldt-2005.xsd">
  <roleRef xlink:type="simple"
    xlink:href="ibm-20081028.xsd#IBMConsolidatedStatementOfEarnings"
    roleURI="http://www.ibm.com/us/fr/ci/ibm/IBMConsolidatedStatementOfEarnings" />
  <roleRef xlink:type="simple"
    xlink:href="ibm-20081028.xsd#DocumentInformation"
    roleURI="http://www.ibm.com/us/fr/ci/DocumentInformation" />
  <roleRef xlink:type="simple"
    xlink:href="ibm-20081028.xsd#EntityInformation"
    roleURI="http://www.ibm.com/us/fr/ci/EntityInformation" />
  <definitionLink xlink:type="extended"
    xlink:role="http://www.ibm.com/us/fr/ci/ibm/IBMConsolidatedStatementOfEarnings">
    <loc xlink:type="locator"
      xlink:label="us-gaap_StatementLineItems"
      xlink:href="http://xbrl.us/USG/elts/us-gaap.xsd#us-gaap_StatementLineItems"/>
    <loc xlink:type="locator"
      xlink:label="us-gaap_StatementTable"
      xlink:href="http://xbrl.us/USG/elts/us-gaap.xsd#us-gaap_StatementTable" />
    <definitionArc xlink:type="arc"
      xlink:arcrole="http://xbrl.org/int/dim/arcrole/all"
      xlink:from="us-gaap_StatementLineItems"
      xlink:to="us-gaap_StatementTable"
      order="1"
      use="optional"
      xbrldt:contextElement="segment" />
  </definitionLink>
  <definitionLink xlink:type="extended"
    xlink:role="http://www.ibm.com/us/fr/ci/EntityInformation">
    <loc xlink:type="locator"
      xlink:label="dei_EntityInformationLineItems"
      xlink:href="http://xbrl.us/(USG)/non-gaap/(XSD)#dei_EntityInformationLineItems" />
    <loc xlink:type="locator"
      xlink:label="ibm_EntitiesTable"
      xlink:href="ibm-20081028.xsd#ibm_EntitiesTable" />
    <definitionArc xlink:type="arc"
      xlink:arcrole="http://xbrl.org/int/dim/arcrole/all"
      xlink:from="dei_EntityInformationLineItems"
      xlink:to="ibm_EntitiesTable"
      order="27"
      use="optional"
      xbrldt:contextElement="segment" />
    <loc xlink:type="locator"
      xlink:label="dei_EntityCommonStockSharesOutstanding"
xlink:href="http://xbrl.us/USG/non-gaap/dei.xsd#dei_EntityCommonStockSharesOutstanding"/>
    <definitionArc xlink:type="arc"
      xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member"
      xlink:from="dei_EntityInformationLineItems"
      xlink:to="dei_EntityCommonStockSharesOutstanding"
      order="35"
      use="optional" />
  </definitionLink>
</linkbase>

I've snipped a lot of the indirection and the more esoteric ways taxonomy links are expressed. To meet formatting restrictions I also had to modify some long attribute values, in some cases by replacing the string "us-gaap/1.0" with "(USG)", and in some cases abbreviating the string "dei-2008-03-31.xsd" to "(XSD)". What's left should give you the basic idea. Within the linkbase the top links (roleRef elements) provide definitions relevant to the entire report. Definitions referring to specific aspects of the report are expressed in following definitionLink elements.

Digging into the XLink

XBRL exercises some of the more complex aspects of XLink, the W3C standard for creating hyperlinks in XML. The most important thing you have to remember about XLink when working with XBRL is that a link can occur on any element, unlike, say, HTML where links are expressed through a or link elements. XBRL does define standard linking elements such as roleReflocdefinitionArc, but publishers have a lot of flexibility with links. IBM uses a lot of specialized constructs, which is why it includes an XML schema in its filing to define these constructs.

The definitionLink xlink:type="extended" indicates that it is a complex type of XLink, which, among other features, can express a link with multiple arcs, and can do so "out of band", meaning it can patch on a link from the linkbase to a completely separate XML element (in this case to elements in the core XBRL report). IBM has assigned a role to this extended link in its entirety, xlink:role="http://www.ibm.com/us/fr/ci/ibm/IBMConsolidatedStatementOfEarnings", which expresses that this taxonomy serves a statement of earnings, as defined by IBM (traversing this URL you're redirected to the IBM home page, but this fact is incidental). To get the idea of an extended link with many arcs, think of a link from a download site with mirrors. Conceptually it's just one link to the software you want, but in practice there are many possible resources from which you can get it, and each of these is a separate arc. To express these multiple arcs, you give the end-points "marks" or "labels", using an element of XLink type "locator". The actual arcs are defined in elements with xlink:type="arc", which include xlink:from and xlink:to elements specifying the end-points as marks. In the following code, I extracted one coherent extended link example further from Listing 2:

  <definitionLink xlink:type="extended"
    xlink:role="http://www.ibm.com/us/fr/ci/EntityInformation">
    <loc xlink:type="locator"
      xlink:label="dei_EntityInformationLineItems"
      xlink:href="http://xbrl.us/(USG)/non-gaap/(XSD)#dei_EntityInformationLineItems" />
    <loc xlink:type="locator"
      xlink:label="dei_EntityCommonStockSharesOutstanding"
xlink:href="http://xbrl.us/USG/non-gaap/dei.xsd#dei_EntityCommonStockSharesOutstanding"/>
    <definitionArc xlink:type="arc"
      xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member"
      xlink:from="dei_EntityInformationLineItems"
      xlink:to="dei_EntityCommonStockSharesOutstanding"
      order="35"
      use="optional" />
  </definitionLink>

This, in short, expresses that the common shares outstanding fact is in the domain of entity information line items, an expression made formal by links to definitions in XBRL taxonomy Web resources.


Wrap up

No doubt about it—this stuff is complex. The news recently has been full of comments about how complicated financial instruments can be, and things don't get much easier when you deal with huge, multi-national companies, nor even when you deal with smaller firms. The idea of XBRL is not to hide the complexity, but rather to lay it all out on the table, so that it's at least accessible and transparent. The basic mechanism of the XML in XBRL, most of which I've touched on in this article, takes hours to learn, but creating and analyzing the format in regular business requires a lot of financial as well as technical expertise. I mentioned the coming mandates for XBRL usage in U.S. filings. Such mandates are spreading, not just in securities systems across the world, but also in smaller scopes, such as for internal corporate reporting at the departmental level. It will also likely spread with wider, regulated reporting requirements, such as for tax, labor and environmental impact reports. XBRL might soon be one of the most important XML formats in business, and I hope this article gave you the first foothold towards processing it.

Resources

Learn

Get products and technologies

  • IBM trial software for product evaluation: Build your next project with trial software available for download directly from developerWorks, including application development tools and middleware products from DB2®, Lotus®, Rational®, Tivoli®, and WebSphere®.

Discuss

Comments

developerWorks: Sign in

Required fields are indicated with an asterisk (*).


Need an IBM ID?
Forgot your IBM ID?


Forgot your password?
Change your password

By clicking Submit, you agree to the developerWorks terms of use.

 


The first time you sign into developerWorks, a profile is created for you. Information in your profile (your name, country/region, and company name) is displayed to the public and will accompany any content you post, unless you opt to hide your company name. You may update your IBM account at any time.

All information submitted is secure.

Choose your display name



The first time you sign in to developerWorks, a profile is created for you, so you need to choose a display name. Your display name accompanies the content you post on developerWorks.

Please choose a display name between 3-31 characters. Your display name must be unique in the developerWorks community and should not be your email address for privacy reasons.

Required fields are indicated with an asterisk (*).

(Must be between 3 – 31 characters.)

By clicking Submit, you agree to the developerWorks terms of use.

 


All information submitted is secure.

Dig deeper into XML on developerWorks


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=1
Zone=XML
ArticleID=361904
ArticleTitle=Thinking XML: Analyze financial reporting using XBRL
publish-date=01062009