๐Ÿ“ˆ ์ด๋ฒˆ ํฌ์ŠคํŒ…์—์„œ๋Š” KOSPI ๋ฐ์ดํ„ฐ๋ฅผ ์‹œ๊ฐํ™”ํ•˜๊ณ  ์ด๋™ํ‰๊ท ์„ ์„ ๋ฐ”ํƒ•์œผ๋กœ ํ–ฅํ›„ KOSPI ์ง€์ˆ˜๋ฅผ ์˜ˆ์ธกํ•ด ๋ณผ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๐Ÿ† 1. Datetime Index ์ƒ์„ฑ

# ์ฝ”์Šคํ”ผ์ง€์ˆ˜์˜ ์ข…๊ฐ€๋ฅผ plotting
fig = go.Figure()
fig.add_trace(go.Line(x = kospi.index, y = kospi['Close'], marker_color = '#8c8cf5'))
fig.update_layout({'template' : 'plotly_white'})
fig.show()


๐Ÿ“ˆ ์‹œํ—˜์‚ผ์•„ ๊ทธ๋ž˜ํ”„๋ฅผ ์ถœ๋ ฅํ•ด๋ณธ ๊ฒฐ๊ณผ x์ถ•์ด ๋ฐ์ดํ„ฐ์˜ ๊ฐœ์ˆ˜๋กœ ๋ผ๋ฒจ๋ง ๋œ ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ์ฆ‰, ๋ฐ์ดํ„ฐ์˜ ์ธ๋ฑ์Šค๊ฐ€ x์ถ•์„ ๊ตฌ์„ฑํ•œ ์ƒํƒœ์ด๊ธฐ์— Date์—ด์„ ์ธ๋ฑ์Šค๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ํ–ฅํ›„ ๋ถ„์„๊ณผ ์‹œ๊ฐํ™”๋ฅผ ์ง„ํ–‰ํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ•˜์˜€์Šต๋‹ˆ๋‹ค.

# ๋ฐ์ดํ„ฐ์˜ Date column์„ datetime64 ์ž๋ฃŒํ˜•์œผ๋กœ ๋ณ€๊ฒฝ
kospi['Date'] = pd.to_datetime(kospi['Date'])
kospi.info()
>> Out[34]

RangeIndex: 11031 entries, 0 to 11030
Data columns (total 7 columns):
 #   Column  Non-Null Count  Dtype         
---  ------  --------------  -----         
 0   Date    11031 non-null  datetime64[ns]
 1   Close   11031 non-null  float64       
 2   Open    11031 non-null  float64       
 3   High    11031 non-null  float64       
 4   Low     11031 non-null  float64       
 5   Volume  11031 non-null  float64       
 6   Change  11031 non-null  float64       
dtypes: datetime64[ns](1), float64(6)
memory usage: 603.4 KB
# ๋ณ€๊ฒฝํ•œ datetime์„ ์ธ๋ฑ์Šค๋กœ ์„ค์ •ํ•จ
kospi = kospi.set_index('Date').copy()
kospi


๐Ÿ† 2. ์‹œ๊ฐํ™”

# ํ•œ ๋„ํ‘œ์— ์‹œ๊ฐ€, ์ข…๊ฐ€, ๊ณ ๊ฐ€, ์ €๊ฐ€๋ฅผ ๋ชจ๋‘ ์ถœ๋ ฅ
fig = go.Figure()
fig.add_trace(go.Line(x = kospi.index, y = kospi['Close'], name = 'Close'))
fig.add_trace(go.Line(x = kospi.index, y = kospi['Open'], name = 'Open'))
fig.add_trace(go.Line(x = kospi.index, y = kospi['High'], name = 'High'))
fig.add_trace(go.Line(x = kospi.index, y = kospi['Low'], name = 'Low'))

fig.update_layout(
    {
        'title' : {'text':'๋…„๋„์— ๋”ฐ๋ฅธ KOSPI ์ง€์ˆ˜ - ์ข…๊ฐ€, ์‹œ๊ฐ€, ๊ณ ๊ฐ€, ์ €๊ฐ€'},
        'xaxis' : {'title':'๋…„๋„', 'showticklabels': True},
        'yaxis' : {'title':'KOSPI','showticklabels': True},
        
        'template' : 'plotly_white'
    })

fig.show()


