On holding stocks

I never understood one thing about investment analyst reports – the “hold” recommendation. This is “between” the “buy” and “sell” recommendations (which are self-explanatory), and it tells an investor to hold on to the stock if he already owns it, but not to buy if he doesn’t.

The problem with this is that the difference between buying and holding a stock is small, especially given the current efficiency of equity markets and consequent low transaction costs. The only difference between holding and not holding a stock is that in the latter case, you spend the transaction cost of buying the stock. That is all. Based on this, it is intriguing that the two have remained distinct analyst recommendations for ages now.

I can think of two possible explanations:


  1. One can assume that the investor is fully invested (not holding any cash), and so buying a stock means that he has to sell something else in order to allocate capital to this stock. So in other words, the cost of getting the stock into you portfolio is higher than the trading cost itself – it comes in at the cost of another stock. With these increased transaction costs, it’s possible that it’s not worth buying the stock .

  2. Analysts hate to admit it (look at the precision with which they dictate price targets), but there is a wide band of error around their estimates of what price the stock will trade at at some point of time in the future. So the buys are those that are much more likely to be trading up than the holds. So by saying “hold” you are saying “yeah this stock might go up, so I’m not so confident about it so don’t bother buying if you don’t have it already”.

But then there is this school of thought that says that analyst’s buy/hold/sell recommendations do not matter at all, and the value they add is in providing the investor access to the company’s management. Matt Levine has written plenty about this, and you should read his latest stuff on this.

Coin change problem with change – Dijkstra’s Algorithm

The coin change problem is a well studied problem in Computer Science, and is a popular example given for teaching students Dynamic Programming. The problem is simple – given an amount and a set of coins, what is the minimum number of coins that can be used to pay that amount?

So, for example, if we have coins for 1,2,5,10,20,50,100 (like we do now in India), the easiest way to pay Rs. 11 is by using two coins – 10 and 1. If you have to pay Rs. 16, you can break it up as 10+5+1 and pay it using three coins.

The problem with the traditional formulation of the coin change problem is that it doesn’t involve “change” – the payer is not allowed to take back coins from the payee. So, for example, if you’ve to pay Rs. 99, you need to use 6 coins (50+20+20+5+2+2). On the other hand, if change is allowed, Rs. 99 can be paid using just 2 coins – pay Rs. 100 and get back Re. 1.

So how do you determine the way to pay using fewest coins when change is allowed? In other words, what happens to the coin change problems when negative coins can be used? (Paying 100 and getting back 1 is the same as paying 100 and (-1) ) .

Unfortunately, dynamic programming doesn’t work in this case, since we cannot process in a linear order. For example, the optimal way to pay 9 rupees when negatives are allowed is to break it up as (+10,-1), and calculating from 0 onwards (as we do in the DP) is not efficient.

For this reason, I’ve used an implementation of Dijkstra’s algorithm to determine the minimum number of coins to be used to pay any amount when cash back is allowed. Each amount is a node in the graph, with an edge between two amounts if the difference in amounts can be paid using a single coin. So there is an edge between 1 and 11 because the difference (10) can be paid using a single coin. Since cash back is allowed, the graph need not be directed.

So all we need to do to determine the way to pay each amount most optimally is to run Dijkstra’s algorithm starting from 0. The breadth first search has complexity $latex O(M^2 n)$ where M is the maximum amount we want to pay, while n is the number of coins.

I’ve implemented this algorithm using R, and the code can be found here. I’ve also used the algorithm to compute the number of coins to be used to pay all numbers between 1 and 10000 under different scenarios, and the results of that can be found here.

You can feel free to use this algorithm or code or results in any of your work, but make sure you provide appropriate credit!

PS: I’ve used “coin” here in a generic sense, in that it can mean “note” as well.

Explaining UPI

I just paid my cook his salary for November. Given the cash crunch, I paid him through a bank transfer, using IMPS. Earlier today, my wife had asked him for his account details (last month I’d paid him on his wife’s account).

An hour back he sent me his account details (including account number and IFSC) via WhatsApp. I had to wait till I got home and got access to my laptop (Citibank app doesn’t let you add payees on mobile banking).

I get home, log in to Citibank Online. Add payee, which includes typing his bank account number twice. Get SMS asking me to confirm payee addition. I authorise payee. And after all this I am able to finally do the transfer – and I expect him to have got his money already.

For a long time I was wondering what the big deal with UPI was, given that IMPS is already fast enough. Having finally tried UPI earlier this week (it’s finally coming to iOS, but only available on ICICI now. And the implementation so far sucks, since you need to pull out your debit card for two factor authentication – defeating the point of UPI. I’m told it’s better on Android), I realise how much easier and safer the transaction would’ve been.

Firstly, the cook needn’t have sent me his account number. All I would need was his virtual payment address. I would then open my UPI app (in my case, iMobile) and click on “send money”. And then I’d add his virtual ID there, following which his name would appear. Two or three more clicks, and entering my PIN code, the transfer would be done.

