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


Go back

Your message has been sent

Warning

One-Time
Monthly
Yearly

Make a one-time donation

Make a monthly donation

Make a yearly donation

Choose an amount

€5.00
€15.00
€100.00
€5.00
€15.00
€100.00
€5.00
€15.00
€100.00

Or enter a custom amount


Your contribution is appreciated.

Your contribution is appreciated.

Your contribution is appreciated.

DonateDonate monthlyDonate yearly

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