๐Ÿ“ˆ ์ผ๋ฐ˜์ ์ธ ๋ฐฉ์‹์€ ์•„๋‹ˆ์ง€๋งŒ, ์ „์ฒด์ ์ธ ์ถ”์„ธ๋ฅผ ์•Œ์•„๋ณด๊ธฐ ์œ„ํ•ด ํ•œ ๋„ํ‘œ์— ์ข…๊ฐ€, ์‹œ๊ฐ€, ์ €๊ฐ€, ๊ณ ๊ฐ€๋ฅผ ๋ชจ๋‘ plotting ํ•ด๋ณด์•˜์Šต๋‹ˆ๋‹ค. ์ „์ฒด์ ์œผ๋กœ ์˜ค๋ฒ„๋žฉ๋˜๋Š” ๋„ํ‘œ๊ฐ€ ๊ทธ๋ ค์กŒ์œผ๋ฉฐ, ๋ฐ์ดํ„ฐ๊ฐ€ ๊ต‰์žฅํžˆ ์˜ค๋žœ ๊ธฐ๊ฐ„์— ๋Œ€ํ•œ ๋ฐ์ดํ„ฐ์ด๊ธฐ์— ์ „์ฒด ๋ฒ”์œ„์—์„œ ๋ชจ๋“  ์ฃผ๊ฐ€๋ฅผ ์‹œ๊ฐํ™”ํ•˜๋Š” ๊ฒƒ์€ ์ƒ๋‹นํžˆ ๋น„ํšจ์œจ์ ์ธ ์ผ์ด๋ผ ์ƒ๊ฐํ•˜์˜€์Šต๋‹ˆ๋‹ค.

๐Ÿ† 3. Rolling Window : ์ด๋™ํ‰๊ท ์„ 

๐Ÿ“ˆ ์ฃผ๊ฐ€ ์˜ˆ์ƒ์— ์ค‘์š”ํ•œ ์ˆ˜์น˜์ค‘ ํ•˜๋‚˜๋กœ ์ด๋™ํ‰๊ท ์„ (moving average)์ด ์žˆ์Šต๋‹ˆ๋‹ค. (๋‹น์ผ-x์ผ)~(๋‹น์ผ)๊นŒ์ง€ ์ฃผ๊ฐ€์˜ ํ‰๊ท ์„ ์ด์€ ์„ ์ž…๋‹ˆ๋‹ค.

๐Ÿ“ˆ ์ฃผ๋กœ 5์ผ, 10์ผ, 20์ผ, 60์ผ, 120์ผ ์ดํ‰์„ ์„ ์‚ฌ์šฉํ•˜๋ฉฐ, 20์ผ ์ดํ‰์„ ๊นŒ์ง€๋Š” ๋‹จ๊ธฐ, 60์ผ๊นŒ์ง€๋Š” ์ค‘๊ธฐ, 120์ผ ์ดˆ๊ณผ ์ดํ‰์„ ์€ ์žฅ๊ธฐ ์ดํ‰์„ ์œผ๋กœ ๊ตฌ๋ถ„ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค.

๐Ÿ“ˆ ์ด๋™ํ‰๊ท ์„ ์˜ ์›€์ง์ž„์œผ๋กœ ์ฃผ๊ฐ€๋ฅผ ์˜ˆ์ธกํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋‹จ๊ธฐ์ด๋™ํ‰๊ท ์„ ๊ณผ ์žฅ๊ธฐ์ด๋™ํ‰๊ท ์„ ์„ ๋น„๊ตํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  • ํˆฌ์ž๋ก ์—์„œ ๋‹จ๊ธฐ์ด๋™ํ‰๊ท ์„ ์ด ์žฅ๊ธฐ์ด๋™ํ‰๊ท ์„ ๋ณด๋‹ค ์œ„์— ์žˆ๋Š” ๊ฒฝ์šฐ(์ •๋ฐฐ์—ด), ๊ทธ ๊ฒน์ณ์„œ ์˜ฌ๋ผ๊ฐ€๊ธฐ ์‹œ์ž‘ํ•˜๋Š” ์ ์„ ๊ณจ๋“ ํฌ๋กœ์Šค๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ์ด๋•Œ ์ฃผ๊ฐ€๊ฐ€ ์˜ค๋ฅผ ๊ฒƒ์ด๋ผ ์˜ˆ์ธกํ•ฉ๋‹ˆ๋‹ค.
  • ๋ฐ˜๋ฉด ๋‹จ๊ธฐ์ด๋™ํ‰๊ท ์„ ์ด ์žฅ๊ธฐ์ด๋™ํ‰๊ท ์„ ๋ณด๋‹ค ๋ฐ‘์— ์žˆ๋Š” ๊ฒฝ์šฐ(์—ญ๋ฐฐ์—ด), ๊ฒน์ณ์„œ ๋‚ด๋ ค๊ฐ€๊ธฐ ์‹œ์ž‘ํ•˜๋Š” ์ ์„ ๋ฐ๋“œํฌ๋กœ์Šค๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ์ด๋•Œ ์ฃผ๊ฐ€๊ฐ€ ํ•˜๋ฝํ•  ๊ฒƒ์ด๋ผ ์˜ˆ์ธกํ•ฉ๋‹ˆ๋‹ค.
  • ์ผ๋ฐ˜์ ์œผ๋กœ ์ฃผ๊ฐ€ ๋ฐ์ดํ„ฐ๋Š” ์‹œ๊ณ„์—ด ๋ฐ์ดํ„ฐ์ธ ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด์„œ ํŒŒ์ด์ฌ์€ .rolling() ํ•จ์ˆ˜๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
