Economics, Part II

I like to turn Robert’s economics articles up-side-down. They make so much more sense when you do that.

So, out there we have a set of holders of mortgage backed instruments that they got through various middle men from borrowers of poor financial strength. The current holders ought to have done their due diligence before they bought in — if they did not, we have no sympathy over their fates. So let us assume that they did.

Clearly they saw the risk of a market wide event affecting a very large number of people, lots of those being voters. Clearly they researched the history of political response to such situations. Clearly they saw the serious risk of the rules being changed underneath them. They saw that, they understood that, and surely they priced that into their bids. Thus, if the rules are changed underneath them, they are not suffering any consequence the risk of which they were not paid to take. One could go as far as saying that a lack of political intervention would be an unforeseen windfall for them. That would be a subsidy they do not deserve.

Actually, the investors likely did not have full information available, but had to rely on the representations of the financially engineering banks and the ratings institutes. Investors should have priced such a lack of knowledge in too, but might have a case against the middle men if they were defrauded.

That being said, I have not read and I do not intend to read the specifics of the proposed plans. In fact, paying attention to the promises of political candidates in right races is a waste of time — they will promise you anything. It is in their blood.

Economics

It seems like Robert has been reading too many books on economy again. Or rather, has failed to apply the necessary simple sanity checks to what he has been reading.

Authors on books on economy like simplifications and words like “equilibrium”. For example, they might discuss an equilibrium governing the hourly wages and claim that absent any floor on wages, they will find a level where everyone who wants to work is employed. The sanity check for the is the great depression period: no floor, but widespread unemployment. Conclusion: something is seriously wrong with the model or the assumptions.

Robert this time brings us this gem: “The tax on capital gains is a burden on investing. The tax lowers the returns on investment, thus discouraging investment below where it would be in equilibrium […]”.

First simplification: “equilibrium”. We do not live in a static world so assuming an equilibrium is not reasonable. Why should there be one?

Second simplification: assuming the potential investor has a choice between investing or not investing, presumably in some stock. In reality, someone with spare (or borrowed) cash has multiple choices: investing [high return; high risk], stuff the mattress [no return; sore back], put in bank [low return; high tax], etc. Notice the total lack of “not investing” as a choice. The general assumption is that the would-be investor does what is optimal (whatever that means). I don’t buy the argument that a capital gains tax makes people put more money in the mattresses.

Third simplification: the government is also not faced with a choice of imposing the tax or not imposing it. Really. Those two choices do not come with the same revenue, obviously, and the real choice is thus more between imposing the tax and not imposing combined with not building this or that highway. Or taxing elsewhere. Or borrow the balance. Or whatever. The historically aware reader will recall that lowering taxes while hand-waving and saying that revenue would go up as a consequence was proven wrong last time.

Fourth simplification: “The tax lowers the returns on investment.” That is true, but incomplete. The tax works on the loss side too and thus also lowers the risk of an investment which, presumably, encourages investment.

The conclusion of that is that we have a partial proposal whose effects have been judged by a hopelessly oversimplified model. Hence predictions on the effects are meaningless.

For the record, my income is primarily classified as capital gains. I would actually stand to make a killing if the capital gains tax went away. I am just the mouse who wants to know the price of that yummy cheese before I eat it.

Themes Are Evil, Part II

In a previous post, I showed how a GTK+ theme engine can corrupt memory of any application unfortunate enough to be used with it.

In today’s edition, our guest star is the Qt theme engine. It does not, as far as I know, corrupt your memory or otherwise make your innocent application crash.[*] Instead it changes how your program works. For example, for Gnumeric it changes how numbers imported are handled.

If you import the number “8,5” in a decimal-comma locale then you would hope to get eight-and-a-half, right? Well, with the Qt theme you get eight and we, the Gnumeric team, look incompetent. The problem arises because the Qt theme, quite reasonably, initializes the qt library. During that, less reasonably, the following code gets executed:

setlocale( LC_ALL, “” ); // use correct char set mapping
setlocale( LC_NUMERIC, “C” ); // make sprintf()/scanf() work

I am not kidding. The Qt library thinks it should change your locale. What on Earth have the Trolls been drinking? Impure home destilled booze in large quantities?

This problem in various disguises have had us puzzled for quite a while and only very recently was the Qt theme identified as the triggering factor. Once that happened, it was not too hard to locate, but before that we have spent maybe 40 hours looking for this bug. The workaround is to set up a one-shot idle handler that resets the locale properly when the gui comes us. (Repeat this for every GTK+ program that displays or accepts floating-point values.)

The Qt theme people never caught this. If they are mostly “theme” people I can understand, but if they are mostly “Qt” people they really should have known. In either case, it is another exhibit for the case that the GTK+ theme model is seriously flawed.

[*] Well, if you use threads it might. The Qt library calls setlocale to change locale and that’s not allowed in a threaded program.