Oracle Monte Carlo Stock Simulations

  • Referring to the Monte Carlo series, we will explore future scenarios by simulating Oracle stock returns by random sampling and extrapolating the stock price into the near future.
  • TX-based Oracle Corporation (NYSE:ORCL) is making significant strides in generative AI (GenAI) technology, earnings double in Q4 2023. The company’s progress is marked by its lucrative partnerships with Nvidia (NASDAQ:NVDA) and Elon Musk’s xAI.
  • In fact, Oracle has secured contracts exceeding $4 billion for capacity on its Generation 2 Cloud to train generative AI models. These models are linked with platforms like ChatGPT and Bard. This development has contributed to a remarkable doubling of Oracle’s earnings for the Q4 2023.
  • YF Summary: ORCL boasts a Growth Style Score of A and VGM Score of B, and holds a Zacks Rank #3 (Hold) rating. Its bottom-line is projected to rise 8.2% year-over-year for 2024, while Wall Street anticipates its top line to improve by 7.2%. Looking at cash flow, Oracle is expected to report cash flow growth of 18.6% this year; ORCL has generated cash flow growth of 3.2% over the past three to five years.

Input Stock Data

  • Let’s set the working directory YOURPATH
import os
os.chdir('YOURPATH')    # Set working directory
os. getcwd()

and download the stock data

import datetime as dt
from datetime import datetime as dt
from dateutil.relativedelta import relativedelta
import yfinance as yf  
end = dt.today()
start = dt.today() - relativedelta(years=1)
data = yf.download('ORCL', start, end)
data.tail()
Oracle input data table

Monte Carlo Simulation

  • Let’s run the Monte Carlo stock simulator
# Distribution parameters
v = 2.91162520
scale = 1.21872294e-02
loc = -8.13209384e-05
# importing the datetime library to generate dates for the future

from datetime import datetime, timedelta
from scipy import stats

# the simulations' starting price
initial_price = data['Close'].iloc[-1]
# number of simulation days
N_steps = 14
# number of scenarios in simulation
N_sims = 1000
# here we sample the distribution for 14x50000 future returns
rets_t= stats.t.rvs(df= v,loc = loc, scale =scale, size = (N_steps, N_sims))
# here we calculate the price at each timestep from the generated log returns
sim = (np.exp(rets_t.cumsum(axis = 1)))
# we save the results in a dataframe and put them on equal footing
results = pd.DataFrame(np.array(sim).reshape(N_sims, N_steps).T)
results = results.divide(results.iloc[0])*initial_price

time = pd.date_range(start = data.index[-1],
                     end = data.index[-1] + timedelta(days = N_steps - 1))
# lets look at the final price 
final_price_t = results.iloc[-1] 
plt.figure(figsize=(10,6))
plt.hist(final_price_t[final_price_t < 5*initial_price], density = True, bins = 100)
plt.title(f'Future Price distribution after {N_steps} days over {N_sims} scenarios')
plt.xlabel('Price USD')
plt.ylabel('Probability Density')
Oracle Monte Carlo simulation: probability density distribution after 14 days over 1000 scenarios
print (time)
DatetimeIndex(['2023-10-19', '2023-10-20', '2023-10-21', '2023-10-22',
               '2023-10-23', '2023-10-24', '2023-10-25', '2023-10-26',
               '2023-10-27', '2023-10-28', '2023-10-29', '2023-10-30',
               '2023-10-31', '2023-11-01'],
              dtype='datetime64[ns]', freq='D')
plt.figure(figsize=(18,15))
SMALL_SIZE = 20
MEDIUM_SIZE = 20
BIGGER_SIZE = 20
plt.rc('font', size=SMALL_SIZE)          # controls default text sizes
plt.rc('axes', titlesize=SMALL_SIZE)     # fontsize of the axes title
plt.rc('axes', labelsize=MEDIUM_SIZE)    # fontsize of the x and y labels
plt.rc('xtick', labelsize=18)    # fontsize of the tick labels
plt.rc('ytick', labelsize=SMALL_SIZE)    # fontsize of the tick labels
plt.rc('legend', fontsize=SMALL_SIZE)    # legend fontsize
plt.rc('figure', titlesize=BIGGER_SIZE)  # fontsize of the figure title
plt.xticks(rotation=45, ha='right')
plt.plot(time,results)
plt.xlabel('Date')
plt.ylabel('Price USD')
plt.title('Oracle Price Monte Carlo Simulation')
plt.ylim(top=200)
Oracle Price USD Monte Carlo Simulation:  14 days over 1000 scenarios
  • According to TradingView, the ORCL beta value of 1.2 suggests that the stock tends to move with more momentum than the S&P 500.
  • The above simulation supports the weekly ORCL technical analysis based upon the most popular technical indicators, such as Moving Averages, Oscillators and Pivots.

Summary

  • Our Monte Carlo simulation results are consistent with the current Zacks Rank 3-Hold for ORCL.
  • Regarding the most recent ORCL trading ideas, these simulations confirm that the stock has a bullish potential. It is looking like a reversal on the weekly and daily chart.
  • We believe that ORCL should be on investors’ short lists because of its impressive growth fundamentals, a good Zacks Rank, and strong Growth and VGM Style Scores.

Explore More


← Back

Thank you for your response. ✨


Discover more from Our Blogs

Subscribe to get the latest posts sent to your email.

Leave a comment

Discover more from Our Blogs

Subscribe now to keep reading and get access to the full archive.

Continue reading