No bank account number. Not even a mobile number or an email ID. Just a random string of characters would allow me to transfer money to him! And later I could give him my UPI ID, and next month onwards he could simply send me a request via UPI for his salary. And two clicks later it would be done!

Mint has reported that there are massive delays in merchants installing point of sale devices in response to the cash ban. Banks should instead seek to acquire merchants to accept money via UPI. It’s simple, it’s quick and it protects privacy.

In fact, if the bank sales staff now have bandwidth, it can be argued that all the planets have aligned for UPI to take off for merchant payments – people have less cash, point of sale devices are not available, and both merchants and shoppers have shown openness to cashless payments, and there is a push from the government.

If only the banks can bite…

Using my cook as an ATM

This happened ten days before high value notes were withdrawn, and suggests nothing about my cook’s political opinions or views. 

On 30th October 2016, I paid my cook his salary for October. As it was the usual practice, I paid him in cash. He asked me if I could do an online transfer instead.

It was the first day of Diwali, and he needed to send money to his wife in Bihar. And it being Diwali, all banks were closed, and there was no way he could send money to her. So he asked me if I could do that. And if I were anyway transferring money to his wife’s account, could I send her a bit more, he asked – he would compensate me for the extra amount in cash.

And so like that I used my cook as an ATM. He gave me his wife’s account details (it was such an obscure branch that I’d to google it to find the IFSC code – wasn’t in citibank’s lookup list). I added her as a “payee” and immediately IMPSd the amount to her. And my cook gave me the extra funds I’d transferred in cash.

Later on, I told him to install his bank’s app on his newly acquired fancy phone (with a Reliance Jio sim). I’m not sure he’s done that but considering how resourceful he is, it wouldn’t be long before he does that. And more of the Bihari cooks network in Bangalore do likewise.

Nandan Nilekani, in his championing of the UPI, likes to talk about how “anybody can be an ATM” with the new technology. This was an exemplary example of that.

The only fly in the ointment was that I didn’t need cash that day – after all I’d been to the ATM earlier that morning just so that I could get cash to pay my cook – so I ended up with a lot of cash that I didn’t need. Thankfully I was able to spend it productively before the ceased to be legal tender.

Following the withdrawal of high currency notes, I told my cook I would pay his subsequent salaries by bank transfer. He gladly agreed.

Financial inclusion and cash

Varad Pande and Nirat Bhatnagar have an interesting Op-Ed today in Mint about financial inclusion, and about how financial institutions haven’t been innovative to make products that are suited to the poor, and how better user interface can also drive financial inclusion. I found this example they took rather interesting:

Take, for instance, a daily wager who makes Rs200 on the days she gets work. Work is unpredictable, and expenses too can be volatile, so she has to borrow money for buying vegetables, or to pay the doctor’s fees when her children fall sick. Her real need is for a flexible—small ticket, variable amount, rapid approval—loan product that she can access instantly. Unfortunately, no institutional channel—neither the public sector bank where she has a “no frills” account, nor the MFI that she has previously borrowed from—offers such a product. She ends up borrowing from neighbours, often from the local moneylender.

Now, based on my experience in FinTech, it is not hard to design a loan product for someone whose cash flows are known. The bank statement is nothing but a continuing story of the account holder’s life, and if you can understand the cash flows (both in and out) for a reasonable period of time, it is straightforward to design a loan product that fits that cash flow pattern.

The key thing, however, is that you need to have full information on transactions, in terms of when cash comes in and goes out, what the cash outflow is used for, and all that. And that is where the cash economy is a bit of a bummer.

For a banker who is trying to underwrite, and decide the kind of loan product (and interest rate) to offer to a customer, the customer’s cash transactions obscure information; information that could’ve been used by the bank to design/structure/recommend the appropriate product for the customer.

For the case that Pande and Bhatnagar take, if all inflows and outflows are in cash, there is little beyond the potential borrower’s word that can convince bankers of the borrower’s creditworthiness. And so the potential borrower is excluded from the system.

If, on the other hand, the potential borrower were to have used non-cash means for all her transactions, bankers would have had a full picture of her life, and would have been able to give her an appropriate loan!

In this sense, I think so far financial inclusion has been going on ass-backwards, with most microfinance institutions (MFIs) targeting loans rather than deposits. And with little data to base credit on, it’s resulted in wide credit spreads and interest rates that might be seen as usurious.

Instead, if banks and MFIs had gone the other way, first getting customers to deposit, and then use the bank account for as much of their transactions as possible, it would have been possible to design much better financial products, and include more customers!

The current disruption in the cash economy possibly offers banks and MFIs a good chance to rectify their errors so far!

Why PayTM is winning the payments “battle” in India

