Introducing iQ

I’m working on a new language. It’s called iQ.

iQ stands for “iXBRL Query”, where “iXBRL” stands for “inline XBRL”, and “XBRL” stands for “eXtensible Business Reporting Language”

It’s Javascript. It’s inspired by jQuery, and the concepts of Domain-Specific Languages (DSL) and Literate Programming.

Check it out the iQ source code by clicking here:

With iQ, you can easily locate values and identify patterns in financial data. The goal: freely enable anyone with an interest in finance to make meaningful stories out of financial data… (with as little previous experience in finance or programming possible, and a toolset as free and accessible as possible!)

For example, you can search for current assets like this. Notice you get 5 results.

iQ

.element(‘current asset’)

>5

You can further filter this selection by adding another filter. Let’s say you want current assets for periods more current than 2011. Notice now you get only 3 results.

iQ.element(‘current asset’)

.pointInTime(‘>2011’)

>3

So iQ helps you locate values, but it also helps you do things with those values.

For example, mark them in green to signify your approval:

iQ.element(‘current asset’).pointInTime(‘>2011’)

.background(‘green’)

>3

Or validate your documents.

iQ.element(‘current asset’).pointInTime(‘>2011’)

.should().exist()

>’element(‘current asset’).pointInTime(‘>2011’) does exist.

>There are 3 results’

Or do some math, like finding the average of these assets. Notice it outputs the average directly.

iQ.element(‘current asset’).pointInTime(‘>2011’)

.average()

>500,255

… or calculations with other values. You’ll be creating a whole new set of values you can inject back into the document. Notice there are as many currentRatios as there were current assets*

iQ.element(‘current asset’).pointInTime(‘>2011’)

.divideBy().element(‘current liabilities’).setOutput(‘currentRatio‘)

>currentRatio(length:3)

Then find the trends. Notice the plain-English output.**

iQ.output(‘currentRatio’).trends()

>’currentRatio is increasing at a rate of 0.13 per year’

And visualize them:***

iQ.output(‘currentRatio’).barGraph()

>Something like this

I’ll get more examples for you, soon.

*(presuming they provide a current liabilities in the same time period for each current asset! iQ will align the values in the most sensible way, borrowing the idea of implicit filters from XBRL Formula)

**No, iQ is not a super computer. But it can identify simple trends, like the line of best fit for a simple dataseries. And you can teach it how to identify other trends.

***iQ won’t be doing all the heavy lifting. We plan on using d3 or some other library. But we’ll make it as seamless and easy as possible to pass iQ result sets, or iQ outputs, into a visualization library. iQ will help you sort data even if it’s 3-dimensional data (like Revenues, by product, by geographic region, for the two most recent periods).

Advertisements
Tagged , , , , , , , , , ,

3 thoughts on “Introducing iQ

  1. […] with iQ (for example, you can identify the row and column intersections [like my screenshot] using nothing […]

  2. […] spending some time on iQ […]

  3. Hi,

    Interesting initiative for sure…

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: