THE REINSURANCE ACTUARY
  • Blog
  • Project Euler
  • Category Theory
  • Disclaimer

Life, Pensions, or GI, which area of actuarial work is the best paid?

26/12/2016

 


Which areas of actuarial work are the best paid?

Salary estimates for actuarial work are pretty hard to come by and in my experience not particularly accurate, Also, in practice there are also large differences in salary when accounting for experience, practice area, function, and location. So I thought I'd try to put together my own analysis which accounts for all these variables!

As a source of data I decided to work from online Job Adverts, mainly because I can collect them with a minimum of effort, but also because the only other option would be to send out my own survey (and to be honest why would anyone complete a salary survey from a random guy online?).

Step 1. Collect ​Some Data
​
I started by web scraping about 800 job adverts from an actuarial job site. This was all the job which were listed on the website at the time. Since this might be 'slightly' (i.e. completely) against the terms of service of the site, I won't say which site the adverts are from or publish any of the raw data. I don't see any issues with publishing aggregated data from the website though.
​​
Once I had scraped the adverts, I extracted the salary figures and discarded adverts that did not include a salary, this left about 350 job advert to work with.

Step 2. Analysis

My first step was to segment the adverts by practice area. Rather than going through each advert one at a time, I split them by looking at key words in the adverts, for example, adverts containing the terms 'pensions', 'employee benefits', or 'defined contribution' were all assigned to the category 'Pensions'.

These figures were then used to produce the following box and whiskers chart:
Picture

​As expected, General Insurance comes out as the highest paid practice area with Life and Investments in joint second place and Pensions lagging quite a bit behind.

In case you can't remember how a box and whiskers chart works, the black dot is the mean, the three lines in the box represent the 1st quartile, median, and 3rd quartile, and the whiskers go up to the maximum and down to the minimum value.


Are there any other correlations that are affecting this ranking though? Since a lot of GI jobs are based in London, does London's higher average salary accounts for the difference?

First let's check that actuarial jobs in London do actually have higher salaries than actuarial jobs outside London.
Picture

As expected, London based jobs are clearly better paid on average than non-London based jobs.

In order to see whether location is driving the differences between salaries across practice areas we need to include location as another variable in our chart:
Picture

This chart gets a bit more messy, but we can see that even when we account for the effect of location, we still have the same ordering of practice area:

General Insurance > Life > Pensions

Now that we've looked at practice areas, I'm going to show my bias towards insurance and look at the effect of the type of actuarial work within an insurance company on salary.
Picture

Surprisingly, all the functions are relatively equal. There seems to be a weak ordering of:

Capital Modelling > Pricing > Reserving

​Though the difference does not seem to be significant.
Picture

Finally, let's look at the effect of qualifying on salary. As expected, jobs for qualified actuaries have a mean of £20,000 higher than part/nearly qualified positions.

All the more reason I should be studying right now rather than procrastinating on here!.

Actuarial Science vs Mathematics

24/12/2016

 

Let's suppose you've decided that ultimately an actuarial career is the career for you. You've heard that it's well paid, low stress, and offers a great work-life balance. If this is the case, you'd be crazy to study anything but Actuarial Science at University right? Well kind of...

Naturally, no discussion of whether to study Maths, Actuarial Science, or Finance would be complete without one of my favourite charts (for some reason I really like the name), a Gantt Chart, so here is one showing an example of how long it might take a student to qualify if they studied Actuarial Science or Mathematics.


Picture

​Exemptions!
​
Why is the actuarial science path so much shorter? 

Most 3 year actuarial science courses will give you the opportunity to gain exemptions from the first 8 CTs. It's the reason that in the chart above actuarial science is so much quicker to qualify, and it's one of the main reasons that people decide to study actuarial science at uni. So are there any downsides to getting all these exemptions?

Oh, you just got exemptions? I did it the hard way...

Qualifying through exemptions is definitely quicker than qualifying through the institute exams so expect some sour grapes from people who did it 'the hard way'.

There is also a perception that an equivalent exam at uni is easier than an IFoA exam. It's hard to judge this, but I have memories of doing very little work for some uni modules during most of the year, then cramming for a couple of days before the exam and then scraping a pass. Good luck doing this with the institute exams!

So expect in your career for someone who studied the institute exams to be seen as marginally more accomplished than someone who passed through university exemptions.

