How I Narrowed Down The Location Of Malaysia Air Using “Monte Carlo” Data Models

Using geostationary satellite location and a basic knowledge of 777 specs, can we predict the likely locations of MH370?

How I Narrowed Down The Location Of Malaysia Air Using “Monte Carlo” Data Models
[Image: Flickr user NASA Goddard Space Flight Center]

While networks like CNN claim the search for the missing Malaysia Air flight have “gone low-tech,” in fact behind the scenes the opposite happened.


Thanks to engineering ingenuity by Inmarsat, a satellite service, we now have a very good idea of where the Boeing 777 wound up (PDF): far flung off the West Coast of Australia.

Inmarsat figured this out by from analyzing the signals from engine pings that are automatically sent from the Rolls-Royce engine to a geostationary satellite, indicating that the engines are operational (and which could be used for transmitting other types of data, which Malaysia Airlines did not subscribe to). They can’t be turned off, and are isolated from the rest of the electronics on the plane. All other electronics off, hourly pings occur so long as the plane maintains power to the engines.

See Redditors’ responses to this article and a discussion with the writer here. Then read our followup: This Data Model Shows MH370 Could Not Have Flown “Accidentally” To Its Destination

The ping is a simple acknowledge/receive handshake that basically means the transmitter and recipient of the message are aware of each other’s connected status; in this case, an MH370 engine and the geostationary satellite. From the travel time of a ping, you should be able to backtrack the radial distance between the two. Since the geostationary satellite stays in the same place over Earth, it follows that the distance is the radius extending out from it, to the plane.

Sleuthing Out The Satellite

The Inmarsat satellite over the Indian Ocean recorded 5 pings after it was last sighted on Malaysian military radar, which means the airplane flew for over 5 but less than 6 hours. Publically, only the fifth ping arc was released, along with the airplane’s final known location and heading as inferred from Indonesian military radar. The geostationary satellite location was not, but I was able to sleuth it out online. With this information, plus basic knowledge of 777 specs, how can we find the likely locations of MH370?

Monte Carlo Model

This was a question I started to address on March 15, using what’s known as a Monte Carlo model written in Python (recently popularized by the likes of Wall-Street-trader-turned-author Nassim Taleb in Fooled By Randomness), once it became apparent that finding the airplane’s final location would not be imminent. Technically, it’s a Markov Chain Monte Carlo approach (known as MCMC) because each step only depends on the present state (i.e., it’s memory-less), and not the entire history, although with only 5 update steps–one for each ping–it’s short. I made this model publically available in an IPython notebook, explaining the technical setup; anyone can download or view it, and I may improve and add to it over the coming weeks in a new version.

The key modification I made from the data available was to modify the 5th ping arc by a normal distribution with the mean as the arc and a standard deviation, whose extent was 5,10, and 20% of the radial distance of the 5th ping arc, MH370’s position at 8:11 am. First, here are the results for 1,000 trials of each of those error margins, which show the plane overwhelmingly “choosing” to fly to the south. In each case yellow and turquoise dots (at the 1 and 2 hr mark) can give an indication of the relative proportion of times MH370 picked a northern or southern route:


5% Error

10% Error

20% Error

Wow, that’s a lot of dots! The smaller blue dots are the plane’s most likely position (note that the map projection distorts some of the relative locations at the extreme south of the map). There are actually 4 of them for each simulation, as I model where the plane went down ¼, ½, ¾, and 59/60 of an hour after the last ping–moving with same heading as the 5th ping, for simplicity’s sake, at 777 cruising speed.

As you can see, the final position is highly dependent on the error margin of the 5th ping. In all cases, however, these results closely match Inmarsat’s internal analysis and the present search area, but without the additional pings and detailed information they had about the flight–and assuming much more error than they calculated they had, even in their worst-case scenario. Here’s how I got to this point.

Getting the Data

First, I followed the lead of WNYC’s 777 runway map by downloading the original XPlane dataset(1) and parsing through it to plot all of the runways longer than 5,000 ft, considered to be a minimum distance for a Boeing 777 to land (but not take off), as black dots. These do not factor in, in terms of where the airplane is located, but do show near where a 777 could land, if it’s in the area.

This project is also available as code: Part 1, Part 2, and Part 3, and as a full file via GithHub.

Next, I found the latitude & longitude coordinate pairs of the plane’s known positions over time, along with Langkawi Island (an island nearby MH370’s last known location, Pulau Perak), and Inmarsat satellite 3-F1, along with deriving the ping arc distance from the satellite, to the 5th ping using released information about MH370 (such as that it was 40º relative to the satellite) plus other 3-F1 specs like how high it is in the sky, which places the 5th ping on the map at the same place seen in newspaper graphics.

Finally, the possibility of wind. I was able to get the wind through a flight simulator that active pilots used; they planned a flight for me, using the last known coordinates of the plane to the Maldives to get an Indian Ocean wind speed at cruising altitude, 35,000 feet, for the same 777 cruising speed I would use in my model. The wind at the time was 9 knots, which is almost nothing, so I disregarded it– the wind effect would be negligible on fuel consumption, or the direction the plane would shift, compared to the main uncertainties I chose to model, which was the accuracy of the 5th ping radius.


