Evergrande stock price analysis python
China Evergrande Group is a real estate sector and its industry is real estate development it is situated in China.
As of my last knowledge update in September 2021, Evergrande Group (China Evergrande Group), also known as China Evergrande or simply Evergrande, was a major Chinese real estate developer and one of the largest property developers in China. However, it was facing significant financial difficulties and had a highly scrutinized share price.
Please note that the situation regarding Evergrande may have evolved significantly since my last update. As of September 2021, here are some key points related to Ever Grande's share price:
Financial Troubles: Evergrande was grappling with a substantial debt burden, estimated to be one of the largest among Chinese companies. This financial strain led to concerns about its ability to meet its debt obligations, including bond repayments.
Share Price Volatility: Due to the uncertainty surrounding Evergrande's financial health, its share price experienced significant volatility. There were periods of both sharp declines and rebounds in its share price.
Government Intervention: The Chinese government has taken various measures to address the issues related to Evergrande's debt. These measures included urging the company to address its debt problems and exploring ways to manage the potential fallout.
Impact on Real Estate Market: Evergrande's financial troubles had the potential to impact China's real estate market and the broader economy due to its extensive real estate holdings and operations.
Credit Downgrades: Several credit rating agencies had downgraded Evergrande's credit rating, which further increased concerns among investors and creditors.
Debt Restructuring: Evergrande had initiated discussions with creditors and was exploring options for debt restructuring to manage its financial challenges.
Given the evolving nature of financial situations, it's important to note that circumstances related to Evergrande's share price and financial health may have changed significantly since my last update. Therefore, for the most up-to-date information on Evergrande's share price and its financial situation, it is recommended to consult reliable financial news sources and conduct thorough research. Additionally, consulting with financial experts or analysts may provide valuable insights into the current status of Evergrande's shares and the implications for investors.
#China Evergrande Group (3333.HK)
df = yf.download('3333.HK',
start='2012-01-01',
end='2021-09-25',
progress=False)
df
Open | High | Low | Close | Adj Close | Volume | |
---|---|---|---|---|---|---|
Date | ||||||
2012-01-03 | 3.27 | 3.33 | 3.23 | 3.25 | 1.742387 | 24431314 |
2012-01-04 | 3.27 | 3.28 | 3.06 | 3.07 | 1.645886 | 37786103 |
2012-01-05 | 3.07 | 3.12 | 2.98 | 2.99 | 1.602996 | 50452518 |
2012-01-06 | 2.98 | 3.04 | 2.96 | 3.03 | 1.624441 | 21649245 |
2012-01-09 | 3.00 | 3.15 | 2.97 | 3.13 | 1.678053 | 39517727 |
... | ... | ... | ... | ... | ... | ... |
2021-09-17 | 2.62 | 2.63 | 2.28 | 2.54 | 2.540000 | 215993769 |
2021-09-20 | 2.50 | 2.53 | 2.06 | 2.28 | 2.280000 | 133605599 |
2021-09-21 | 2.36 | 2.36 | 2.12 | 2.27 | 2.270000 | 171239169 |
2021-09-23 | 2.61 | 3.00 | 2.44 | 2.67 | 2.670000 | 737998696 |
2021-09-24 | 2.60 | 2.64 | 2.30 | 2.36 | 2.360000 | 270351006 |
2398 rows × 6 columns
df = df.loc[:, ['Adj Close']]
df.rename(columns={'Adj Close':'adj_close'}, inplace=True)
df['simple_rtn'] = df.adj_close.pct_change()
df['log_rtn'] = np.log(df.adj_close/df.adj_close.shift(1))
def realized_volatility(x):
return np.sqrt(np.sum(x**2))
df_rv = df.groupby(pd.Grouper(freq='M')).apply(realized_volatility)
df_rv.rename(columns={'log_rtn': 'rv'}, inplace=True)
df_rv.rv = df_rv.rv * np.sqrt(12)
fig, ax = plt.subplots(2, 1, sharex=True)
ax[0].plot(df)
ax[1].plot(df_rv)
fig, ax = plt.subplots(3, 1, figsize=(24, 20), sharex=True)
df.adj_close.plot(ax=ax[0])
ax[0].set(title = 'Evergrande time series',
ylabel = 'Stock price ($)')
df.simple_rtn.plot(ax=ax[1])
ax[1].set(ylabel = 'Simple returns (%)')
df.log_rtn.plot(ax=ax[2])
ax[2].set(xlabel = 'Date',
ylabel = 'Log returns (%)')
The resulting plot contains three axes. Each one of them presents a different series: raw prices, simple returns, and log returns. Inspecting the plot in such a setting enables us to see the periods of heightened volatility and what was happening at the same time with the price of Evergrande stock. Additionally, we see how similar simple and log returns are.
Calculate the rolling mean and standard deviation: Evergrande stock
df_rolling = df[['simple_rtn']].rolling(window=21) \
.agg(['mean', 'std'])
df_rolling.columns = df_rolling.columns.droplevel()
df_outliers = df.join(df_rolling)
def indentify_outliers(row, n_sigmas=3):
x = row['simple_rtn']
mu = row['mean']
sigma = row['std']
if (x > mu + 3 * sigma) | (x < mu - 3 * sigma):
return 1
else:
return 0
df_outliers['outlier'] = df_outliers.apply(indentify_outliers,
axis=1)
outliers = df_outliers.loc[df_outliers['outlier'] == 1,
['simple_rtn']]
fig, ax = plt.subplots()
ax.plot(df_outliers.index, df_outliers.simple_rtn,
color='blue', label='Normal')
ax.scatter(outliers.index, outliers.simple_rtn,
color='red', label='Anomaly')
ax.set_title("Evergrande's stock returns")
ax.legend(loc='lower right')
In the plot, we can observe outliers marked with a red dot. One thing to notice is that when there are two large returns in the vicinity, the algorithm identifies the first one as an outlier and the second one as a regular observation. This might be due to the fact that the first outlier enters the rolling window and affects the moving average/standard deviation.
Dep. Variable: | D.adj_close | No. Observations: | 507 |
---|---|---|---|
Model: | ARIMA(2, 1, 1) | Log Likelihood | -690.248 |
Method: | css-mle | S.D. of innovations | 0.944 |
Date: | Sat, 25 Sep 2021 | AIC | 1390.496 |
Time: | 17:07:18 | BIC | 1411.639 |
Sample: | 01-15-2012 | HQIC | 1398.788 |
- 09-26-2021 |
coef | std err | z | P>|z| | [0.025 | 0.975] | |
---|---|---|---|---|---|---|
const | 0.0015 | 0.040 | 0.037 | 0.971 | -0.076 | 0.079 |
ar.L1.D.adj_close | -0.5249 | 1.225 | -0.428 | 0.669 | -2.927 | 1.877 |
ar.L2.D.adj_close | -0.0375 | 0.069 | -0.542 | 0.588 | -0.173 | 0.098 |
ma.L1.D.adj_close | 0.4730 | 1.225 | 0.386 | 0.700 | -1.929 | 2.875 |
Real | Imaginary | Modulus | Frequency | |
---|---|---|---|---|
AR.1 | -2.2741 | +0.0000j | 2.2741 | 0.5000 |
AR.2 | -11.7411 | +0.0000j | 11.7411 | 0.5000 |
MA.1 | -2.1141 | +0.0000j | 2.1141 | 0.5000 |
0 Comments