# ์šฐ๋ฆฌ๊ฐ€ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๋ฐ์ดํ„ฐํ”„๋ ˆ์ž„์—์„œ ํ•˜๋‚˜์˜ ์—ด, ์ฆ‰ Series๋ฅผ s๋ผ๊ณ  ํ•˜๋ฉด ํ‰๊ท ์„ ๊ตฌํ•˜๊ณ  ์‹ถ์€ ์ผ์ˆ˜ X์— ๋Œ€ํ•˜์—ฌ
r = s.rolling(window=X).mean()

๐Ÿ“ˆ ์ด๋ฅผ ํ†ตํ•ด์„œ ๋‹จ๊ธฐ์ดํ‰์„ ๊ณผ ์žฅ๊ธฐ์ดํ‰์„ ์„ ๋น„๊ตํ•˜๊ฑฐ๋‚˜, ์‹ค์ œ ์ฃผ๊ฐ€๋ฅผ ๋น„๊ตํ•˜์—ฌ ๋ฏธ๋ž˜์˜ ์ฃผ๊ฐ€๋ฅผ ์˜ˆ์ธกํ•ฉ๋‹ˆ๋‹ค.


๐Ÿ† 3.1. ์ด๋™ํ‰๊ท  ๋ฐ์ดํ„ฐ ์ƒ์„ฑ ๋ฐ plotting

# 5, 10, 20, 60, 120, 200์ผ ์ด๋™ํ‰๊ท  ๊ตฌํ•จ
mov_5 = kospi['Close'].rolling(window=5).mean()
mov_10 = kospi['Close'].rolling(window=10).mean()
mov_20 = kospi['Close'].rolling(window=20).mean()
mov_60 = kospi['Close'].rolling(window=60).mean()
mov_120 = kospi['Close'].rolling(window=120).mean()
mov_200 = kospi['Close'].rolling(window=200).mean()

# kospi ๋ฐ์ดํ„ฐํ”„๋ ˆ์ž„์— ์ด๋™ํ‰๊ท  ๋ฐ์ดํ„ฐ ์ถ”๊ฐ€
kospi['mov_5'] = mov_5
kospi['mov_10'] = mov_10
kospi['mov_20'] = mov_20
kospi['mov_60'] = mov_60
kospi['mov_120'] = mov_120
kospi['mov_200'] = mov_200
kospi



๐Ÿ† 3.2. ์ƒ๊ด€๊ด€๊ณ„ ๋ถ„์„

๐Ÿ“ˆ ์ด๋ ‡๊ฒŒ ์ด๋™ํ‰๊ท ์„ ๊นŒ์ง€ ๊ตฌํ•ด์„œ ๋„ฃ์€ ์ƒˆ๋กœ์šด ๋ฐ์ดํ„ฐํ”„๋ ˆ์ž„์ด ์ƒ์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
๐Ÿ“ˆ ์ด๋ฒˆ์—๋Š” ์ด ๋ฐ์ดํ„ฐํ”„๋ ˆ์ž„์œผ๋กœ๋ถ€ํ„ฐ ๊ฐ column๋“ค ๊ฐ„์˜ ์ƒ๊ด€๊ด€๊ณ„๋ฅผ ๋ถ„์„ํ•ด๋ณผ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

kospi_corr = kospi.corr()

mask = np.zeros_like(kospi_corr, dtype=np.bool)
mask[np.triu_indices_from(mask)] = True

