Mean Reverting Asset Trading Project Presentation CSCI-5551 Grant Meyers
Table of Contents Review Search Algorithm Parallelization Project Results
1. Review Mean Reverting Asset + Goal
Review – Mean Reverting Asset
Example Mean Reverting Asset Example Generated with: data=RandomFunction[OrnsteinUhlenbeckProcess[0,1,.1],{0,15,.1}] ListLinePlot[data,Filling->Axis,AxesLabel->{HoldForm[Time],HoldForm[Worth]},PlotLabel->HoldForm[Mean Reverting Stock Price - Centered at 0],LabelStyle->{12,GrayLevel[0],Bold}] Via Mathematica. Due to OrnsteinUhlenbeckProcess being a random process, your generated graph will look different, but will maintain the properties required.
Goal – Price Selection We want to select 2 prices. Price 1 is ‘buy’ price, this is an upper limit of when to start purchasing shares. Price 2 is ‘sell’ price, this is a lower limit of when to start selling shares.
Goal – Price Selection Better:
Goal – Optimal Price Selection What are the best buy / sell prices for a given stock? How do we find these prices?
Goal – Optimal Price Selection What are the best buy / sell prices for a given stock? Specific per stock. How do we find these prices? Algorithmic search on historic data
Table of Contents Search Algorithm Review Parallelization Project Results
2. Search Algorithm Recursive Refinement Search
Mathematical Model for Asset Price A ‘Mean Reverting Asset’ is very similar to an Ito Process or Ornstein Uhlenbeck Process. This similarity allows for a mathematical definition / prediction of what the stock price will do. Search is based on historical data and recursively refined the more iterations the simulation is run. Ito Process: https://en.wikipedia.org/wiki/It%C3%B4%27s_lemma https://reference.wolfram.com/language/ref/ItoProcess.html Ornstein Uhlenbeck process: https://en.wikipedia.org/wiki/Ornstein%E2%80%93Uhlenbeck_process http://planetmath.org/ornsteinuhlenbeckprocess Stochastic Differential Equation: https://en.wikipedia.org/wiki/Stochastic_differential_equation
Stochastic Differential Equation 𝛼(𝛽−𝑋(𝑡))ⅆ𝑡 operates much like Hooke’s law, in that when the price is higher than the ‘equilibrium’ level this term will pull it back down to the mean at the rate of 𝛼. If price is lower than the ‘equilibrium’ level this term will push it back up to the mean at the rate of 𝛼. Stochastic – “The term stochastic occurs in a wide variety of professional or academic fields to describe events or systems that are unpredictable due to the influence of a random variable.“ per Wikipedia. Effectively that is to say that the indeterminate part of the equation is ‘accounted’ for in the stochastic term.
Stochastic Approximation
Stochastic Approximation
Stochastic Approximation Directional Derivatve: http://math.oregonstate.edu/home/programs/undergrad/CalculusQuestStudyGuides/vcalc/grad/grad.html https://en.wikipedia.org/wiki/Directional_derivative
Stochastic Approximation Bias is calculated as the difference between a central difference approximation and the actual derivative at the point of the objective function. Central Difference Approximation: https://en.wikipedia.org/wiki/Finite_difference
Table of Contents Parallelization Review Search Algorithm Project Results
3. Parallelization Recursive Refinement Search
Equation Level Parallelism λ_𝑛 is meant to deal with uncorrelated noise, like inaccuracy of price quote, selling storm, incomplete information (less than Nyquist frequency for sampling speed). η_𝑛 is meant to deal with correlated noise, sell off in stock, quoting a volatile price, differences in price on different stock exchanges. 𝛿_𝑛 is constant and usually chosen as O(1/(n^(1/6))
Equation Level Parallelism Equations are ‘auto’ parallelized with Parallelize command. Mathematica will split the expression parts into sub programs and distribute.
Question Level Parallelism What is the best stock from a set of stocks S over time period P. S = set of stock symbols, ie {“MSFT”, “AAPL”, “NFLX”, “CVX”, “AMZN”} P = set of 2 dates, start and end, ie {“1 Jan 2015”, “13 Nov 2015”} Allows for running all symbols independently of each other, then ‘combining’ results. Done via ParallelSubmit on stock symbols. Can be done via ParallelSubmit with a function to generate the sets for testing https://reference.wolfram.com/language/guide/ParallelComputing.html
Question Level Parallelism What is the time period for stock S with in limited time period P. S = stock symbol, ie {“MSFT”} P = set of 2 dates, start search and end search, ie {“1 Jan 2015”, “13 Nov 2015”} Allows for processing a single set of data, with multiple concurrent search threads. ParallelSubmit with function to generate testing sets. Can be done via ParallelSubmit with a function to generate the sets for testing https://reference.wolfram.com/language/guide/ParallelComputing.html
Table of Contents Project Results Review Search Algorithm Parallelization Project Results
4. Project Results Sample Results
Sample Results – Time Period Best stock period for each: {“MSFT”, “AAPL”, “NFLX”, “CVX”, “AMZN”} Time Period: Jul 2014 – Oct 2015 – Microsoft (MSFT) Buy + Sell sets: 3 times of 233 shares. Buy: $42.86 Sell: $48.68 Profit Per Share: $17.46 ($5.82) $10,000 @Jul 2014 becomes $14,068.18 @Oct 2015 – ~41% gain Total Value calculated by getting the whole number of shares at original price for $10,000. Multiplying that by the profits per share, and times the number of buy/sell sets. This does not include reinvesting profits gained during the period, just the original $10,000 worth of shares.
Sample Results – Time Period 2 Best stock period for each: {“MSFT”, “AAPL”, “NFLX”, “CVX”, “AMZN”} Time Period: Feb 2011 – Jul 2012 – Apple (AAPL) Buy + Sell sets: 3 times of 132 shares. Buy: $75.60 Sell: $90.53 Profit Per Share: $44.79 ($14.93) $10,000 @Feb 2011 becomes $15,912.28 @Jul 2012 – ~60% gain Total Value calculated by getting the whole number of shares at original price for $10,000. Multiplying that by the profits per share, and times the number of buy/sell sets. This does not include reinvesting profits gained during the period, just the original $10,000 worth of shares.
Sample Results – Time Period 3 Best stock period for each: {“MSFT”, “AAPL”, “NFLX”, “CVX”, “AMZN”} Time Period: Sep 2013 – Jan 2015 – Netflix (NFLX) Buy + Sell sets: 3 times of 33 shares. Buy: $297.90 Sell: $346.20 Profit Per Share: $144.9 ($48.3) $10,000 @Sep 2013 becomes $14,781.7 @Jan 2015 – ~48% gain Total Value calculated by getting the whole number of shares at original price for $10,000. Multiplying that by the profits per share, and times the number of buy/sell sets. This does not include reinvesting profits gained during the period, just the original $10,000 worth of shares.
Sample Results – Time Period 4 Best stock period for each: {“MSFT”, “AAPL”, “NFLX”, “CVX”, “AMZN”} Time Period: Nov 2011 – Jul 2012 - Chevron (CVX) Buy + Sell sets: 5 times of 101 shares. Buy: $98.72 Sell: $108.30 Profit per Share: $47.9 ($9.58) $10,000 @Nov 2011 becomes $14,837.9 @Jul 2012 – 48% gain Total Value calculated by getting the whole number of shares at original price for $10,000. Multiplying that by the profits per share, and times the number of buy/sell sets. This does not include reinvesting profits gained during the period, just the original $10,000 worth of shares.
Sample Results – Time Period 5 Best stock period for each: {“MSFT”, “AAPL”, “NFLX”, “CVX”, “AMZN”} Time Period: Sep 2013 – Jan 2015 – Amazon (AMZN) Buy + Sell sets: 3 times of 33 shares. Buy: $297.90 Sell: $346.20 Profit Per Share: $144.9 ($48.3) $10,000 @Sep 2013 becomes $14,781.7 @Jan 2015 – ~48% gain Total Value calculated by getting the whole number of shares at original price for $10,000. Multiplying that by the profits per share, and times the number of buy/sell sets. This does not include reinvesting profits gained during the period, just the original $10,000 worth of shares.
Sample Results – Best Stock in Period Best stock of: {“MSFT”, “AAPL”, “NFLX”, “CVX”, “AMZN”} Time Period: Nov 2010 – Nov 2015 – Apple (AAPL) Buy + Sell sets: 3 times of 132 shares. Buy: $75.60 Sell: $90.53 Profit Per Share: $44.79 ($14.93) $10,000 @Feb 2011 becomes $15,912.28 @Jul 2012 – ~60% gain Total Value calculated by getting the whole number of shares at original price for $10,000. Multiplying that by the profits per share, and times the number of buy/sell sets. This does not include reinvesting profits gained during the period, just the original $10,000 worth of shares.
Specific Questions to be Answered 1 Data Sample Related Does the algorithm work when there is a macroscopic change in the overall market? No. Some sort of capital preservation or opportunity cost maximum needs to be used. Does changing the training & applying time windows affect the return? How much? Do longer windows fair better or shorter ones? A) Yes. B) Depends. C) Inconclusive. Are there any dependable seasonal fluctuations? Inconclusive. Does the asset ‘class’ affect the effectiveness of the algorithm? Yes, most stocks are NOT mean reverting.
Specific Questions to be Answered 2 Performance Related How fast can the Xeon server crunch the numbers? How fast can the Hydra server crunch the numbers? Is there a better way to format the data than the default JSON format? Given the use of common mathematical operations, could they be switched out to a format that uses matrix multiplication?