For the last one year or so, ever since I started using IMPS at scale, and read up the UPI protocol, I’ve been bullish about Indian banks winning the so-called “payments battle”. If and when the adoption of electronic payments in India takes off, I’ve been expecting banks to cash in ahead of the “prepaid payments instruments” operators.

The events of the last one week, however, have made me revise this prediction. While the disruption of the cash economy by withdrawal of 85% of all notes in circulation has no doubt given a major boost to the electronic payments industry, only some are in a position to do anything about this.

The major problem for banks in the last one week has been that they’ve been tasked with the unenviable task of exchanging the now invalid currency, taking deposits and issuing new currency. With stringent know-your-customer (KYC) norms, the process hasn’t been an easy one, and banks have been working overtime (along with customers working overtime standing in line) to make sure hard currency is in the market again.

While by all accounts banks have been undertaking this task rather well, the problem has been that they’ve had little bandwidth to do anything else. This was a wonderful opportunity for banks, for example, to acquire small merchants to accept payments using UPI. It was an opportune time to push the adoption of credit card payment terminals to merchants who so far didn’t possess them. Banks could’ve also used the opportunity to open savings accounts for the hitherto unbanked, so they had a place to park their cash.

As it stands, the demands of cash management have been so overwhelming that the above are literally last priorities for the bank. Leave alone expand their networks, banks are even unable to service the existing point of sale machines on their network, as one distraught shopkeeper mentioned to me on Saturday.

This is where the opportunity for the likes of PayTM lies. Freed of the responsibilities of branch banking and currency exchange, they’ve been far better placed to acquire customers and merchants and improve their volume of sales. Of course, their big problem is that they’re not interoperable – I can’t pay using Mobikwik wallet to a merchant who can accept using PayTM. Nevertheless, they’ve had the sales and operational bandwidth to press on with their network expansion, and by the time the banks can get back to focussing on this, it might be too late.

And among the Prepaid Payment Instrument (PPI) operators again, PayTM is better poised to exploit the opportunity than its peers, mainly thanks to recall. Thanks to the Uber deal, they have a foothold in the premium market unlike the likes of Freecharge which are only in the low-end mobile recharge market. And PayTM has also had cash to burn to create recall – with deals such as sponsorship of Indian cricket matches.

It’s no surprise that soon after the announcement of withdrawal of large currency was made, PayTM took out full page ads in all major newspapers. They correctly guessed that this was an opportunity they could not afford to miss.

PS: PayTM has a payments bank license, so once they start those operations, they’ll become interoperable with the banking system, with IMPS and UPI and all that.

Dealing with loss of cash

Ever since Rs. 500 and Rs. 1000 notes ceased to be legal tender on Tuesday night, the internet has been full of “human stories” of people for whom tragedy has struck because they are not able to transact.

This is a valid concern – for there is a significant portion of the population without access to banking (numbers in a Mint piece I’ve sent but they’re yet to publish), and access to banking is necessary to do any transaction of reasonable size (there’s only so much you can pay with 100 buck notes).

One fallacy, though, is that people in rural areas, where access to banks and ATMs is lower compared to urban areas, are going to have it harder till the cash gets adequately replaced. While these places may be out of the way, what will help them tide it over is that everyone pretty much knows everyone else.

In Money: The Unauthorised Biography, Felix Martin argues that money is neither a store of value nor a medium of exchange. Instead, it is simply a method to keep track of debts, with the elegance being offered by the fact that money is “negotiable”. If I have a 100 rupee note, all it says is I’m owed 100 rupees. Who owes me those 100 rupees doesn’t matter. “I promise to pay the bearer the sum of one hundred rupees”, the front of the note declares. It just doesn’t matter who the “I” in question is.

In order to illustrate his theory of money, Martin gives the example of Ireland around 1970, when a six-month banking strike left the country’s financial system in tatters. Life didn’t come to a standstill, though, as people figured out ways of maintaining their credits and transferring them.

Initially, people wrote each other cheques. Despite the inherent credit risk, and the fact that they couldn’t be encashed in near future, people accepted them from people they knew. Then the cheques became negotiable, after “reputed community people” such as barmen started vouching for people’s creditworthiness. And so the economy moved along.

Debts were finally settled many months later when the banking system reopened, and people could cash in the cheques they held. A similar story played out in Argentina in the early 2000s when rampant inflation had rendered the currency useless – cities managed to invent their own currencies and life went on.

In a similar fashion, in small towns, and other communities where most people tend to know one another, people are unlikely to face that much trouble because of the cash crunch. Credit is already fairly common in such places, except that it will have to be extended for a longer period of time until the cash supply returns. It is similar in other remote unbanked areas, and perhaps even among tightly-knit communities of businessmen. Systems will spontaneously come up to extend and exchange credit, and life will go on.

The concern, however, is for the urban poor, since they tend to do a large number of transactions with people they don’t know well. In such situations, extension of credit is impossible, and people might find it hard.