plt.figure(figsize = (12,9))
ax = sns.heatmap(kospi_corr, mask = mask, annot=True, annot_kws=dict(color='r'), linewidths=.5, cmap='Blues')
plt.show()


  • ์ƒ๊ด€๊ด€๊ณ„๋ฅผ ๊ตฌํ•œ ๊ฒฐ๊ณผ ์ข…๊ฐ€, ์‹œ๊ฐ€, ๊ณ ๊ฐ€, ์ €๊ฐ€์™€ ๊ฐ๊ฐ์˜ ์ด๋™ํ‰๊ท ์„ ๋“ค์€ ์„œ๋กœ ์•„์ฃผ ๋†’์€ ์–‘์˜ ์ƒ๊ด€๊ด€๊ณ„๋ฅผ ๋ณด์ž„์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ๊ฑฐ์˜ ์ •๋น„๋ก€ํ•œ๋‹ค๊ณ  ๋ณผ ์ˆ˜ ์žˆ์„ ๊ฒƒ ๊ฐ™๋„ค์š”.
  • ๋ฐ˜๋ฉด ๋ณ€๋™๋ฅ ๊ณผ ๋‹ค๋ฅธ column๋“ค ๊ฐ„์˜ ์ƒ๊ด€๊ด€๊ณ„๋Š” ๋งค์šฐ ์ž‘์€ ์Œ์˜ ์ƒ๊ด€๊ด€๊ณ„๋ฅผ ๋ณด์—ฌ์ฃผ์—ˆ์Šต๋‹ˆ๋‹ค.
  • ๊ฑฐ๋ž˜๋Ÿ‰์€ ๋‹ค๋ฅธ column๋“ค๊ณผ ์–‘์˜ ์ƒ๊ด€๊ด€๊ณ„๋ฅผ ๊ฐ€์ง€๊ธฐ๋Š” ํ•˜์ง€๋งŒ ๋ณดํŽธ์ ์ธ ๊ธฐ์ค€์ธ 0.7์„ ๋„˜์ง€ ๋ชปํ•  ๋ฟ๋”๋Ÿฌ, ์ด๋™ํ‰๊ท ์„ ๋“ค๊ณผ ๋น„๊ตํ•˜๋ฉด ๊ทธ๋ ‡๊ฒŒ ๋†’์€ ๊ฐ’์€ ์•„๋‹ ๊ฒƒ์ด๋ผ ๊ฒฐ๋ก ์ง€์—ˆ์Šต๋‹ˆ๋‹ค.
  • ์ด์—, ์ฃผ์‹์˜ ๊ฐ€๊ฒฉ์„ ์˜ˆ์ธกํ•˜๋Š” ๋ฐ์— ๊ฐ๊ฐ์˜ ์ด๋™ํ‰๊ท ์„ ์ด ๊ด€๊ณ„๊ฐ€ ์žˆ๋‹ค๊ณ  ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ด๋ฒˆ ์‹œ๊ฐํ™”์—์„œ ์ฝ”์Šคํ”ผ์ง€์ˆ˜๋ฅผ ์˜ˆ์ธกํ•˜๊ธฐ ์œ„ํ•ด ์ข…๊ฐ€์™€ ์ด๋™ํ‰๊ท ์„ ์„ ์‚ฌ์šฉํ•  ๊ณ„ํš์ž…๋‹ˆ๋‹ค.

๐Ÿ† 3.3. ๋‹จ๊ธฐ์ดํ‰์„ , ์žฅ๊ธฐ์ดํ‰์„ , ์ฝ”์Šคํ”ผ์ง€์ˆ˜ ๋น„๊ต

# 200์ผ ์žฅ๊ธฐ์ดํ‰์„ ๊ณผ ์‹ค์ œ ์ข…๊ฐ€๋ฅผ ๋น„๊ต
fig = go.Figure()
fig.add_trace(go.Line(x = kospi.index, y = kospi['Close'], name = '์‹ค์ œ ์ข…๊ฐ€', marker_color = '#8c8cf5'))
fig.add_trace(go.Line(x = kospi.index, y = kospi['mov_200'], name = '200์ผ ์žฅ๊ธฐ์ดํ‰์„ ', marker_color = '#ff0000'))

fig.update_layout(
    {
        'title' : {'text':'200์ผ ์žฅ๊ธฐ์ดํ‰์„ ๊ณผ ์‹ค์ œ ์ข…๊ฐ€ ๋น„๊ต'},
        'xaxis' : {'title':'๋…„๋„', 'showticklabels': True},
        'yaxis' : {'title':'KOSPI','showticklabels': True},
        
        'template' : 'plotly_white'
    })

fig.show()


  • 200์ผ๊ฐ„์˜ ์žฅ๊ธฐ์ดํ‰์„ ๊ณผ ์‹ค์ œ ์ข…๊ฐ€๋ฅผ ๋น„๊ตํ•œ ๊ฒฐ๊ณผ ์žฅ๊ธฐ์ดํ‰์„ ์˜ ์ „์ฒด์ ์ธ ์ถ”์„ธ๊ฐ€ ์‹ค์ œ ์ข…๊ฐ€๋ฅผ ๋”ฐ๋ผ๊ฐ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค๋งŒ, ์ „์ฒด์ ์ธ ์ถ”์„ธ๊ฐ€ ์›๋ž˜์˜ ์ง€์ˆ˜๋ณด๋‹ค ๋’ค์ชฝ์—์„œ ํ˜•์„ฑ๋œ๋‹ค๋Š” ์ ์ด ๋‹ค๋ฆ…๋‹ˆ๋‹ค. ์ด์ œ ๋‹จ๊ธฐ์ดํ‰์„ ๊ณผ ์‹ค์ œ ์ฃผ๊ฐ€์™€์˜ ๊ด€๊ณ„๋ฅผ ๋น„๊ตํ•ด๋ด…์‹œ๋‹ค.