After varying that ping location by 5,10, and 20%–the main intentional variation held across my model–we now have a map ready for simulations:

Running the Model

First, we assume how a Boeing 777 moves. Their typical cruising speed is 905 km/hr, and their big engines take a long time to spool up, which means it can take several minutes to execute a turn. So at each step, the plane’s new location is a determined by a weighted combination of a quasi-random heading and a permanent latitude longitude probability grid that reflected the 5th ping arc at each of the 5 time steps (building in the 5,10 or 20% error). Since I didn’t have the previous 4 pings, and the 5th ping is the most important if you care about where the plane ultimately ended up. The idea here is that we want to find where past the 5th ping arc the plane is likely to be found.

The quasi-random heading was picked from a normal distribution centered at 0º relative to the previous heading, with a standard deviation of 30º, out of all integer angles from 0-359º. This means the odds of picking an angle other than 0º decline in a bell curve shape as you move away from a straight-ahead heading, and that an angle of 30º could be reasonably likely but angles greater than 90º highly unlikely. So the airplane could execute a turn but almost never double back on itself over the course of 1 hour.

But the heading was just one of the two main components dictating the airplane’s next location. The probability grid was also quasi-random, a normal distribution over the entire span of latitudes (55ºN to 50ºS) and longitudes (50ºE to 130ºE) I wanted to examine; within the 777’s range from its last known position (which is up to 6 hours). This means that the peak of the bell curve was centered on the ping arc line itself, and then decreased dramatically over distance as you moved away from the ping arc, all within the confines of the latitude/longitude grid. So at each step the plane would be strongly influenced to head toward the ping, even though was last sighted heading due west–the opposite direction from the ping arc–and normally will not want to execute a sharp turn. See the actual code for more technical explanations.

Here are the Inmarsat 5th ping error plots for the first 5 pings, representing five hours after the plane was last detected:

5% Error

10% Error

20% Error

After all that was done, and I had my 5th ping MH370 locations, I took the last heading (for the 5th ping), and projected the final 4 headings, as previously explained, and shown in the first set of figures.



These results show is that irrespective of a large error margin on the 5th ping, the plane is much more likely to have ended up west of Australia rather to the north.(2)

The advantage of this Monte Carlo model is that it can provide a likelihood on the ultimate location of the aircraft, using a few key pieces of available information, without predicating the final assumption upon specific scenarios which may turn out to be speculative–as fears of hijacking, shadowing a flight across the Indian Ocean, or continuing due west past the Maldives in its original last reported heading, as many people pointed out could be plausible possibilities (including myself, before I completed the model).

According to Inmarsat, the maximum error for the ping mark was still well under the 5% margin I modeled, as they benchmarked MH370 against several other planes flying that day from the satellite, where they knew the actual GPS coordinates. Which means that my most likely scenario from the numbers I have input thus far would be the 5% model, which shows the plane being in a relatively concentrated region west of Australia. The New York Times Hong Kong bureau was particularly helpful in connecting me with Inmarsat and other original sources of information hard to find online (as part of the rules of making this model, however, all are publically available).

And, of course, anyone can download this code and input their own numbers or scenarios; the functions are written in a generalized manner that is not specific to the parameters I used.(3)

What MH370 Means For The Future

Amelia Earhart’s disappearance (along with that of her plane) is still among the greatest unsolved mysteries in aviation. But it is from an era when, from a communication perspective, the flying world was a much bigger place; when devices did not phone home or seamlessly connect to satellites, and when a lot more could go wrong in the air.

Which is in part what makes the disappearance of a Boeing 777 in 2014–one of Boeing’s flagship and largest models, and with an almost-perfect safety record–all the more dramatic and surprising. The fact that MH370 disappeared without confirmation of a mayday call, or any sort of distress signal or sign that something was amiss, added to the mystery, which will be unraveled as investigations continue.


One likely consequence of this latest disaster is that, by default, information about the airplane’s location will likely be required to be sent, along with an “engines operational” handshake that the plane used to communicate to the Inmarsat satellite–the saving grace in figuring out where the airplane went, and how far it flew for. The effort Insarmat has put into deducing location information indirectly from the ping data demonstrates that the existing type of data obtained from the flight is not set up to be analyzed for the very purpose which is now central to the investigation.

One obvious conclusion from the difficulty of locating the MH370 over these past two plus weeks is that if rent-a-cars can have monitoring devices which track their whereabouts at all times, as can a several hundred dollar Windows Phone or iPhone with the swipe of a button, then so should an aircraft which costs over a quarter billion dollars. (A Boeing 777-200ER is listed at $261.5 million on Wikipedia.) Running such a location system on a separate electrical system, similar to the way in which engine pings are done, might be a one-time technical design challenge but is not as great (or possibly even as costly) as the recovery task for the MH370, in the coming weeks, months, or years until the final reports on what happened are released.


(1) A flight simulator game–an easily accessible world runway database has been assembled, all under the name of entertainment.

(2) I focused the maps on this region, for this reason, but you can extrapolate how many times the plane went to the north by looking at the dots to the north of the plane’s original position after the first ping, i.e., when one hour had elapsed from when the plane was last sighted by radar.

(3) Although I argue they are a good tradeoff between simplicity and being realistic!