▲ | Monte Carlo Crash Course: Quasi-Monte Carlo(thenumb.at) | |||||||||||||||||||||||||||||||||||||||||||||||||
140 points by zote 10 days ago | 14 comments | ||||||||||||||||||||||||||||||||||||||||||||||||||
▲ | hnhg 6 days ago | parent | next [-] | |||||||||||||||||||||||||||||||||||||||||||||||||
This feels like a crash course for people already very familiar with it all. For everyone else, Steve Brunton's courses cover a lot of the foundational stuff here on probability and stats and might be a lot more accessible: https://www.youtube.com/@Eigensteve | ||||||||||||||||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||||||||||||||
▲ | seanhunter 6 days ago | parent | prev | next [-] | |||||||||||||||||||||||||||||||||||||||||||||||||
Cool article. A couple of things which might not be obvious to people who haven't used monte carlo simulators in practise. 1) The fact that a prng is weak[1] and that the MC is deterministic given a particular seed is almost always a good thing. You want the thing to be as fast as possible and you're going to run a lot of paths. Secondly you very often need repeated runs to give the same result. For example say you're using an MC method to price something, you want exactly the same price every time otherwise you'll get some p&l noise every day arising purely from the difference in the random sequence. That's not what you want. 2) Low-discrepancy sequences like Sobol sequences take this one step further because they don't even pretend to be random, because they give better coverage of the search space for a given number of paths so you can use fewer paths. However, if your path evaluation is cheaper than generating the Sobol sequence then you probably just want to use a normal PRNG and more paths rather than a Sobol sequence. Say there is a bullseye hidden somewhere in a circle and to find the circle you need to throw a dart at it and if the dart lands near to the bullseye you get some feedback. One approach would be to precisely divide the circle into squares and carefully aim each dart to land in a different square (this is a low-discrepancy sequence). But another way is just to throw a lot of darts quickly and not really care where they go (this is the lots of paths approach). [1] in the Cryptographic sense. Generating even weak random variates is slow especially if you need them to satisfy some property like being distributed in a particular way. Say you're trying to simulate the path of the snp 500. For each path you're simulating 500 stocks so you might be running say a million paths and each path will need 500*x random numbers. That computation time adds up pretty quickly. Cryptographically random numbers are extremely expensive computationally and you don't care about any of the strong cryptographic properties for this. | ||||||||||||||||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||||||||||||||
▲ | unixhero 4 days ago | parent | prev [-] | |||||||||||||||||||||||||||||||||||||||||||||||||
It is maybe a good intro. Way too mathematical for me. |