# 20์ผ ๋‹จ๊ธฐ์ดํ‰์„ ๊ณผ ์‹ค์ œ ์ข…๊ฐ€๋ฅผ ๋น„๊ต
fig = go.Figure()
fig.add_trace(go.Line(x = kospi.index, y = kospi['Close'], name = '์‹ค์ œ ์ข…๊ฐ€', marker_color = '#8c8cf5'))
fig.add_trace(go.Line(x = kospi.index, y = kospi['mov_20'], name = '20์ผ ๋‹จ๊ธฐ์ดํ‰์„ ', marker_color = '#ff0000'))

fig.update_layout(
    {
        'title' : {'text':'20์ผ ๋‹จ๊ธฐ์ดํ‰์„ ๊ณผ ์‹ค์ œ ์ข…๊ฐ€ ๋น„๊ต'},
        'xaxis' : {'title':'๋…„๋„', 'showticklabels': True},
        'yaxis' : {'title':'KOSPI','showticklabels': True},
        
        'template' : 'plotly_white'
    })

fig.show()


  • 20์ผ ์ฐจ์ด์ด๊ธฐ ๋•Œ๋ฌธ์— ๊ฑฐ์˜ ๊ฐ™์€ ๋ชจ์Šต์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค. ๋ณธ๊ฒฉ์ ์ธ ์ฃผ๊ฐ€ ์˜ˆ์ธก์„ ์œ„ํ•ด ์ด์ œ ๋‹จ๊ธฐ์ดํ‰์„ ๊ณผ ์žฅ๊ธฐ์ดํ‰์„ ์„ ๋น„๊ตํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.
# ๋‹จ๊ธฐ์ดํ‰์„ ๊ณผ ์žฅ๊ธฐ์ดํ‰์„ ์„ ๋น„๊ต
fig = go.Figure()
fig.add_trace(go.Line(x = kospi.index, y = kospi['mov_200'], name = '200์ผ ์žฅ๊ธฐ์ดํ‰์„ ', marker_color = '#ff0000'))
fig.add_trace(go.Line(x = kospi.index, y = kospi['mov_20'], name = '20์ผ ๋‹จ๊ธฐ์ดํ‰์„ ', marker_color = '#8c8cf5'))

fig.update_layout(
    {
        'title' : {'text':'200์ผ ์žฅ๊ธฐ์ดํ‰์„ ๊ณผ 20์ผ ๋‹จ๊ธฐ์ดํ‰์„  ๋น„๊ต'},
        'xaxis' : {'title':'๋…„๋„', 'showticklabels': True},
        'yaxis' : {'title':'KOSPI','showticklabels': True},
        
        'template' : 'plotly_white'
    })

fig.show()


  • ๋‹จ๊ธฐ์ดํ‰์„ ๊ณผ ์žฅ๊ธฐ์ดํ‰์„ ์„ ๋น„๊ตํ•ด๋ณด๋‹ˆ ์žฅ๊ธฐ์ดํ‰์„ ๊ณผ ์‹ค์ œ ์ข…๊ฐ€์ง€์ˆ˜๋ฅผ ๋น„๊ตํ•˜๋Š” ๊ฒƒ๊ณผ ํฐ ์ฐจ์ด๊ฐ€ ๋ณด์ด์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์•„๋งˆ 1981๋…„๋ถ€ํ„ฐ 2022๋…„๊นŒ์ง€์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋ชจ๋‘ ์‚ฌ์šฉํ•˜๋ ค๋‹ˆ ๊ทธ ์Šค์ผ€์ผ์˜ ๋ฒ”์œ„๊ฐ€ ๋„ˆ๋ฌด ๋„“์€ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์ข€ ๋” ์ข์€ ๊ธฐ๊ฐ„์— ๋Œ€ํ•ด์„œ ๋น„๊ตํ•ด๋ณด๋Š” ๊ฒŒ ์ •ํ™•ํ•  ๋“ฏ ํ•ฉ๋‹ˆ๋‹ค.
  • ๋น„๊ต์  ์ตœ๊ทผ์˜ ์ฃผ๊ฐ€๋ฅผ ์˜ˆ์ธกํ•˜๊ธฐ ์œ„ํ•ด ์ฃผ๊ฐ€๊ฐ€ ์ „๋ฐ˜์ ์œผ๋กœ ์˜ค๋ฅธ 2019๋…„ ์ดํ›„์˜ ์ฃผ๊ฐ€๋งŒ์„ ์‚ฌ์šฉํ•ด์„œ ๊ฐ ์ดํ‰์„ ๊ณผ ์‹ค์ œ ์ฃผ๊ฐ€๋ฅผ ๋น„๊ตํ•ด๋ณผ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๐Ÿ† 3.4. 2019๋…„ ์ดํ›„์˜ ์ฝ”์Šคํ”ผ ์ง€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•œ ์ด๋™ํ‰๊ท ์„ 