Is it better to keep your options open?

Actuarial Science is also a much more focused degree, it literally has the job title in the subject. On the whole, Mathematics gives a much broader range of possible career paths than Actuarial Science. People who study actuarial science, though not completely locked in to becoming an actuary, are pretty much restricted to a career in finance. Maths grads have a much broader range of careers but can also easily move into finance. So I think that there is an argument for keeping your options open a bit more with a broader degree. Imagine you start Actuarial Science at 18 and then decide that you hate finance?

Also, you need to ask yourself what you want to get out of your university education. There are two main schools of thought as to the purpose of a university education . The liberal arts school of thought, more prevalent in US universities, has students studying a wide range of topics with the goal of producing a well rounded graduate, able to step up and fully participate in civic life. The European model places more emphasis on vocational study, with a university degree being seen as preparation for a career. Actuarial Science is definitely on the vocational side of the spectrum, whereas I would say that Mathematics is more on the liberal arts side of the spectrum. (This might sound questionable, how can a Mathematics degree be considered a Liberal Art? But remember that the goal of most mathematics degrees is to teach you to think 'like a mathematician' it's widely acknowledge that you will never use 99% of the actual mathematics that you studied)

That's also not to say that actuarial science degrees will focus only on 'actuarial' topics, most will cover the full range of finance, business and economics and in some respects are broader than a mathematics education. But for me it's the fact that you are studying as preparation for a specific job rather than studying general skills that makes actuarial science more vocational.

It's not what you know it's who you know...

I think one strong point in favour of actuarial science which I haven't seen discussed much is that actuarial science grads seem to make much better connections and have  more recruitment opportunities than less vocational degrees.

Most of my friends who studied mathematics are spread through various industries and various countries. Whereas most connections made through an actuarial science degree will end up working in the same industry as you, focused around the same few cities. If nothing else it gives you more people to meet for drinks at lunch under the guise of 'networking'.


Some more random thoughts.

  • Most actuarial science degrees will host multiple recruitment events throughout the year and have strong links with actuarial firms. Maths degrees, not so much.
  • If you study actuarial science, you'll have to go through the joy of having to explain what an actuarial science degree is to all the other students you meet. Maths degrees, not so much.
  • Actuarial science is a less common degree and not all universities will offer courses in it. Maths degrees, not so much.
  • The gender ratio for Actuarial Science can be quite unbalanced. Maths degrees, not so much (well not quite as bad anyway...)
  • And finally isn't maths just much more interesting than actuarial science anyway? If you're going to be spending 3 years studying something then I think it's a good idea to pick something interesting.

Solving a Snake Cube Puzzle

19/12/2016

 

My colleague at work gave me a snake cube puzzle to try to solve, and if you haven't tried, they are a lot harder to solve than they look.

After trying and failing for about 10 minutes to solve the puzzle, I had a great idea, why not waste a couple of hours writing a program to solve it for me? And then a couple of hours turned into a couple more hours, but I got there in the end!

The aim is to wrap the snake into a 3x3x3 cube. Here is what the snake puzzle looks like when it is unwrapped.
Picture

How does the Program work?

There are two main approaches to solving the puzzle programmatically, you could either systematically enumerate all permutations of the snake, or randomly try different permutations until you find one that works.

I went with the second option. which seemed like it would probably be computationally slower, but easier to program.

I decided to write the code in Python, it works by randomly twisting the snake one joint at a time, and restarting everytime the snake either crosses itself or goes outside a 3x3x3 grid.

The code runs 100,000 simulations in approximately 20 seconds on my laptop, which turns out to be just about fast enough to get an answer when you leave the program to run for a couple of hours.

The code:
from random import randint
import time

def f(x):
    return {
        1: 1,
        2: 2,
        11: 0,
        12: 2,
        21: 0,
        22: 1,
    }[x]

def drandomu():
    drandomint = randint(1, 2)
    if drandomint == 1:
        drandomint = -1
    else:
        drandomint = 1
    return drandomint

def drandom(iDirection):
    drandomint1 = f(iDirection * 10 + randint(1, 2))
    return drandomint1

CurrentTime = time.clock()
vArray = [[[0 for x1 in range(3)] for y1 in range(3)] for z1 in range(3)]
vMaxArray = [[[0 for x2 in range(3)] for y2 in range(3)] for z2 in range(3)]


iMax = 0
iTotalBlock = 1
vChain = [3, 1, 1, 2, 1, 2, 1, 1, 2, 2, 1, 1, 1, 2, 2, 2, 2]
m = 1000000
limit = int(m * 1)
for lSim in range(limit):
    try:
        GiveUp = "False"
        iDirection = 0
        iTotalBlock = 1
        vCurrent = [0, 0, 0]
        for x in range(3):
            for y in range(3):
                for z in range(3):
                    vArray[x][y][z] = 0
        for iLink in range(17):
            if GiveUp == "False":
                if iLink == 0:
                    for iBlock in range(vChain[iLink]):
                        if iBlock > 0:
                            vCurrent[0] += 1
                        vArray[vCurrent[0]][vCurrent[1]][vCurrent[2]] = iTotalBlock
                        iTotalBlock += 1
                else:
                    iDirection = drandom(iDirection)
                    iUpOrDown = drandomu()
                    for iBlock in range(vChain[iLink]):
                        if vCurrent[iDirection] == 0:
                            iUpOrDown = 1
                        vCurrent[iDirection] += iUpOrDown
                        if vArray[vCurrent[0]][vCurrent[1]][vCurrent[2]] != 0:
                            if iMax < iTotalBlock:
                                iMax = iTotalBlock
                                for x in range(3):
                                    for y in range(3):
                                        for z in range(3):
                                            vMaxArray[x][y][z] = vArray[x][y][z]
                            GiveUp = "True1"
                            break
                        else:
                            vArray[vCurrent[0]][vCurrent[1]][vCurrent[2]] = iTotalBlock
                            iTotalBlock += 1

        iTotalBlock = 0
        for x in range(3):
            for y in range(3):
                for z in range(3):
                    iTotalBlock += vArray[x][y][z]

        if iTotalBlock == 378:
            print(vArray)
    except:
        pass

print(int(time.clock() - CurrentTime), "Seconds")
print(int((time.clock() - CurrentTime)/60), "Minutes")

for x in range(3):
    print(vMaxArray[x])

print(iMax)
 

The Solution

The program eventually gave me the following layout as a solution:

[[1, 16, 23],    [18, 17, 22],    [19, 20, 21]]
[[2, 15, 24],    [5,  6,    7],     [10, 9,   8]]
[[3, 14, 25],    [4, 13,  26],    [11, 12,  27]]

The easiest way to think about the solution the program gives is to think of the three blocks of three digits on the left as the bottom layer, the second block of three digits as the second layer, and then the third block of three as the third layer. So the 4th block is directly abov the third block.

Here is the completed puzzle:
Picture

    Author

    ​​I work as an actuary and underwriter at a global reinsurer in London.

    I mainly write about Maths, Finance, and Technology.
    ​
    If you would like to get in touch, then feel free to send me an email at:

    ​LewisWalshActuary@gmail.com

      Sign up to get updates when new posts are added​

    Subscribe

    RSS Feed

    Categories

    All
    Actuarial Careers/Exams
    Actuarial Modelling
    Bitcoin/Blockchain
    Book Reviews
    Economics
    Finance
    Forecasting
    Insurance
    Law
    Machine Learning
    Maths
    Misc
    Physics/Chemistry
    Poker
    Puzzles/Problems
    Statistics
    VBA

    Archives

    March 2023
    February 2023
    October 2022
    July 2022
    June 2022
    May 2022
    April 2022
    March 2022
    October 2021
    September 2021
    August 2021
    July 2021
    April 2021
    March 2021
    February 2021
    January 2021
    December 2020
    November 2020
    October 2020
    September 2020
    August 2020
    May 2020
    March 2020
    February 2020
    January 2020
    December 2019
    November 2019
    October 2019
    September 2019
    April 2019
    March 2019
    August 2018
    July 2018
    June 2018
    March 2018
    February 2018
    January 2018
    December 2017
    November 2017
    October 2017
    September 2017
    June 2017
    May 2017
    April 2017
    March 2017
    February 2017
    December 2016
    November 2016
    October 2016
    September 2016
    August 2016
    July 2016
    June 2016
    April 2016
    January 2016

  • Blog
  • Project Euler
  • Category Theory
  • Disclaimer