Monthly Archives: January 2010

It’s 2010 … Time to Crank The Fear Factor to 11!

Well, it sure didn’t take CNN long to get the 2010 Fear Mongering Bandwagon rolling. Check out The Buzz from January 2 on “what could go wrong in 2010” (CNN Money, Jan 2, 2010). (That’s right, Saturday January 2nd. They couldn’t even wait two days for the first work week to start!)

According to the article,

  • we’re in for part two of the double-dip recession,
  • the US currency is likely to be debased,
  • the housing market could still hit bottom,
  • the market is in for a lacklustre year, and
  • the job situation is not going to improve.

Wouldn’t it be great for a change if the media focussed on the positives and instead of spreading more FUD, talked about the lessons we’ve learned and how we can use them to right the economy?

After all, this is the 2nd major recession in less than a decade, as the the tech bust of 2000 was still a little less than 10 years ago. And a number of other global economies have had similar downfalls in the last 10 years. Should it not be obvious by now that:

  • out-of-control growth will be followed by a rapid contraction,
  • when you flood your country with government paper you decrease the value of your currency value,
  • house prices cannot increase in value at a rate above inflation forever as they quickly reach a point where no one can afford them,
  • high double-digit returns year-after-year-after-year are not sustainable (and anyone who says they are might be another Madoff in the making) in the long term, and
  • it can take a long time to recover from a recession.

Once you’ve learned these lessons and go back to the old-school of business (which takes the long term view that most of Corporate America seems to have forgotten since the turn of the Millennium), where you plan for steady, incremental growth, hire in a controlled fashion, and don’t make, or price, products out of reach, I see no reason that you can’t, once again, do just fine.

Share This on Linked In

Bob Farrell’s Market Rules Are Good For Supply Managers Too

An article this summer in Canadian Business by Jeff Sanford on the “Burden of Truth” referenced Bob Farell’s top ten market rules which have a a lot of bearing on supply management. Bob Farrell was the Chief Stock Market Analyst at Merrill Lynch for 25 years and knows a thing or two about the market.

  1. Markets tend to return to the mean over time.
    So if you beat up your supplier when times are tough for them, don’t be surprised if they do the same when times get tough for you, which they eventually will.
  2. Excesses in one direction will lead to an opposite excess in the other direction.
    Thus, a market surge for your product will likely be followed by a rapid market contraction. Make sure you’re not stock-piling inventory, because early warning signals may only come weeks in advance in today’s fast moving markets.
  3. There are no new eras — excesses are never permanent.
    A rapid market expansion will always be followed by a rapid market contraction, and the longer the excess goes on, the worse the contraction will likely be.
  4. Exponential rapidly rising or falling markets usually go further than you think, but they do not correct by going sideways.
    A miracle will not happen. You have to be ready to ride it out.
  5. The public buys the most at the top and the least at the bottom.
    No matter how many price cuts you make, you won’t create a surge in demand or increase market size. So while you will have to be competitive to maintain your relative market share, don’t bankrupt yourself trying to serve a market that isn’t there.
  6. Fear and greed are stronger than long-term resolve.
    If they weren’t, we wouldn’t be in this mess!
  7. Markets are strongest when they are broad and weakest when they narrow to a handful of blue-chip names.
    So don’t believe all the hogwash the big vendors are spewing about how good “consolidation” is as they buy up all the little guys and end support for the new, innovative, offerings the little guys were offering.
  8. Bear markets have three stages — sharp down, reflexive rebound and a drawn-out fundamental downtrend.
    This says odds of a quick turnaround are not in your favour — so don’t bank on one.
  9. When all the experts and forecasts agree — something else is going to happen.
    If markets were predictable, we’d all make money in the stock market all the time. But they’re not — and they’re least predictable when everyone seems to agree. So if everyone says gold is going up $50 an oz tomorrow, don’t bank on it.
  10. Bull markets are more fun than bear markets.
    ‘Nuff said.

Share This on Linked In

When a Twit Speaks in the Twittersphere … Does Anyone Hear?

Check out this great experiment chronicled on Boris Dinkevich’s blog on technology and what’s wrong with it. According to Boris,

  1. A friend used the Twitter APIs to create an account that automatically scanned twitter users and find users who were “most likely” to read his twits.
  2. The first pass returned a:
    • 50+ Twit Count (user active)
    • 100 Following Count (might read twits)
    • 50 Follower Count (typical statistic for real users)
  3. Everyday it would delete accounts added the previous day that didn’t re-follow and then run the algorithm again to add more users. In a few days, the account (which had not even twitted) had about 300 followers.
  4. Then, the friend published a post with a bit.ly link on the newly created account, and his own account which had about 30 followers.

The results? ZERO people from the newly created account clicked the link. In contrast, 13 people of the 30, who were likely his friends and colleagues, clicked the link.