# 2019๋…„ ์ดํ›„์˜ ๋ฐ์ดํ„ฐ๋งŒ์„ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•œ ์Šฌ๋ผ์ด์‹ฑ
kospi_2019 = kospi[10118:]

# 2019๋…„ ์ดํ›„์˜ ์žฅ๊ธฐ์ดํ‰์„ , ๋‹จ๊ธฐ์ดํ‰์„ , ์‹ค์ œ ์ข…๊ฐ€ ๋น„๊ต
fig = go.Figure()
fig.add_trace(go.Line(x = kospi_2019.index, y = kospi_2019['Close'], name = '์‹ค์ œ ์ฝ”์Šคํ”ผ ์ง€์ˆ˜ (์ข…๊ฐ€)', marker_color = '#5abeff'))
fig.add_trace(go.Line(x = kospi_2019.index, y = kospi_2019['mov_200'], name = '200์ผ ์žฅ๊ธฐ์ดํ‰์„ ', marker_color = '#ff0000'))
fig.add_trace(go.Line(x = kospi_2019.index, y = kospi_2019['mov_20'], name = '20์ผ ๋‹จ๊ธฐ์ดํ‰์„ ', marker_color = 'orange'))

fig.update_layout(
    {
        'title' : {'text':'2019๋…„ ์ดํ›„์˜ ์žฅ๊ธฐ์ดํ‰์„ , ๋‹จ๊ธฐ์ดํ‰์„ , ์‹ค์ œ ์ข…๊ฐ€ ๋น„๊ต'},
        'xaxis' : {'title':'์›” / ๋…„๋„', 'showticklabels': True},
        'yaxis' : {'title':'KOSPI','showticklabels': True},
        
        'template' : 'plotly_white'
    })

fig.show()


  • ์ด๋ ‡๊ฒŒ ์ข์€ ๊ธฐ๊ฐ„์— ๋Œ€ํ•ด์„œ ์‹œ๊ฐํ™”ํ•ด๋ณธ ๊ฒฐ๊ณผ ์‹ค์ œ ์ง€์ˆ˜์™€ 200์ผ ์žฅ๊ธฐ์ดํ‰์„  ๊ฐ„์˜ ์ฐจ์ด๊ฐ€ ์ƒ๊ฐ๋ณด๋‹ค ํฐ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ 2022๋…„๋Œ€์˜ ์‹ค์ œ ์ง€์ˆ˜์™€ ์ด๋™ํ‰๊ท ์„ ์€ ๋ชจ๋‘ ์šฐํ•˜ํ–ฅํ•˜๋Š” ์ถ”์„ธ์ž…๋‹ˆ๋‹ค.
  • 2020๋…„๋Œ€ ํ›„๋ฐ˜๊ธฐ์™€ 2021๋…„๋Œ€ ์ „๋ฐ˜์— ๊ฑธ์ณ KOSPI ์ง€์ˆ˜๊ฐ€ ๊ธ‰๋“ฑํ•œ ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐ˜๋ฉด 2022๋…„ ๋“ค์–ด์„œ๋Š” ์ข€์ฒ˜๋Ÿผ ์ƒ์Šนํ•˜๋Š” ๋ชจ์Šต์„ ๋ณด์—ฌ์ฃผ์ง€ ๋ชปํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๋‹จ๊ธฐ์ด๋™ํ‰๊ท ์„ (20์ผ)๊ณผ ์žฅ๊ธฐ์ด๋™ํ‰๊ท ์„ (200์ผ), ๊ทธ๋ฆฌ๊ณ  ์‹ค์ œ ์ฃผ๊ฐ€๋ฅผ ๋น„๊ตํ•ด๋ณธ ๊ฒฐ๊ณผ ์œ„์—์„œ ์–ธ๊ธ‰ํ•œ ์ด๋ก ๋Œ€๋กœ ๋‹จ๊ธฐ์ด๋™ํ‰๊ท ์„ ์ด ์žฅ๊ธฐ์ด๋™ํ‰๊ท ์„ ๋ณด๋‹ค ์œ„์— ์žˆ๋Š” ๊ฒฝ์šฐ์—๋Š” ์ฃผ๊ฐ€๊ฐ€ ์ƒ์Šนํ•˜๊ณ , ๋ฐ˜๋Œ€์ธ ๊ฒฝ์šฐ์—๋Š” ์ง€์ˆ˜๊ฐ€ ํ•˜๋ฝํ•˜๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์ฃผ๊ฐ€๊ฐ€ ๋ณ€๋™ํ•˜๋Š” ์ด์œ ๋“ค์€ ์ •๋ง ๋ณต์žกํ•˜๊ธฐ์— ๋‹จ์ˆœํ•œ ์‹œ๊ฐํ™”๋งŒ์œผ๋กœ ์˜ˆ์ธกํ•˜๊ธฐ์—๋Š” ์„ฃ๋ถ€๋ฅผ ๊ฒƒ์ด์ง€๋งŒ, ๋‘ ์ด๋™ํ‰๊ท ์„  ์‚ฌ์ด์˜ ๊ฐ„๊ทน์„ ๋น„๊ตํ•ด๋ณด๋ฉด ๊ทธ๋ ‡๊ฒŒ ๋น ๋ฅด๊ฒŒ ์ง€์ˆ˜๊ฐ€ ํšŒ๋ณตํ•  ๊ฒƒ์œผ๋กœ ๋ณด์ด์ง€๋Š” ์•Š๋„ค์š”.

