Friday 20 March 2015

Things I wish interactive brokers would do with their API software

As regular readers know I use interactive brokers (IB) to run an automated futures trading system. Now in many ways IB are great. They have several huge plus points compared to most other brokers:

  • Uniquely (?) they offer an API that allows you to build your own automated trading system. What's more the trading server software is available for Unix (and Mac, if that's your thing), not just Windows.
  • They have extremely low commissions.
  • They have a flexible and straightforward portfolio margin and multi-currency system.
  • They have a very wide range of markets.
However now I have been running my system for around a year with real money (with several months of test trading before that) there are a few things that are really annoying.

There are a few more things that other people might find annoying, but which I don't. For example IB don't offer UK spread betting, but then spread betting is the work of Satan so that's fine with me. I don't mind the lack of futures execution algos, despite the fact there are loads for stocks, because I'm perfectly happy with my own. The API documentation is... sketchy... but you can read my blog instead!

No python, matlab, or R API

(In 2017, a couple of years after I wrote this post, IB finally offered a native python API. I wrote a series of posts on this, starting here. I've edited this section to reflect that change). 

IB offers their API in five flavors:

  • Excel DDE 
  • Active X
  • C++
  • Java
  • C#
  • Python
Now there has some very big omissions from that list. The five languages used most in the systematic trading world are (in no particular order): C++, Java, Python, R and Matlab.

I've never really understood why Active X needs to be included as well as DDE; surely one spreadsheet based solution is enough? I've never met anyone who uses C#, though I'm sure they exist, but isn't having C++ and C# gilding that particular lily?

So why no Python, R or Matlab? An entire middle ground of people between Excel using 'F9 monkeys' and hairy chested C++ programmers has been missed out.

Fortunately there are third party API's available to support the likes of Python, R and Matlab; such as the swigibpy API that I use which wraps around the C++ code. However it makes me slightly nervous to use a third party product which has been written and is only supported by someone on a part time basis (though I hasten to add this hasn't given me any problems yet). It particularly worries me when combined with the possibility of an IB API upgrade breaking everything (see below). And it would absolutely terrify me if I was using this platform to trade other peoples money.

Why can't IB create proper API's for these three two high level languages? I am not an expert on Matlab and R, but it would be trivial for IB to do the wrapping of their C++ (as they appear to have done for POSIX). At least then we have some comfort that we are using an official product.

API and server updates aren't always backwardly compatible

There is nothing more annoying than people changing their software so that the changes aren't backwardly compatible. Add new functions? By all means, I don't have to use them do I? Fix bugs? Feel free, as long as it's not a 'bug' whose behaviour I have been relying on (so that is an undocumented feature, not a bug).

Change the name of an existing function just to annoy me? Force me to download the latest version of your API server or stop me trading altogether? No thank you. Especially not while I am relying on a third party to update their python API so it still works. Also why should I have to rewrite my code, retest it and generally make sure its still stable?

No free delayed data via API

