๋ณผ๋ฆฐ์ ๋ฐด๋(Bollinger Bands) ๋ ๊ฐ๊ฒฉ์ ๋ณ๋์ฑ(Volatility)์ ๊ธฐ๋ฐ์ผ๋ก ์์ฐ์ด ๊ณผ๋งค์ ๋๋ ๊ณผ๋งค๋ ์ํ์ ์๋์ง๋ฅผ ์๊ฐ์ ์ผ๋ก ํ๋จํ ์ ์๊ฒ ํด์ฃผ๋ ๋ํ์ ์ธ ๊ธฐ์ ์ ๋ถ์ ๋๊ตฌ์ ๋๋ค.
๐ 1. ๋ณผ๋ฆฐ์ ๋ฐด๋๋?
๋ณผ๋ฆฐ์ ๋ฐด๋๋ 1980๋ ๋ ์กด ๋ณผ๋ฆฐ์ (John Bollinger) ์ ์ํด ๊ฐ๋ฐ๋ ์งํ๋ก, ์ด๋ ํ๊ท ์ ๊ณผ ํ์คํธ์ฐจ๋ฅผ ์ด์ฉํด ์์ฑํ ๊ฐ๊ฒฉ ๋ฐด๋์ ๋๋ค. ๊ฐ๊ฒฉ์ ํ๊ท ๊ณผ ๋ณ๋์ฑ์ ๋์์ ๋ณด์ฌ์ค์ผ๋ก์จ, ์ถ์ธ ์ถ์ข ๊ณผ ๋ฐ์ ํ๋จ ๋ชจ๋์ ํ์ฉ๋ฉ๋๋ค.
๐ง 2. ๊ตฌ์ฑ ์์
๊ตฌ์ฑ ์์ | ๊ณ์ฐ์ | ์ค๋ช |
---|---|---|
์ค์ฌ์ (Middle Band) | 20์ผ ๋จ์์ด๋ํ๊ท (SMA) | ๊ฐ๊ฒฉ์ ํ๊ท |
์๋จ ๋ฐด๋ (Upper Band) | SMA + 2 ร ํ์คํธ์ฐจ | ๊ฐ๊ฒฉ์ ๋ณ๋ ๋ฒ์ ์๋จ |
ํ๋จ ๋ฐด๋ (Lower Band) | SMA – 2 ร ํ์คํธ์ฐจ | ๊ฐ๊ฒฉ์ ๋ณ๋ ๋ฒ์ ํ๋จ |
์ผ๋ฐ์ ์ผ๋ก ’20์ผ SMA + 2ฯ’๋ฅผ ์ฌ์ฉํ์ง๋ง, ๊ธฐ๊ฐ๊ณผ ๊ณ์๋ ์กฐ์ ๊ฐ๋ฅ.
๐ 3. ํด์ ๋ฐฉ๋ฒ
โ ๊ธฐ๋ณธ ํด์
- ๊ฐ๊ฒฉ์ด ์๋จ ๋ฐด๋์ ๋๋ฌํ๊ฑฐ๋ ๋ํ
โ ๊ณผ๋งค์ ์ ํธ, ๋ฐ๋ฝ ๊ฐ๋ฅ์ฑ - ๊ฐ๊ฒฉ์ด ํ๋จ ๋ฐด๋์ ๋๋ฌํ๊ฑฐ๋ ๋ํ
โ ๊ณผ๋งค๋ ์ ํธ, ๋ฐ๋ฑ ๊ฐ๋ฅ์ฑ - ๋ฐด๋๊ฐ ์์ถ(Band Squeeze)
โ ๋ณ๋์ฑ ์ถ์, ํฐ ์์ง์ ์ ์กฐ - ๋ฐด๋๊ฐ ํ์ฅ(Band Expansion)
โ ๋ณ๋์ฑ ํ๋, ๊ธ๋ฑ๋ฝ ์งํ ์ค
๐ ์ค์ ์ ์ฉ ์ ๋ต ์์
์ ๋ต ์ ํ | ์กฐ๊ฑด | ํ๋ |
---|---|---|
๋ฐ์ ๋งค๋งค ์ ๋ต | ์๋จ ๋ฐด๋ ๋ํ ํ ํ๋ฝ ๋ฐ์ | ๋งค๋ ์ง์ |
์ถ์ธ์ถ์ข ์ ๋ต | ๋ฐด๋ ํ์ฅ + ์๋จ ๋ฐด๋ ๋ํ ์ง์ | ๋งค์ ์ง์ |
์๋ ด ํ ํ์ฐ | ๋ฐด๋ ์์ถ ์ํ์์ ๊ธ๋ฑ/๊ธ๋ฝ | ๋ฐฉํฅ ํ์ธ ํ ์ถ์ธ ์ง์ |
โ ๏ธ 4. ์ฃผ์์ฌํญ
- ๋ณผ๋ฆฐ์ ๋ฐด๋๋ ๋ฐ๋์ ๋ค๋ฅธ ์งํ(RSI, MACD ๋ฑ)์ ํจ๊ป ์ฌ์ฉํด์ผ ์ ๋ขฐ๋๊ฐ ์ฌ๋ผ๊ฐ๋๋ค.
- ๊ฐ๊ฒฉ์ด ๋ฐด๋๋ฅผ ๋ซ์๋ค๊ณ ํด์ ๋ฌด์กฐ๊ฑด ๋ฐ์ ์ด ๋ฐ์ํ๋ ๊ฒ์ ์๋๋๋ค. ๊ฐํ ์ถ์ธ๋ ๋ฐด๋ ๋ฐ์์๋ ๊ณ์ ์งํ๋ฉ๋๋ค.
- ๋ฐด๋ ํญ์ด ์ข์์๋ก ๋ณ๋์ฑ์ด ๋ฎ๊ณ , ๊ณง ๊ธ๊ฒฉํ ์์ง์์ด ๋ํ๋ ๊ฐ๋ฅ์ฑ์ด ๋์ต๋๋ค.
๐ ๏ธ 5. Python์ผ๋ก ๋ณผ๋ฆฐ์ ๋ฐด๋ ๊ตฌํํ๊ธฐ
import pandas as pd
import matplotlib.pyplot as plt
# ๋ฐ์ดํฐ ๋ถ๋ฌ์ค๊ธฐ
df = pd.read_csv('price_data.csv') # ์ข
๊ฐ(Close) ์ด ํฌํจ
# ๋ณผ๋ฆฐ์ ๋ฐด๋ ๊ณ์ฐ
df['MA20'] = df['Close'].rolling(window=20).mean()
df['STD'] = df['Close'].rolling(window=20).std()
df['Upper'] = df['MA20'] + 2 * df['STD']
df['Lower'] = df['MA20'] - 2 * df['STD']
# ์๊ฐํ
plt.figure(figsize=(14,6))
plt.plot(df['Close'], label='Close Price')
plt.plot(df['MA20'], label='20-Day MA', color='blue')
plt.plot(df['Upper'], label='Upper Band', linestyle='--', color='red')
plt.plot(df['Lower'], label='Lower Band', linestyle='--', color='green')
plt.fill_between(df.index, df['Upper'], df['Lower'], color='gray', alpha=0.1)
plt.title('Bollinger Bands')
plt.legend()
plt.show()
๐ก 6. ์์ฝ
์ฅ์ | ๋จ์ |
---|---|
๊ฐ๊ฒฉ๊ณผ ๋ณ๋์ฑ์ ๋์์ ๊ณ ๋ ค | ์ถ์ธ ์์ธก ๋ฅ๋ ฅ์ ๋จ์ด์ง |
์๊ฐ์ ์ดํด๊ฐ ์ฌ์ | ๋จ๋ ์ฌ์ฉ ์ ์คํด ๊ฐ๋ฅ |
๋ค์ํ ์ ๋ต๊ณผ ๋ณํ ๊ฐ๋ฅ | ์งํ ๋ฏผ๊ฐ๋ ์กฐ์ ํ์ |
๐ ๋ง๋ฌด๋ฆฌ
๋ณผ๋ฆฐ์ ๋ฐด๋๋ ๋จ์ํ๋ฉด์๋ ๊ฐ๋ ฅํ ๊ธฐ์ ์ ์งํ์ ๋๋ค. ๊ฐ๊ฒฉ์ ํ๊ท ๊ณผ ๋ณ๋์ฑ ๋ฒ์๋ฅผ ํ๋์ ๋ณด์ฌ์ฃผ๊ธฐ ๋๋ฌธ์ ์์ฅ ํ๋ฆ์ ์ดํดํ๊ณ , ๋ฆฌ์คํฌ๋ฅผ ์กฐ์ ํ๋ฉฐ, ๋งค๋งค ํ์ด๋ฐ์ ์ก๋ ๋ฐ ์ ์ฉํฉ๋๋ค. ํ์ง๋ง ์ธ์ ๋ ๊ทธ๋ ๋ฏ ๋จ์ผ ์งํ์ ์์กดํ๊ธฐ๋ณด๋ค๋, ๋ค์ํ ๊ด์ ๊ณผ ๋๊ตฌ๋ฅผ ํจ๊ป ํ์ฉํ๋ ๊ฒ์ด ๊ฐ์ฅ ์์ ํ ์ ๊ทผ์ ๋๋ค.
๋ต๊ธ ๋จ๊ธฐ๊ธฐ