Premium bond mythbusting

One of yesterday’s budget announcements was the lowering of the minimum premium bond purchase from £100 to £25 by March 2019. Inevitably the usual conspiracy theorists and/or people who don’t understand probability came out to play on various forums.

Some facts:

  • Every bond in every draw has an equal chance of winning a prize. Currently, these odds are 24,500 to 1 against.
  • If you hold a single £1 bond, then with average luck you’ll win a prize once every 24,500 months – or once every 2,041 years.
  • A £100 holding would improve these odds to once every 20 years or so.
  • Someone with the maximum holding of £50,000 could therefore expect to win around two prizes a month. 2.04, to be precise.

However, two myths seem to be in common circulation. The widespread belief in these myths perhaps explains why 42% still think that the NHS will get £350m/week extra after Brexit. (Also a myth – along with the idea that a Brexit of any type will deliver a dividend to the UK).

  • Myth 1 – blocks of consecutive bond numbers stand a better chance of winning than widely scattered bond numbers.
  • Myth 2 – a newer bond has a better chance of winning than an older bond.

Neither is true – as every bond in the draw has an equal chance of winning a prize.

Myth 1

It makes no difference whether you hold a single block of consecutive bonds or if they are scattered. Believing otherwise is as fallacious as suggesting that the sequence 6,6,6,6,6,6 is more or less likely than 1,2,3,4,5,6 when rolling a die six times. Assuming a fair die, any six number sequence is as likely as any other, as a die has no memory for what was rolled previously. The same is true for premium bonds – there’s no memory for which numbers have been drawn.

Myth 2

The old number / new number myth probably stems from the observation that new bonds seem to win more frequently than older ones – if you just look at lists of prize winners. However, this neglects the obvious point that older bonds are more likely to have been cashed in than newer ones. Regardless of when a bond was bought, it still has an equal chance of winning a prize. This myth is especially pernicious, as someone who withdraws older bonds to purchase newer ones loses at least a month of opportunity. This is because a bond bought (say) in November won’t be entered into a draw until the following January.

Crunching the numbers

Now, I realise that if you’re still struggling to see past these myths, some proof might be useful. So as part of my mental recovery from chemotherapy, I’ve written a premium bond simulator this morning. It’s aim is to dispel these two myths.

It works by simulating 82 years worth of bond draws. 81 is the average UK life expectancy. The extra year stems from the rule that bonds can be left in the draw for up to a year after someone’s death.

To make the programme run in a reasonable length of time, the number of bonds in each draw has been scaled back from 60 billion (approximately the number in circulation) to 6 million. Maximum bond holdings have been scaled back proportionately – from 50,000 to 5. This means that the outcome – an average 2.04 prizes per month – is maintained in line with the real NS&I draw.

There are four bondholder types defined. Someone with a block of consecutive numbers, someone with widely scattered numbers, a holder who has old bonds (represented by low numbers) and a holder with new bonds (represented by high numbers).

Here’s the output of a couple of runs from earlier on this afternoon. They demonstrate that every bondholder type has an approximately equal chance of winning over a lifetime of bondholding.

On this run, the bondholder with scattered single bonds won more times than the bondholder with consecutive numbers
On this run, the bondholder with scattered single bonds won more times than the bondholder with a block of consecutive numbers.
On this run, older bonds outperformed new bonds.
On this run, older bonds outperformed new bonds.

If you’re still not convinced, here’s the source code so you can play with it yourself.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
#include <stdio.h> 
#include <stdbool.h>
#include <stdint.h>
#include <time.h>
#include <stdlib.h>
 
#define TOTALBONDS 6000000
#define WINODDS    2.45
#define BONDSHELD  5
#define TOTALDRAWS 984
 
 
double rand0to1()
{
    	/* return a pseudorandom number between 0 and 1 */
 
        return ((double)rand()/(double)RAND_MAX);
}
 