When I use the IB front ends (of which more in a second), and I try and look at FTSE futures prices I get the nice friendly message 'Would you like to use 15 minute delayed data, you cheapskate?' (I'm paraphrasing). Click yes, and I can. I can even trade the dammn things, once I've ticked another disclaimer 'Would you really put your families future at stake by submitting a blind market order, just because you refuse to pay the very reasonable fee that Euronext LIFFE want to charge you for live data?'. Oh yes I would.

However when you use the API to get a FTSE futures price you get a very unfriendly message 'IB error id 23 errorcode 200: No security definition has been found for the request'.

Why oh why oh why is it so hard to have a tickbox in the IB API server that says 'Yes I want delayed data where I don't have a subscription. Yes I don't mind trading blind. Yes I am a cheapskate'.

Please IB - give us delayed API data.

No multiple trading login

You can only have be logged into IB in one place at a time.

This means:
  • It means you can't have multiple IB servers running for one account. No problem since you can connect over a network to your server from multiple machines. 
  • It means you can't have multiple IB servers for two linked accounts. Cue lots of messy code specifying which account you are trading from and hoping the server doesn't get it wrong. So a small problem, but with a solution.
  • It means you can't have a manual front end (see next section) open, perhaps to monitor your trades or do a little manual trading in another account. Unsolvable problem.
  • It means you can't have an IB server running a test account, and another for your live account, so running proper tests is impossible. Unsolvable, and very annoying, problem.
  • It means, it sucks.

No lightweight stable front end for manual trading

Apart from the API server, which is a very stable product that you can leave running for weeks on end, IB offer a number of ways to trade manually. At the time of writing these are:
  • Client side TWS. You download this thing and run it on your machine. It is an obese piece of software with far too many bells and whistles. When I run it it freezes eithier immediately, or when I try and do something complicated, like search for a symbol.
  • Server side TWS. Half the time this doesn't download the thin client properly and the other half the time it freezes.
  • Web trader. The vanilla version of this just freezes. The 'beta' version of this runs brilliantly, at least compared to the other front ends. Which is to say that I've managed to use it to submit one order at a time. After that, when I try and find the next symbol, it freezes. And I have to close the session. And login again (using my stupid security card, see below). Half a dozen end of tax year housekeeping trades took me the best part of an hour.
  • Mobile. I haven't tried this. But if something doesn't run on my 4GB laptop it probably won't run on my little Samsung...
I don't know if it's my machine, operating system or browser that is at fault (though I've tried it on every machine I have which covers both windows and linux, though not Mac). But all the UK retail stockbrokers I use seem to manage to create simple lightweight web front ends that are platform independent, and just work. Yet IB cannot.

1990's style security access protocol

Darn, a power cut. I'll just reset my fuse box. Now all I have to do is use vncviewer to log in to my headless trading box*, run the IB gateway server, pull out a stupid plastic card thing from my wallet (assuming I haven't temporarily mislaid it) which I need to log in and restart my own client processes.

It's like digital security was never invented. If I have to login to something like webtrader then fair enough, let me use a cruddy plastic card. But why can't I just have a secure ID sitting on a file on my machine? I can then setup my crontab so that the IB API, and all my server side stuff, restarts when I switch the machine on. After each power cut all I would need to do is reset the fuse box and then turn my server back on again.

* This now reflects my current setup - in earlier versions of this post I wasn't using vnc. Thanks to all those who commented below so that I could address this issue - the security is still rubbish but at least I don't have to plug a keyboard and monitor into my headless trading box.

To conclude...

It does seem as an outsider that the IB development team spend most of their time adding new features to the already bloated TWS front end, and designing things that they think are cool and pretty. It might be that the API community are responsible for only a tiny fraction of IB's income. However I seriously doubt that since algorithimic traders will trade a lot more, and probably use margin more aggresively, than the average Joe.

So please guys, I love the product, lets make it better.

Thursday 5 March 2015

Simulating my futures system

As most of you know I'm running a fully automated futures trading system. This system uses a number of different signals to forecast price movements, but is mostly a trend following system.

I've had quite a few requests for a simulated back-test of this system. Although the system has done very well since I began trading in April 2014, this has been at a time when most trend following systems have done very well.  In particular the flagship fund of quant shop AHL (where I used to work) made about 34% last year.

(I'll be providing a more thorough review of my own performance after I've done a full year of trading, in a few weeks time).

So there is natural curiosity as to whether 2009 - 2013, much worse for trend following, would also have been bad for my system.

This will also be an educational exercise, as I'll talk through some of the issues involved in making a backtest as realistic as possible, and avoiding the deathly curse of "overfitting". Overfitted back-tests can look amazing, but they are unlikely to do well in actual trading.

Futures markets

I will use data from 43 futures markets to simulate the model. These have been chosen to cover a wide range of asset classes, and also based on factors like trading cost and data availability. One slight wrinkle is that I don't have a long series of price history for all my instruments. The data I get from my broker only goes back to late 2013 when I started collecting prices, and although has been a great resource for backfilling longer price data, it doesn't cover every market. If anyone knows of another site for getting (free) historical daily price data for individual futures contracts, preferably which provides .csv files or an API, I'd love to hear about it.

Here you can see how many markets I have data for over time:

Notice the big jump in 2013 when I started getting broker data. This should mean the backtest is a little conservative, since you get better performance from more markets (I know this from simulating performance of similar systems in my old job where I had access to much more data).

However it also means I've needed to take care to make sure that the weights to different instruments in the portfolio is rescaled and fitted properly as new series of data arrives.

Trading rules

I have four main kinds of trading rules:

 Most rules have variations that work at different speeds. So there is a total of 32 possible rules that can be used. However unless an instrument is very cheap to trade we won't be able to access many of the faster rules, as they'll be too expensive. I drop these rules before proceeding.

How do we decide how much weight to give to each trading rule? I use a technique called non parametric bootstrapping to do my portfolio optimisation. Bootstrapping automatically gives you the right weights depending on how different the underlying data is from random noise, so it produces less extreme portfolios.

This is done on an expanding window out of sample. For example to trade in 1987 I used data from 1978 to 1986 to fit my weights. For 2015 I used data from 1978 to 2014. So I'm only using the past, not forward looking data.

To avoid over fitting I pool the pre-cost returns across all the instruments for which I have data. I've rarely found enough consistent evidence that different trading rules work better pre-cost on different kinds of instrument to justify doing anything else, especially given the paucity of available data in the past.
I then work out after cost returns, so it's likely that on expensive markets there will be less weight on faster trading rules.

Over fitting and data mining

Other than making sure you account properly for the effect of costs the main issue to worry about is over fitting AKA data mining. As you can see I am quite careful not to use forward looking information, and bootstrapping ensures we don't over fit based on limited data.

However I can't get away from the fact that I am using trading rules that I know will work, based on my own experience and general market knowledge. So there will be some implicit data mining going on before the backtest is even run.

This issue is discussed briefly in this blog. It will be discussed more thoroughly in my forthcoming book (details to follow, but hopefully out later this year), where there will also be more information about backtesting and fitting generally.

But my rules are generally simple, and having a number of variations for each rule should minimise the bias this causes. Still I wouldn't expect to realise the backtested Sharpe Ratio that I see in this back-test (this is also because future asset returns generally aren't likely to be as high in the simulated period, when a secular in inflation caused large one off repricing gains). But its much more realistic than an overfitted version would be.

