The goal for our project was to develop an understanding of how physics methods can be used in the field of financial modeling. Primarily concerned with predicting prices and market shares over time, financial analysts have historically made liberal use of traditional physics and math techniques to best solve different sorts of systems.
A brief literature search indicated that one of the most commonly used physics tools in finance is the Monte Carlo method. Originally developed as part of the Manhattan Project to simulate the penetration of neutrons into a nucleus, the Monte Carlo method has come to refer to the general concept of using a massive amount of randomly generated numbers to simulate the development of a system based on some sort of probability distribution.
We began the project by familiarizing ourselves with basic Monte Carlo methods. First, we simulated the results of rolling two dice, simply generating two random numbers between 1 and 6 for an arbitrarily large amount of times. This basic method produced a distribution that described the most frequent combination of rolls. As expected, the mode of the distribution was 7. Next, we worked on a slightly more challenging problem, using Monte Carlo methods to numerically integrate a function. We used a rather trivial case, a circle inscribed in a unit square. The program dropped an arbitrarily large amount of points onto the system and counted how many fell within the bounds of the function. The ratio of this count to the overall number of points simulated the area of the function. The value of pi was obtained, confirming that our method was effective.
The next step was to decide which specific financial methods we would explore in depth. We decided to pursue two areas, the calculation of stock option prices and the evolution of the price of a good in a simple market over time.
A stock option is a financial tool used by traders to bet on the price of a stock over time. It allows the said trader, for a certain price, to be able to value the stock at a fixed price no matter how it changes in the overall market. A call option gives the trader the right to buy a stock at a fixed price over time, even when the market price rises significantly. Similarly, a put option gives the right to sell the stock at a fixed price over time, most useful when the stock price drops in the market over time. The problem in question is then to calculate the initial fee for which the trader can buy the right to have one of these options on the stock.
We explored three methods for pricing these options. The first was the Black Scholes method, which relies on knowing the values of several crucial parameters and the cumulative distribution that these parameters define. Equation for Black-Scholes where $C$ is the price of the option:
(1)
where
(2)
and
(3)
$N(d_1)$ is the standard normal distribution of $d_1$ and $N(d_2)$ is the standard normal distribution of $d_2$ where $d_1$ and $d_2$ are a distribution.
This method proved to be rather rigorous as it necessitated at least basic knowledge of statistical modeling and the exact value of the parameters. The second method, the Monte Carlo distribution of pricing, was more elegant. It used a uniformly distributed set of random numbers between 0 and 1 and plugged the set into an equation that needed only the original price of the stock, the interest rate, and the volatility of the stock. Finally, the most elegant method to calculate the price of an option involved the use of binomial trees. Beginning with a strike price and a theoretical return on the stock, the binomial method calculated the value of the stock at an increasingly large number of nodes in the tree and then plugged these nodes into an equation that would value the price of the option.
The second system we studied was based off the Ising model used to simulate the evolution of a thermodynamic system over time. The most prominent application is the simulation of a ferromagnetic material whose constituent atoms possess spin characteristics that influence their neighbors. These spins naturally tend to align themselves in the same direction, and thus we have started with a ferromagnetic system in which all spins are aligned. We then simulate stochastic changes in the system that occur because of energy added by the temperature in a heat bath. As temperature rises, the greater there is that one of the spins will orient itself in a way that requires adding energy to the system. This is because the extra heat from the increased temperature supplies extra energy. The system is solved using a Monte Carlo method to calculate the probability of each atom flipping its spin per unit time, based on the interactions with its neighbors and the overall energy. The higher the energy, the higher the probability of flipping the atom. The average spin of the system is called the “Magnetization” and is a good way to represent how magnetic the metal is.
This system is then applied to the world of finance by simulating an evolving market of agents who can either choose to buy or sell a good, which is shown by:
(4)
The decision to be a buyer or a seller influences the decisions of the nearest neighbors. However, all agents also are aware of a systematic trend in “magnetization” which in this case represents the price of the good in question. If there are more buyers than sellers, the price will be rising, so buyers will wish to join the sellers group to make a profit off of their good. The Monte Carlo method once again calculates the probability of these agents changing their identities, displaying the trend in price over time. The probability is given by:
(5)
Then, the probability of an agent remaining/becoming a buyer is given by:
(6)
(7)
It is possible to see the stochastic nature of the pricing evolution over time, as well as the distribution of buyers and sellers in a market given some initial conditions. As we discovered, when buyers and sellers grouped with agents of their own identity, price is more volatile.
Below is a table that summarizes every method we have used, as well as providing the name of each file, found at this link https://drive.google.com/a/vassar.edu/folderview?id=0B01Mp3IqoCvhflF5azV4bHY2V0c3Vks0VXVyQkIxcnR4RmFaNDhVWEQtZGZSR2t6V2VWOHc&usp=sharing#:
Name of Method | Purpose | Name of Code |
“Dice Roll” | Demonstrate the efficacy of a Monte Carlo method to simulate the distribution of a large amount of dice rolls | MonteCarloDiceRoll.m |
“Numerical Integration” | Demonstrate how a Monte Carlo method could be used to calcuate unknown parameters from an arbitrary integral | montecarloexample.m |
“Black Scholes Method” | Uses a set of parameters with known cumulative distribution to calculate the price of an option | BlackScholes.m |
“Monte Carlo Option Method” | Simulates the cumulative distribution from the Black Scholes method by creating a set of normally distributed random numbers that undergoes mathematical transformations | BlackScholes.m |
“Binomial Trees” | Calculates the value of an option by valuing the strike price at various times based on a given interest rates. Assigns each of these values to a node in a tree and uses this structure to go back and value the option | BinomialTreesNThree.m |
“Ferromagnetic Ising model” | Simulates the evolution of a ferromagnetic system in a heat bath by generating random numbers to calculate the probability of atoms in the system being either spin up or spin down. | IsingTest.m |
“Market Strategy Model” | Applies the ferromagnetic ising model to a basic markets where agents that are either buyers or sellers replace the atoms. These agents follow the advice of their nearest neighbors or the tendencies of the market of a whole. These tendencies compete with each other and a Monte Carlo method simulates the probability of the agent choosing a strategy over time. The “magnetization” of this system, the average value of agents strategies, is a good way to represent the trend of the price of the good in the market. | TwoStrategyMarketModel.m |
I really like your project because it takes a physical concept and applies it to a different field. I had heard from several of my friends (who are economists) that doing so was possible, but I had never actually seen it done. So, I am really thankful to you guys for giving me that opportunity.
To start with, I like how you start your problem slowly and with simple fields and build upon it to get a more complex system. This is the right way of doing simulations, as it can help you find limitations or error to the method you will be using. The fact that you used the Monte Carlo method to find a very good approximation of pi and the probability of dice outcome does give credibility to Monte carlo method. However, I think that it would also have been a good idea to test the consistency of Monte Carlo method by running these programs several times and see if the results vary over time. Since Monte carlo method depends on randomly generated numbers, the results might not be consistent with low number of data points (or dart throws). It might be a good idea to test this limit, or at least find the number of dart throws it takes for this inconsistent nature to be negligible.
I really appreciate the fact that you took some time in explaining economic concepts in your earlier posts. This is a great help for someone like me who doesn’t have an economics background. The simplified explanation of stock option was great, and the background into Ising model and Black-Scholes model was a great touch. However, I still have some trouble understanding the difference between the American option and the European option. I feel like this topic could use with some more explanation, especially on why different models are better at approximating these two types of stock option.
I was really impressed by the ferromagnetic model you guys used in your project. After reading your explanation, it seems intuitive to how this system works and how it could apply to a stock market. However, I was wondering if you guys used any method to test the accuracy of the outcome of this simulation. For example, in our problems done in class, we made a simulation for harmonic oscillator and tested it validity by looking at the energy change over time, and things like does the KE and PE act normal, or does the total energy remain constant over each cycle. I was wondering what served as your test for the accuracy of your problem. Also, when you connected the thermodynamic model to the stock market (Market Strategy Model), how did you test that the prediction would work. I was wondering if there is some tool or data available that would let you compare your results with, or is that not possible when it come to market trends? Sorry I really don’t know a lot about this field, but was just curious.
Overall, I greatly enjoyed your project and thought that it was very interesting and informative. Great job!
Overall, what did you gain from this experience? Would you invest using any of these methods?
This was a really cool project that showed how important a lot of the computational tools we have been learning in class are to the world of finance. The buildup from relatively simple physical systems to quite complicated financial models made it clear that the skills learned this class are extremely valuable. I found that I learned a lot from reading this project, especially being able to play with the codes you guys wrote on my own. My one main critique is that a lot of the financial terms and concepts were a bit under-explained at first, which led to a lot of confusion that required careful reading and some googling to clear up for me.
For example, as I was reading about the binomial tree and two strategy market portions of this project, I had a lot of questions that were unanswered until the Conclusion post.
In regards to the binomial trees: Who would use this, consumers trying to decide to buy a put or call option, consumers trying to decide if a particular option is at a good price to buy, or those who set the strike prices and option prices on options? Which was does time go on the tree? How are the different numbers calculated, or are these numbers taken from known data?
What is backwards induction?
In regards to the two strategy market: Are the agents in this simulation connected to only their neighbors, as in the Ising model for magnetic materials, or are there further connections? Does every agent know the total average of the market at each time iteration? Agents can switch between being buyers or sellers, but can they switch between being fundamentalist or chartist?
Again, many of these questions were answered in your Conclusion post, especially in the table that compactly explained the purpose of each code. Those quick explanations were crucial to my understanding what was even going on with all of these numbers and terms that I was very unfamiliar with. If each new section was explained and framed a bit better when it was introduced earlier in the project, I think the whole thing would have been a lot more educational for those who are unfamiliar with the world of finance.
A few quick notes about the actual codes you guys wrote.
The code for the numerical integration does not run, it looks like some variables at the beginning aren’t defined.
I had a lot of fun playing around with the Black Scholes code, seeing which variables affected the option price in which direction. The user interface on this code was very helpful for engaging me and getting me to try out new scenarios, from which I learned a lot. Not that you needed more meat for your project, but showing some results for this model would have been instructive for introducing a lot of financial concepts to newcomers. For instance, this code can show the impact that a change in interest rate or strike price has on option prices. I think some trials holding all variables constant while varying one at a time, and plots of the results, would be a very powerful educational tool. Also, not knowing much about options myself, I found it difficult to pick values for the input parameters that had much of a basis. A few runs and results from the creators would give those reading the project an idea of where to start and what they should vary to see specific changes.
The binomial tree program seems to be accomplishing the same goal as the Black Scholes one, but when I tried quickly to input similar parameters into both, I got completely different answers. I am sure that this stems from my ignorance about these two methods, but could these results be compared, as the Black Scholes and Monte Carlo ones were previously? Also, if this code was as interactive as the Black Scholes one, it could also have been a great educational tool.
The visualizations from the two market strategy code were great, they really helped me understand what the system was doing and what the results that it gave meant.
All in all, this was a very informative project. A bit of extra focus on the explanations of financial terms, concepts, and motivations for each of the models explored when each was introduced would go a long way to improving the educational quality of the posts, but in the end I did learn a lot from reading the posts and playing with the codes for myself. Well done guys.
You did an excellent job of covering a fair amount of intro option theory.