๐Ÿ† 3.5. 2022๋…„์˜ ์ฝ”์Šคํ”ผ์ง€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•œ ์ด๋™ํ‰๊ท ์„ 

# 2019๋…„ ์ดํ›„์˜ ์žฅ๊ธฐ์ดํ‰์„ , ๋‹จ๊ธฐ์ดํ‰์„ , ์‹ค์ œ ์ข…๊ฐ€ ๋น„๊ต
kospi_2022 = kospi[10860:]

# 2022๋…„๋„ ์žฅ๊ธฐ์ดํ‰์„ (200), ๋‹จ๊ธฐ์ดํ‰์„ (20), ์‹ค์ œ ์ข…๊ฐ€ ๋น„๊ต
fig = go.Figure()
fig.add_trace(go.Line(x = kospi_2022.index, y = kospi_2022['Close'], name = '์‹ค์ œ ์ฝ”์Šคํ”ผ ์ง€์ˆ˜ (์ข…๊ฐ€)', marker_color = '#5abeff'))
fig.add_trace(go.Line(x = kospi_2022.index, y = kospi_2022['mov_200'], name = '200์ผ ์žฅ๊ธฐ์ดํ‰์„ ', marker_color = '#ff0000'))
fig.add_trace(go.Line(x = kospi_2022.index, y = kospi_2022['mov_20'], name = '20์ผ ๋‹จ๊ธฐ์ดํ‰์„ ', marker_color = 'orange'))

fig.update_layout(
    {
        'title' : {'text':'2022๋…„๋„ ์žฅ๊ธฐ์ดํ‰์„ (200), ๋‹จ๊ธฐ์ดํ‰์„ (20), ์‹ค์ œ ์ข…๊ฐ€ ๋น„๊ต'},
        'xaxis' : {'title':'์›” (2022)', 'showticklabels': True},
        'yaxis' : {'title':'KOSPI','showticklabels': True},
        
        'template' : 'plotly_white'
    })

fig.show()


# 2022๋…„๋„ ์ดํ‰์„ , ์‹ค์ œ ์ข…๊ฐ€ ๋น„๊ต
fig = go.Figure()
fig.add_trace(go.Line(x = kospi_2022.index, y = kospi_2022['mov_200'], name = '200์ผ ์žฅ๊ธฐ์ดํ‰์„ '))
fig.add_trace(go.Line(x = kospi_2022.index, y = kospi_2022['mov_120'], name = '120์ผ ๋‹จ๊ธฐ์ดํ‰์„ '))
fig.add_trace(go.Line(x = kospi_2022.index, y = kospi_2022['mov_60'], name = '60์ผ ๋‹จ๊ธฐ์ดํ‰์„ '))
fig.add_trace(go.Line(x = kospi_2022.index, y = kospi_2022['mov_20'], name = '20์ผ ๋‹จ๊ธฐ์ดํ‰์„ '))
fig.add_trace(go.Line(x = kospi_2022.index, y = kospi_2022['mov_10'], name = '10์ผ ๋‹จ๊ธฐ์ดํ‰์„ '))

fig.add_trace(go.Line(x = kospi_2022.index, y = kospi_2022['Close'], name = '์‹ค์ œ ์ฝ”์Šคํ”ผ ์ง€์ˆ˜ (์ข…๊ฐ€)', marker_color = '#5abeff'))