A portfolio of futures

I then use a similar procedure to get weights for the instruments in my portfolio, with a few tweaks. I use weekly returns, otherwise the correlations are unrealistically low due to different market closing times (all other work is done with daily data). Obviously I don't pool data from different instruments together!

However if I don't have at least a year of data for an instrument when I start trading it I use average returns from the rest of the asset class, plus some noise such that the new asset will be 80% correlated on average with the other instruments of the same group. This gives me reasonable weights until I have enough data to fit them more precisely.

I also don't take pre cost performance into account (again there isn't much evidence that this is statistically different between markets); although because I'm bootstrapping it wouldn't change the weights much anyway.

Here are the final weights from the bootstrapping procedure, for each asset class:

Agricultural: 21.5%
Bonds and STIR: 17.5%
Equity index, including volatility: 17.3%
FX: 19.1%
Metals: 16.7%
Oil and Gas:  8.3%

These are nice and even.

Risk targeting

I assume here that we start with £500,000; and are targeting risk such that our annualised returns will have an average volatility of 25% of this, £125,000 (this is the same percentage risk target, but not the same size portfolio as I have).

It's imperative that we know we're getting this right. Here is a an estimate of the realised rolling annualised volatility of returns.  Higher peaks mean that we have strong forecasts from our trading rules, or that correlations are particularly high, or that the markets were more volatile than we hoped when we originally put on our positions. However the average is about right; and if anything is a little lower and more conservative than it should be.

(This is to do with a risk management overlay that I use in my model, which reduces risk when it thinks there is potential for large losses)

And the winner is...

Here is what you've all been waiting for - the veritable money shot.

You can see that the last year has been exceptionally good. Overall though this is a good, but not unbelievable performance. It would have been very easy to get a much better curve by fitting in sample, and by using more aggressive fitting techniques. But that would prove nothing, and I'd probably be doing much worse in real trading.

Some statistics:

Sharpe Ratio: 0.88
Realised annualised standard deviation: 19%
Average drawdown: 9.2%
Ratio of winning days to losing day returns: 1.006
Proportion of winning days: 54%
Worst drawdown: 33%
Proportion of days spent in drawdown: 94%

