Understanding Software Agents
Sunday, November 24, 2013 at 07:33AM
Charlie in Becoming an XBRL Master Craftsman

Many people focus on XBRL saying that XBRL about not having to rekey information. While it is true that if XBRL formatted information is expressed correctly that information does not need to be "rekeyed"; but I would suggest that a more enlighten focus might be the following: What does it mean if you don't have to rekey information?

What if you could predictably, reliably, repeatedly grab a piece of information; ascertain the appropriate context of the information which was an OUTPUT of that process; and send that information on as an INPUT to some subsequent process. What if a meaningful exchange of information could be achieved between two computer processes?

What if you could "chain" processes together? That is why people often refer to processes as a supply chain.

One of the things which could occur is the business users can delegate work to software agents.

So what the heck is a "software agent"?  People sometimes use other terms such as "intelligent agent" or "smart agent".  Using terms such as intelligent and smart, in my view, just add hype into the equation which often comes with things related to technology.

I don't want to contribute to this hype by setting unrealistic expectations of the state-of-the-art.  People many times profess exaggerated claims which they can never deliver in order to fool ignorant buyers in order to make a quick buck.  That is not my goal here.

My goal is to explain that some very basic work can be delegated to software agents and if this is done correctly, software agents can perform meaningful work, can reduce costs, and can increase quality.  The first step which is required to make a software agent work appropriately is the meaningful exchange of information to a software agent.

As is said, "garbage in, garbage out".  If a process outputs 98% accurate information; that process can never be completely automated because humans need to be involved in order to fix the 2% of the information which is incorrect. So before processes can be 100% automated, information exchanged via that process needs to be 100% correct, complete, consistent, and accurate.

I found the following two definitions of a software agent which help you understand what a software agent is.  In his paper, Software Agents: an Overview, Hyacinth S. Nwana defines a software agent as:

we define an agent as referring to a component of software and/or hardware which is capable of acting exactingly in order to accomplish tasks on behalf of its user

In their paper Intelligent Agent, Hanh Tran & Thaovy Tran use the term intelligent agent which has the following definition:

An intelligent agent is a software that assists people and act on their behalf. Intelligent agents work by allowing people to delegate work that they could have done, to the agent software. Agents can perform repetitive tasks, remember things you forgot, intelligently summarize complex data, learn from you and even make recommendations to you.

I like both definitions.  Neither has hype in my view.  Two key aspects I would point out are the following.  The first definition states "capable of acting exactingly".  That is critical. What an agent does needs to be predictable and reliable. The second key aspect is "repetitive tasks".  A software agent needs to repeat the same predicable, reliable process over, and over, and over.

I want to take the definition of a software agent just a little bit further and show the categories of software agents pointed out by Hyacinth S. Nwana' s paper.  Here is a diagram which is provided in that paper:

Idea from Hyacinth S. Nwana, Divine T. Ndumu: An Introduction to Agent Technology, Re-Drawn by Mobile Computing, Dept. of IECS, Feng Chua University, R.O.C., 2003.

That paper provides a lot of detail on a lot of rather sophisticated stuff which software agents might be able to do, but I don't want to go there in this very basic explanation of software agents.  Go read the paper if you want that detail.

But I do want to provide some insight on the sorts of things software agents can do.  One good example of a software agent can be seen in the vision of what is called the SEC's RoboCop. What the media calls "RoboCop" is a software agent which enforces an accounting quality model established by the SEC.  What is in the accounting quality model?  Who knows.  Perhaps something as basic as checking to see if SEC filer's have balance sheets that balance or more likely more sophisticated checks of SEC XBRL-based financial filings.

RoboCop might seem "out there" because we cannot see how it works yet.  Here is an example of something which you might be able to better get your head around because you can go check it out.  I pulled reported information for a set of 51 fundamental accounting concepts from SEC XBRL financial filings. I also tested 21 relations between those concepts to try and make sure that the informaton I was grabbing was accurate.  I found the information to be about 98% accurate. Eventually the information will be 100% correct I predict.  That fundamental set of information has the reported facts necessary to compute the sustainable growth rate of every SEC filer.  Here is that formula:

Sustainable Growth Rate = ((Net Income (Loss) / Revenues) * (1+((Assets - Equity) / Equity))) / ((1 / (Revenues / Assets))-(((Net Income (Loss) / Revenues) * (1+(((Assets - Equity) / Equity))))))

Imagine a software agent which monitors the sustainable growth rate of public companies for an analyst looking for investments. The software makes the analyst aware of companies who reach certain thresholds.  This would allow the analyst to then focus additional analysis on the specific entities which have met her criteria.

Another really simple example of an agent is XBRL Cloud's EDGAR Dashboard.  While that dashboard monitors verification/validation of SEC XBRL financial filings which is useful for making sure the SEC XBRL financial filings are properly created; it is not that big of a stretch to imagine other types of these dashboards which could be created.

One final example of the utility of a software agent is the analytical review process performed by auditors.  Finding the information, lining it up in an application, computing the variance, finding and adding information about how peers of an entity performed is mindless work which software applications can easily perform for an auditor.  That frees the auditor to focus on the analysis of the actual information and they will have more time for the analysis because software agents performed the mindless part of obtaining and providing the information.

The bottom line here is that the notion of software agents or intelligent agents or smart agents has been around for some time.  The understanding of the sorts of things that these software agents can do for business users is in its early stages. As agents are better understood and as the quality of the information these software agents rely on to function correctly improves, these software agents will deliver increasing utility to business users.  These software agents will never replace highly skilled professionals working with something like financial information.  They will mainly perform mindless, repetitive work; the sort of work computer software does well.  Information gathering will be significantly easier so the humans can focus on the sorts of things that only humans can do. Costs can be reduced and quality can be increased.

Article originally appeared on XBRL-based structured digital financial reporting (http://xbrl.squarespace.com/).
See website for complete article licensing information.