केस स्टडी: S&P 500 प्राइस सिमुलेशन

Python में Time Series डेटा मैनिपुलेट करना

Stefan Jansen

Founder & Lead Data Scientist at Applied Artificial Intelligence

रैंडम वॉक और सिमुलेशन

  • दैनिक स्टॉक रिटर्न का अनुमान लगाना कठिन है
  • मॉडल मानते हैं कि वे अक्सर रैंडम होते हैं
  • Numpy रैंडम नंबर जनरेट करने देता है
  • रैंडम रिटर्न से प्राइस तक: .cumprod() उपयोग करें
  • दो उदाहरण:
    • रैंडम रिटर्न जनरेट करें
    • वास्तविक SP500 रिटर्न का रैंडम चयन
Python में Time Series डेटा मैनिपुलेट करना

रैंडम नंबर जनरेट करें

from numpy.random import normal, seed

from scipy.stats import norm
seed(42)
random_returns = normal(loc=0, scale=0.01, size=1000)
sns.distplot(random_returns, fit=norm, kde=False)

ch3_3_v2 - केस स्टडी - SP500 सिमुलेशन.011.png

Python में Time Series डेटा मैनिपुलेट करना

रैंडम प्राइस पाथ बनाएं

return_series = pd.Series(random_returns)

random_prices = return_series.add(1).cumprod().sub(1)
random_prices.mul(100).plot()

ch3_3_v2 - केस स्टडी - SP500 सिमुलेशन.013.png

Python में Time Series डेटा मैनिपुलेट करना

S&P 500 प्राइस और रिटर्न

data = pd.read_csv('sp500.csv', parse_dates=['date'], index_col='date')

data['returns'] = data.SP500.pct_change()
data.plot(subplots=True)

ch3_3_v2 - केस स्टडी - SP500 सिमुलेशन.015.png

Python में Time Series डेटा मैनिपुलेट करना

S&P रिटर्न डिस्ट्रीब्यूशन

sns.distplot(data.returns.dropna().mul(100), fit=norm)

ch3_3_v2 - केस स्टडी - SP500 सिमुलेशन.017.png

Python में Time Series डेटा मैनिपुलेट करना

रैंडम S&P 500 रिटर्न जनरेट करें

from numpy.random import choice

sample = data.returns.dropna()
n_obs = data.returns.count()
random_walk = choice(sample, size=n_obs)
random_walk = pd.Series(random_walk, index=sample.index)
random_walk.head()
DATE
2007-05-29   -0.008357
2007-05-30    0.003702
2007-05-31   -0.013990
2007-06-01    0.008096
2007-06-04    0.013120
Python में Time Series डेटा मैनिपुलेट करना

रैंडम S&P 500 प्राइस (1)

start = data.SP500.first('D')
DATE
2007-05-25    1515.73
Name: SP500, dtype: float64
sp500_random = start.append(random_walk.add(1))

sp500_random.head())
DATE
2007-05-25    1515.730000
2007-05-29       0.998290
2007-05-30       0.995190
2007-05-31       0.997787
2007-06-01       0.983853
dtype: float64
Python में Time Series डेटा मैनिपुलेट करना

रैंडम S&P 500 प्राइस (2)

data['SP500_random'] = sp500_random.cumprod()

data[['SP500', 'SP500_random']].plot()

च3_3_v2 - केस स्टडी - SP500 सिमुलेशन.023.png

Python में Time Series डेटा मैनिपुलेट करना

अभ्यास करते हैं!

Python में Time Series डेटा मैनिपुलेट करना

Preparing Video For Download...