Note that without costs the sharpe would be higher, around 0.94. So I'm paying 0.06 SR in costs. This is an outcome of how I excluded faster trading rules for more expensive instruments.

These returns assume we maintain the same risk target. However all traders should reduce their risk when they lose money. Most will also want to increase exposure as their account value grows. In the latter case the returns shown above are effectively a log graph of what your returns would be. Since the system makes 16% a year on average over 32 years the compounded returns would be pretty good.

I reduce my capital when I make losses, but keep it at a capped maximum when I am at my high water mark. This would slightly increase the Sharpe shown above and reduce the drawdowns, at the expense of a lower total gain.

Here are returns we get from the different styles of trading (don't worry about the units on the y-axis):

You can see that trend following (which contributes about 60% of my risk), as has been well documented, did poorly from 2011-2013. However the other trading rules saved the day; in particular Carry. On the other hand 2014 was a great year for trend following, and this is reflected in my overall performance and those of large funds with similar styles such as AHL, Bluetrend, Winton and Cantab.

Note that in calculating profits I always lag my trades by one day, and assume they are done at the next days closing price, paying half the usual spread on the market, and the normal commission. This is all fairly conservative.

These simulated returns don't include interest charges, gains or losses on converting FX for margin payments, or data fees. In my annual review of actual performance I'll give you some idea of how large these elements are (sneak preview, not that large).

If you'd like any more detail or stats, then please comment on this post. I hope this has been interesting.

Monday 2 March 2015

Politics and taxes - why language matters

I thought I would post another ill conceived political blog post, in response to what is shaping up to be an election full of poor ideas.

(Those who tune into this blog for tips on systematic trading will want to look away now. Don't worry, they'll be back soon when I get this off my chest)

Over the last few days there has been a proposal to reduce the maximum payable tuition fee (for undergraduate education) from £9,000 to £6,000. This will be paid for by removing higher rate tax relief from personal pensions. I think the second idea is stupid because it doesn't go far enough, and the first idea is just plain stupid. What's more they are stupid ideas about two things that have stupid names that twist their actual meaning and make it hard to have a reasonable debate.

I have no particular axe to grind with the Labor party, and I'm equally frustrated by some of the one sided criticism of the proposal from the right wing press. In the interests of balance I am not impressed by the hysterical reaction to a series of potentially good ideas from Ed Milliband and other left leaning parties: mansion taxes (a wealth tax on houses worth more than say £2 million), other wealth taxes and a citizens income.

 The tax and benefit system in this country is complicated. Most well intentioned attempts to do good will end up making it more complicated, when the better solution would be a complete reform. Most importantly language, and specifically, names matter a lot. But we shouldn't let language cloud the issue. That is what politicians want.

(That's why there is a big fuss over a 'bedroom tax' which isn't of course a tax. But that is another story.)

The badly named graduate tax

Why do names matter? If the proposal was rewritten as "Labor plans to reduce graduate tax on high earners" it would have been much less popular with the parties supporters. But economically that is exactly what is happening. Tuition fees aren't paid when you go to university, but are part of a student loan. This loan isn't repaid until you're earning £21,000 or more. The more you earn, the more you pay back. Because the interest rate is below commercial levels the faster you earn more, the higher the economic value of what you're paying

So this is effectively a tax, and like all good taxes its progressive; the rich pay more. Weirdly though it's a tax that's only levied on graduates. Arguably that is because they have received a service and they should pay for it. The argument goes that the plumber shouldn't have to subsidise the children of the middle classes. Although this seems a rather old fashioned argument when 45% of 18 year olds are going on to higher education. The plumber will probably be subsidising their own children as well.

But we don't take that attitude with other forms of education. Nobody I know seems to have a problem with single people paying tax so that the plumbers children can go to primary and secondary school. In economics terms education generates an externality; the overall good for society is far greater than the cost.

What would I do? I'd probably abolish tuition fees, or as they should be accurately named, the graduate tax. I personally think its right that society as a whole should fund higher education. Although to be precise it won't be society as a whole; just the better off paying for it - 10% of taxpayers, or about 5% of the population, pay 55% of income tax. A plumber on £60K will contribute as much as a second year investment banker on the same salary; and why not?

Disclosure: I paid £3,000 up front (no student loan) a year to fund my own education. I have several children who could benefit from this proposal around a decade from now.

Tax relief on pensions

The pension system in the UK is one of the most complicated things I have ever had the misfortune to come across, although it is fortunately getting a little simpler this year.

The basic idea is that you put pre-tax income into your pension, so effectively paying zero tax on your contributions. The money is then taxed on the way back out of the tax shelter. Another stupid name then; there is no tax relief, just tax deferral.

Those who will benefit most are those who pay higher rates of tax when earning, and lower rates when retired. So those who are on well above average incomes benefit the most.

(This doesn't include the mega rich; with a 10 million pound pension paying out about 300K a year you'll be paying the highest rate of tax at both ends. This is one reason why the very rich don't put much money into pensions; they like their legal tax avoidance to be a bit more exotic.)

Because this doesn't seem fair, a great deal of complexity has been layered on to the product. For starters there is a limit on how much you can contribute each year. There's also a limit on the total size of the pension; the so called 'lifetime allowance'.

Part of the reason for the mess is that politicians, and the civil servants who serve them, aren't exactly familiar with personal pensions. Personal pensions are defined contribution (DC). You put in some money, your employer puts in a bit, hopefully it earns returns (though you won't be this lucky), and what you get back is down to the whims of the market.

Politicians like most public sector workers get defined benefit  (DB) pensions. They contribute a bit. Their employers contribute a bit, although often a lot more. For example in the teachers pension scheme starting teachers pay 7% into their pensions; and their employer puts in 14%. This compares to a minimum private sector employer contribution of 3% in the workplace pension scheme (after 2018. Before then it's 1 or 2%).

Their benefits are then based on a proportion of their final salaries, depending on how long they've been in service. Usually if you do a full working life in these schemes you get half your final salary.

Because of low inflation the market value of these schemes is very high. Most people with these schemes don't realise how valuable they are. If a just retired 60 year old averagely paid headteacher reads about a banker with a million pound defined contribution pension fund they'd probably scoff about how disgraceful it is. This is a bit hypocritical because their own pension of £50K a year inflation protected has a market value of about £1.2 million. The dark truth of DB pensions is they transfer wealth from younger and poorer workers, to older and wealthier ones. DC pensions do the same, but the old rich person is just an older version of the young poor one, so its fairer.

I'm not sure that Labour politicians understood this, at least initially. When it was pointed out that middle managers in the public sector - their core constituency -  would be affected the by scrapping of tax relief they said there would be 'exemptions' (although the grounds for those exemptions wasn't clear). A great example of making things more complicated through good intentions.

What would I do? In an ideal world I'd completely scrap pensions. We already have a very simple and effective saving vehicle known as an ISA, which has an annual allowance, but doesn't get tax relief at the point of funding. Most of the rules which separate pensions from ISA's, which are mainly there for paternalistic reasons to stop you blowing your retirement in one go, are going anyway. I'd increase the annual ISA allowance to say £50K a year, soaking up the pension contribution limit. These larger ISA's would still benefit the rich more than the poor, but the benefit would be considerably less than that of higher rate tax "relief" (I can show you the maths if you want to know why).

Contribution limits make more sense than lifetime allowances, which penalise those who manage to get their investments to grow more. A tax on people who are clever (or to be honest just plain lucky) doesn't seem fair.

However this doesn't solve the conundrum of defined benefit schemes. I don't have a problem with the existence of such schemes; though it would be nice if their value was properly recognised since they help close the gap between well paid private sector workers and their downtrodden fellow citizens in the private sector. In 2013, average hourly earnings in the public sector were £16.28 an hour, compared to the average £14.16 among private employees, so yes I'm being sarcastic. 

(The perception of the pay gap comes from comparing the top earners in each profession. That of course is that the media focuses our attention on. Nobody in the public sector earns more than a million quid a year, whereas about 10,000 people in the private sector do. In fact public sector workers earn more than private sector right up to the top 10% of the income distribution. Only in the top 10% is there a benefit in being in the private sector - £57K a year rather than £49K. If we add on the differential in employer pension contributions then even this gap almost vanishes. Its probably only in the top 5% that you earn more in the private sector.)
So what to do?

- I'd reduce public sector DB employer contributions down to average private sector levels of 3%
- increase employee contributions to get back to the same level of overall funding
- scrap all tax relief at source on these pension, to make them like ISA's
- and increase gross salaries to compensate.

Economically this amounts to the same thing, but seeing 40% of their salary leaving their payslip at source should have a sobering effect on public sector workers and help them understand where their pensions come from; as well as making it clear that public sector workers are not underpaid on the whole; at least not in middle management.

Rather than final salary, I'd make the schemes pay a set amount depending on the accumulated size of the fund at retirement; the 'fund size' rolling up and the scheme payout set at levels that would be slowly readjusted as acturial circumstances changed (the changes wouldn't affect existing employees). This would give employees the certainty of a DB scheme, without the unfairness where schemes reward the most highly paid and longest serving employees the most.