void main()
{
        int prizes, winner, i, drawnumber, prizesallocated; 
        int blocktotal=0, singletotal=0, oldtotal=0, newtotal=0;
 
        /* Different bondholder types and their bond numbers */
        int blockbonds[BONDSHELD]={200000,200001,200002,200003,200004};
       	int singlebonds[BONDSHELD]={10534,248491,1000302,4000522,5200976};
        int oldbonds[BONDSHELD]={1,10,100,1000,10000};
        int newbonds[BONDSHELD]={5999900,5999910,5999920,5999930,5999940};
 
	bool allbonds[TOTALBONDS]; 
 
        /* Seed the pseudorandom number generator */
        srand(time(NULL));
 
        /* Total prizes are calculated using current NS&I odds of 24,500 to 1 per bond held, scaled to 2.45 to 1 per bond held for this simulation */
        /* The total number of bonds in ciruclation is also scaled back by the same propotion, from around 60 billion to 6 million */
        /* Therefore the maximum holding in this simulation is 5 bonds, equivalent to 50,000 in the real draw */
        /* Average luck implies each bondholder should win 2.04 times per draw - the same as in the real draw*/
 
        /* Run the draw multiple times - 12 is equivalent to 1 year's worth of real draws */
 
        for (drawnumber=0; drawnumber<TOTALDRAWS; drawnumber++) {
 
       		/* Set up the draw - no-one has won yet */
        	for (i=0;i<TOTALBONDS;i++)  { 
			allbonds[i]=false; 
        	}
 
        	/* Work out the total number of prizes */
		prizes = (int) (TOTALBONDS / WINODDS);
 
        	/* Draw a new bond to win until all prizes are allocated */
        	prizesallocated=0;
        	while (prizesallocated<prizes) {
            		winner = (int) (rand0to1()*TOTALBONDS);
            		/* The NS&I rules state that the same bond cannot win twice in the same draw */
           		/* prizesallocated is not incremented in this event and the prize is reallocated */
            		if (!allbonds[winner]) {
               			allbonds[winner] = true;
               	 		++prizesallocated;
            		}
        	}
 
        	/* Check each bondholder against the draw, and increment the total number of times they have won */
                printf("\nWinners for draw %d\n",drawnumber+1);
		for (i=0;i<BONDSHELD;i++) {
  			if (allbonds[blockbonds[i]]) { printf("Block bond %d wins!\n",blockbonds[i]); ++blocktotal; }
  			if (allbonds[singlebonds[i]]) { printf("Single bond %d wins!\n",singlebonds[i]); ++singletotal; }
  			if (allbonds[oldbonds[i]])  { printf("Old bond %d wins!\n",oldbonds[i]); ++oldtotal; }
  			if (allbonds[newbonds[i]]) { printf("New bond %d wins!\n",newbonds[i]); ++newtotal; }
        	}
	}
 
        /* Calculate what the average luck was for each of the bondholders */
 
	printf("\nSummary of results\n");
        printf("Block bond holder won on average %.2f times per draw\n", (float) blocktotal/TOTALDRAWS);
        printf("Single bond holder won on average %.2f times per draw\n", (float) singletotal/TOTALDRAWS);
        printf("Old bond holder won on average %.2f times per draw\n", (float) oldtotal/TOTALDRAWS);
        printf("New bond holder won on average %.2f times per draw\n", (float) newtotal/TOTALDRAWS);
 
}

NS&I – redefining customer service, but not in a good way

Those of you that don’t like my rants, stop reading now.

OK, you’ve got this far. I want to tell you about my recent experiences with attempting to buy premium bonds from NS&I. And before you all tell me it’s not a good investment, yes, I know that, but it’s a better investment than the lottery. And I bet most of you play that (I don’t). I’m also hopeful that my experience might serve as a warning to others before they manage to walk into the same customer service black hole that I’ve just stumbled into.

Up until 2 or 3 months ago, buying premium bonds online was really simple. All you needed was your holder’s number and a valid debit card. You went on their website and bought the bonds. Your certificate arrived in the post a few days later. Everyone’s happy.

But then, they introduced a new online system. First of all, registering on it was a pain. I now have in addition to my holder’s number a brand new and shiny NS&I number that is so long you simply can’t remember it. I also can’t remember the exact hoops I had to jump through to get my account set up, but it was pretty painful and involved various ‘phone calls, letters, forms that were too small to write on properly, pin numbers, security questions and very strict rules on passwords that were acceptable and those that were not. Anyway, I managed to jump through these hoops (I think it took me about a month all told) and got myself set up.

Tonight, I decided to attempt to buy a few more premium bonds. The site challenged me for my NS&I number. After messing around in my filing cabinet, I found it. It then wanted the 4th and 6th characters of my password. Now I work in computing so I know not to write my password down and leave it lying about. Unfortunately, it wasn’t one I could remember because of their rather strict rules on passwords. I went through the password reset routine instead. This involved answering questions on-screen and then NS&I ringing me via an automated system to ask for a number that had appeared on-screen (it was a good job I was at home!) The final act of their system was to tell me my new temporary password “was being sent to me”. I was then unceremoniously thrown off the website via a pop-up (not good practice). I then spent the next 10 minutes checking my email inbox before calling them to ask where my temporary password was. Apparently they send them out by post.

Sighing a little, I then asked if I could simply purchase my bonds by ‘phone instead. To which the answer was a resounding “no” – at least, not until they’d sent me my new password and me having logged in and reset it. This was despite them knowing who I was, having provided them with my name, address and holder’s number (they weren’t interested in the NS&I number for some strange reason). Apparently, if you’ve managed to lock yourself out of their online system then they can’t sell you anything by ‘phone because the two systems are very tightly linked. Their suggestion was that I made my way to the nearest Post Office and buy them over the counter as it could take a few days for my password to be finally reset.

I complained. They’ve given me a complaint number. They will acknowledge my complaint by letter in the next week. It could then take another 28 days to respond to it.

So much for customer service. NS&I have lost my custom for the foreseeable future. I’m off to buy lottery tickets instead.