fig.update_layout(
    {
        'title' : {'text':'2022๋…„๋„ ์žฅ๊ธฐ์ดํ‰์„ , ๋‹จ๊ธฐ์ดํ‰์„ , ์‹ค์ œ ์ข…๊ฐ€ ๋น„๊ต'},
        'xaxis' : {'title':'์›” (2022)', 'showticklabels': True},
        'yaxis' : {'title':'KOSPI','showticklabels': True},
        
        'template' : 'plotly_white'
    })

fig.show()


  • ๋‹จ๊ธฐ์ด๋™ํ‰๊ท ์„ (20์ผ)๊ณผ ์žฅ๊ธฐ์ด๋™ํ‰๊ท ์„ (200์ผ), ๊ทธ๋ฆฌ๊ณ  ์‹ค์ œ ์ฃผ๊ฐ€๋ฅผ ๋น„๊ตํ•ด๋ณธ ๊ฒฐ๊ณผ ์œ„์—์„œ ์–ธ๊ธ‰ํ•œ ์ด๋ก ๋Œ€๋กœ ๋‹จ๊ธฐ์ด๋™ํ‰๊ท ์„ ์ด ์žฅ๊ธฐ์ด๋™ํ‰๊ท ์„ ๋ณด๋‹ค ์œ„์— ์žˆ๋Š” ๊ฒฝ์šฐ์—๋Š” ์ฃผ๊ฐ€๊ฐ€ ์ƒ์Šนํ•˜๊ณ , ๋ฐ˜๋Œ€์ธ ๊ฒฝ์šฐ์—๋Š” ์ฃผ๊ฐ€๊ฐ€ ํ•˜๋ฝํ•˜๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • 2022๋…„๋„์˜ ์‹ค์ œ ์ง€์ˆ˜์™€ ์ด๋™ํ‰๊ท ์„ ๋“ค์„ ๋น„๊ตํ•ด๋ณด๋ฉด, 60์ผ ์ดํ›„์˜ ์ด๋™ํ‰๊ท ์„ ๋“ค์€ ์‰ฝ๊ฒŒ ๋ฐ˜๋“ฑํ•  ์ƒ๊ฐ์ด ์—†์–ด ๋ณด์ž…๋‹ˆ๋‹ค.
  • 2022/09/13 ๋ถ€๊ทผ์˜ ๋‹จ๊ธฐ์ด๋™ํ‰๊ท ์„ ๊ณผ ์žฅ๊ธฐ์ด๋™ํ‰๊ท ์„  ์‚ฌ์ด์˜ ์ฐจ์ด๊ฐ€ ์ ์  ์ข์•„์ง€๊ณ  ์žˆ๊ธฐ๋Š” ํ•˜์ง€๋งŒ ์•„์ง ๊ทธ ๊ฐ„๊ทน์ด ์ข๋‹ค๊ณ ๋Š” ํ•  ์ˆ˜ ์—†๊ธฐ์— ์•ž์œผ๋กœ์˜ ์ฃผ๊ฐ€ ์—ญ์‹œ 2800~3000 ์„ ์„ ๋„˜๊ธฐ์—๋Š” ์˜ค๋žœ ์‹œ๊ฐ„์ด ๊ฑธ๋ฆด ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋ฌผ๋ก  ๋‹จ์ˆœํžˆ ์‹œ๊ฐํ™”๋ฅผ ํ†ตํ•œ ์˜ˆ์ธก์ด๊ธฐ์— ์–ด๋–ค ์ผ์ด ์ƒ๊ธธ์ง€๋Š” ์‰ฝ๊ฒŒ ๋ณด์žฅํ•  ์ˆ˜ ์—†์„ ๋“ฏ ํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ“ˆ ์ด๋ ‡๊ฒŒ ํ•ด์„œ ์ด๋™ํ‰๊ท ์„ ๊ณผ ์ง€์ˆ˜ ์‹œ๊ฐํ™”๋ฅผ ํ†ตํ•ด ํ–ฅํ›„ KOSPI ์ง€์ˆ˜์˜ ์ถ”์„ธ๋ฅผ ์˜ˆ์ธกํ•ด ๋ณด์•˜์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ˆ˜์น˜๋ฅผ ์˜ˆ์ธกํ•  ์ˆ˜๋Š” ์—†๊ธฐ ๋•Œ๋ฌธ์— ๋‹ค์Œ ํฌ์ŠคํŒ…์—์„œ๋Š” ์ฃผ๊ฐ€ ์˜ˆ์ธก ๋ชจ๋ธ์— ์ฃผ๋กœ ์‚ฌ์šฉํ•˜๋Š” FbProphet ๋ชจ๋“ˆ์„ ์‚ฌ์šฉํ•ด์„œ ์ฝ”์Šคํ”ผ์ง€์ˆ˜๋ฅผ ์˜ˆ์ธกํ•  ๊ณ„ํš์ž…๋‹ˆ๋‹ค.


Leave a comment