It would also make the annual limit on contribution a meaningful brake on the size of the fund, removing the need for a lifetime allowance.

Disclosure: I have contributed to a DC pension in the past, and gained higher rate 'tax relief'. I don't currently contribute, or plan to. The current lifetime allowance doesn't affect me, and probably won't unless my investments grow much faster than I'm hoping for.

Citizens income, income taxes and benefits

The complexity of pensions is only a small part of the overall mess of the tax and benefit system. Nearly all of this is as a result of successive governments trying to target specific groups of swing voters or those felt to be good political targets. To name just a few parts that are particularly stupid:

- the very high effective marginal tax paid by people on unemployment benefit who then start working
- the withdrawal of the tax allowance when you earn more than £100K (why not just have another marginal tax band?)
- not paying child benefits if one person in a household is a higher rate tax payer (even if their total income is less than another household where both earn just less than the threshold)
- lower rates of tax on dividends and capital gains income
- higher tax allowances for retired people. Why is this fair? It isn't, but the grey vote is too powerful. Language again - a proposal to withdraw this was described as a tax on the elderly; when in fact while it exists its actually an "anti-tax" or benefit if you like.
- the winter fuel allowance for pensioners. Why not just increase the total state pension by the same amount and pay it all year?

A really big mess is the false dichotomy created by the Victorian era language we use around large parts of the tax system. National insurance was called that for a reason. It is supposed to make people who didn't want to receive 'handouts', feel better. But we've moved way beyond that. Most people have no compunction about receiving benefits, whatever they are called.