In other words, a large Twitter base means nothing. ABSOLUTELY NOTHING. Just that there are a bunch of twits out there who want to feel self-important by collecting followers and following people they think are more self-important than they are. And in the long run, the majority of them will abandon the platform as they figure out just how little usefulness it really has. (It’s a fun toy. That’s it. Nothing more). In fact, over 60% of Twitter users will abandon the platform within a month (Nielson.com blog). That’s why I’m Twitter Free. I’d rather spend my time writing real content you might actually want to read instead of writing down every half-formed thought that rambles through my head in 160 characters or less.

Share This on Linked In

The Netherlands … That’s In Tennessee, Right?

Check out this Shipment Travel History from FedEx (posted by an anonymous shipper). Apparently, to get a package from Ontario, Canada to Antilles, Netherlands you ship it to Indianapolis, Indiana, USA then to Paris, France, then to Memphis, Tennessee, USA then back to Paris, France, then to Newark, New Jersey, USA, then back to Memphis, Tennessee, USA …

It looks FedEx needs a new routing algorithm. I’d certainly be happy to help …

Spend Analysis IV: User-Defined Measures, Part 1

Today’s post is from Eric Strovink of BIQ.

A “measure” is a quantity that’s computed for you in an analysis dataset — for example, spend, count of transactions, and so on. There could be many measures in a dataset, such as multiple currencies, or entirely different quantities such as number of units.

Measures are derived from the data supplied, and rolled up (typically summed) to hierarchical totals. Sometimes, however, you want and need control over how (and when) the measure is calculated. Such measures are termed “user-defined” measures.

Let’s first dispense with the usual definition of user-defined measures — namely, eye candy that has no reality outside of the current display window. You can identify eye candy by looking for the little asterisk in the User Manual that says “certain operations” aren’t possible on a user-defined measure. That’s the tip-off that the tool isn’t really creating the measure at all — it’s just computing it on the fly, as needed, for the current display. In order to be truly useful, user-defined measures must have reality at all drillpoints (all “nodes”) in the dataset, at all times, so they can be used freely in analysis functions, just like “regular” measures. It’s no wonder that many “analysis” products avoid performing the millions of computations required to do this properly, preferring instead to do the handful of computations required to pass casual inspection during the sales process. You’ll discover once you dive into the product that its “user-defined” measures are useless; but by then it’s too late.

There are two kinds of user-defined measures:
(1) post-facto computations that are performed after transactional roll-up (the usual definition), and
(2) those that are performed during transactional roll-up, which we’ll consider here.


Click to enlarge

In the above example there are two savings scenarios identified, “Plan1” and “Plan2”. Plan 1 is a 10% savings scenario, and Plan 2 is a 20% savings scenario. However, this savings plan is complex, because it is a real savings plan. It applies only to spend with certain vendors, and only in certain categories. Thus, as you can see from the numbers, savings aren’t just “10% or 20% of the total regardless of what the total might be”; rather, the numbers are never 10% or 20% of the total (and sometimes aren’t reduced at all) because the savings are applied only to certain vendors (24 of 30,000), and only in certain commodity categories.

So how was this done? In order to compute accurate Plan1 and Plan2 amounts at every drillpoint (i.e. every line item in every dimension), the filter criteria must be applied to each transaction as it is being considered for roll-up. And, since the percentage is likely a dynamic parameter (able to be changed by the user in real time), and since the filter is likely also to be dynamic (“I would like to add (subtract) this vendor or commodity to (from) the filter”), the cube can’t be “pre-computed” as many OLAP systems do. In fact, the roll-up has to occur in real time, from scratch; and it has to involve decision-making at every transaction. Here is the fragment of decision-making code that computes the Plan1 measure:

if (FastCompare(User.NewFamily.Filterset))

addto($Plan1$,$TransMeasure.Amount$*(100-User.VendorSpendReduction1.Plan1SavingsPercent)/100); 

else

addto($Plan1$, $TransMeasure.Amount$);

Note that this fragment resembles a real program (because it is), and it could be arbitrarily complex (because it might need to be). However, it was built by a user (with aid from an integrated program development environment), and it is compiled (on the fly, in real time) by the system into custom p-code1 that executes extremely quickly2.  The result is two additional measures that are calculated without noticeable delay.

Although it might be too much to expect a non-technical user of a spend analysis system to produce a code fragment such as the above, the cube nevertheless can be delivered to that user with the Plan1 and Plan2 measures in place, allowing him to alter both the filter parameters (“User.NewFamily.Filterset”) and the savings percentages (“User.VendorSpendingReduction1.Plan1SavingsPercent”), without having to understand or modify the code fragment in any way.

Next installment: User-Defined Measures, Part 2, in which I show how the “simple” case of post-facto user-defined measures can yield surprising and interesting results when combined with another critical concept, dynamic reference filters.

Previous Installment: Crosstabs Aren’t “Analysis”

1 The p-code instructions in this case are designed to maximize performance while minimizing instruction count.
2 BIQ executes 50M pcode instructions per second on an ordinary PC.

Share This on Linked In