National insurance is just a way of making the tax system more complicated. Unlike other insurance companies there is no big fund - its a so called pay as you go system. Typical gripe by old person "Oh but we've paid in, so we should get back what we are entitled to.". Nonsense. The amount of state pension you get is much larger than you would have got in the private sector for an equivalent NI payment. Even the weak historic link between what you pay in and what benefits you receive has almost been completely broken.

Working 'tax credits' are a more modern abuse of language. They are a benefit plain and simple, they don't reduce the amount of tax you pay, but for some reasons we don't want to call it a benefit.

Tinkering around the edges doesn't work and will probably make things worse. One radical simplifying proposal I really like is from the Green party, although its not original to them, for a citizens income. Everyone in the country gets an income. There might need to be three rates, for children, adults and those with a disability (with perhaps graduated levels for more serious conditions). This would need to be set at a level so that nobody loses out in the move from the current system. By the way this requirement makes it hard to make these simplifying proposals revenue neutral. So you need to fund them in other ways (see inheritance and wealth tax below).

You then pay tax on any income earned, regardless of the type of income. No lower rates on capital gains or dividends that mainly benefit owners of private equity businesses; and make filling in tax returns for ordinary hard working private investors a nightmare. If you are consistently earning enough you could opt to waive your citizens income in return for an equivalent tax allowance (this wouldn't be of any financial benefit, but saves you and the government some paperwork and two money transfers a month).

There would be no tax allowances or any other benefits. No state pension, job seekers allowance, "tax credits" of any sort. No means testing. It would sweep away all of the messes above, and many more, and release tens of thousands of civil servants who are needed to run the system to do more interesting and socially productive jobs, as well as saving a whole rainforest full of paper.

Notice the language again. "Citizens income" recognises that in a modern fair society everyone is entitled to a minimum standard of living, and that is something the state should pay for. It achieves the same end economically as the complicated morass of things that are supposed to be insurance but aren't really, are supposed to be funded pensions but certainly aren't, and targeted 'benefits'. Unlike them this proposal is much simpler and doesn't obfuscate the language 

A proposal I am less keen on is the 'flat tax' (which used to be UKIP policy, but isn't now). I'd keep progressive taxes (higher rates on higher incomes). Firstly because they are fairer, and secondly for pragmatic reasons the flat tax would need to be relatively high (about 35%) to make the proposal revenue neutral, as most tax is paid by the richest tenth and you'd need to hit the middle classes by much more to compensate.

Disclosure: The citizens income wouldn't affect me but higher taxes on capital gains and dividends would be bad for me; whilst freeing up some of my time currently wasted doing my tax return.

Wealth and mansion taxes

As you've probably realised I can't easily be classified as a communist or a raving capitalist lunatic. What may swing your opinion once and for all is that I am a fan of wealth taxes. Not just a specific mansion tax, but a Thomas Piketty style tax on all forms of wealth.

A level of two million pounds seem about right (and should catch enough of the current UK cabinet to be deeply satisfying). At this level you have enough that with a reasonably diversified and quite safe investment portfolio would give you an income of two to three times the UK household average. Bluntly, you have more than enough money and it seems reasonable that you contribute more to society. A rate of 3% annually on all wealth above 2 million quid doesn't seem exactly onerous, and would help pay the cost of the simplifications I've outlined above.

I will now answer all the usual criticisms. Won't this stifle entrepreneurial innovation? I doubt it. I think there are two kinds of people. Lazy people like me who would stop working if they won the lottery or earned enough money to retire early. And others who continue working hard even once they are multi millionaires, not because they need yet more money but because they are driven by other motivations. Paying a little bit more tax isn't going to stop them.

Also the tweak I would suggest is that if you already paid more than 3% tax on income derived from your wealth (dividends, capital gains) wouldn't have to pay any more. The tax is designed to hit rentiers who deliberately minimise the income from their wealth, or who own large unproductive houses in a country that is desperately short of housing, not those who invest in risky assets like start up firms.

What about all the people in London? The tax is on net wealth, so unlike a mansion tax someone with a massive but heavily mortgaged house and no other wealth won't pay anything at all - they aren't rich, just stupid. Note this is why the tax has to be on all forms of wealth; or you could just avoid a net equity housing tax by keeping your mortgage nice and high.

What about elderly people living in London with low incomes but who have mult-million pound houses owned outright 'through no fault of their own' as many people like to say.

(I love this phrase - yes I am very rich, but its through no fault of my own, so why should I be taxed? Brilliant. Yes only those who have worked hard for their money or created businesses and given jobs to people should pay tax on it.)

Solution: Anyone who owned an asset that couldn't be easily moved from the UK would be allowed to borrow money from the government secured on the asset to defer the tax until death, with an interest rate of say inflation + 1% charged on the roll up. Note that this loan including interest will count against your wealth, so you'd never be in a situation where there was no net wealth left on your death.

Isn't it easy for people to avoid it? It's true that no wealth tax will ever work properly unless its adopted globally at the same rate. Fortunately moving money offshore is getting harder. Even if you're not worried about someone leaking your Swiss bank account details to HMRC, you'll be hit by the negative interest rates. Even if the globally mobile super rich pay 3% only on their UK assets above two million quid, that is still a tidy sum (say £1.3 million a year on a modest london home).

Disclosure: I wouldn't pay the wealth tax under as it is described above.

Inheritance tax

It makes sense to finish with the final tax we will all pay. The hysteria about inheritance tax is so great that I believe no party is proposing increasing it, even though it should be a fairly soft target. This is daft. You're dead, why do you need the money? Let your kids survive on their own. Give it all to charity if you don't want the government to get it.

But older people don't seem to like this tax, and as they vote in large numbers changing it is politically toxic, hence the media's favorite name "the death tax". If you like your kids so much give them the money now. Live for seven years and its tax free. Plus you don't have to worry about your offspring putting arsenic in your tea to speed up the process.

Disclosure: Under my current will my children get the lot, and will have to pay inheritance tax. But we're planning to spend it first. Sorry kids.