파이썬을 사용하여 주가 추세를 예측할 수 있습니다. 파이썬은 재무 분석을 위한 강력한 도구이기도 합니다. 몇 줄의 코드만으로 주가 추세를 예측하고 정보에 입각한 결정을 내릴 수 있습니다.
※ 이 글은 아래 기사 내용을 토대로 작성되었습니다만, 필자의 개인 의견이나 추가 자료들이 다수 포함되어 있습니다.
- 원문: Predicting Stock Price Trends with Python: An Easy Guide
- URL: https://wire.insiderfinance.io/predicting-stock-price-trends-with-python-an-easy-guide-f7f710d13bfb
주가 예측에 파이썬을 사용하는 이유
Python은 단순성과 가독성으로 잘 알려진 다용도 언어입니다. Prophet과 같은 방대한 라이브러리 생태계는 금융 분석가와 데이터 과학자가 선택하는 곳입니다. Python으로 주가 추세를 예측하면 다음을 수행할 수 있습니다.
- 시장 움직임에 대한 통찰력을 얻을 수 있습니다.
- 데이터 기반 투자 결정을 내립니다.
- 미래 주가 시나리오를 시각화합니다.
환경 설정
시작하기 전에 가상 환경에 다음 라이브러리가 설치되어 있는지 확인하세요.
- requests: 주식 데이터를 가져오기 위한 것입니다.
- pandas: 데이터 조작용.
- prophet: 주가를 예측하기 위한 것입니다.
pip를 사용하여 설치할 수 있습니다.
pip install requests pandas prophet
주식 데이터 가져오기
시작하려면 과거 주식 데이터가 필요합니다. 여기서는 FMP(Financial Modeling Prep) API를 사용합니다. Financial Modeling Prep은 금융 데이터를 얻기 위한 가장 신뢰할 수 있고 사용자 친화적인 플랫폼 중 하나로 돋보입니다. 이유는 다음과 같습니다.
- 정확성 : FMP는 정확한 최신 데이터로 유명하므로 정확한 정보를 바탕으로 예측을 내릴 수 있습니다.
- 사용 편의성 : 간단한 API를 통해 초보자도 문제 없이 데이터를 가져올 수 있습니다.
- 종합 데이터 : FMP는 과거 주가부터 재무제표까지 광범위한 재무 데이터를 제공하여 분석가를 위한 원스톱 상점입니다.
- 경제성 : 다른 플랫폼과 비교하여 FMP는 경쟁력 있는 가격을 제공하므로 전문가와 애호가 모두 큰 비용을 들이지 않고도 고품질 데이터에 액세스할 수 있습니다.
FMP 시작하기
- 가입 : Financial Modeling Prep 웹사이트로 가서 무료 계정에 가입합니다. 또한 추가 혜택이 포함된 프리미엄 플랜도 제공하므로 필요에 따라 적합한 플랜을 선택하세요.
- API 키 생성 : 로그인한 후 API 섹션으로 이동합니다. 여기에서 고유한 API 키를 생성하여 Python 환경으로 직접 데이터를 가져올 수 있습니다.
import requests
symbol = "AAPL"
from_date = "2022-01-01"
to_date = "2023-08-01"
url = f"https://financialmodelingprep.com/api/v3/historical-price-full/{symbol}?from={from_date}&to={to_date}&apikey={FMP_API_KEY}"
def fetch_data(url):
response = requests.get(url).json()
return response
데이터 전처리
데이터가 확보되면 Prophet 모델과의 호환성을 위해 전처리(preprocess)하는 것이 필수적입니다.
import pandas as pd
def preprocess_data(data):
df = pd.DataFrame(data["historical"])
df.reset_index(inplace=True)
df.rename(columns={'date': 'ds', 'adjClose': 'y'}, inplace=True)
return df
모델 훈련
데이터가 준비되었으면 Prophet 모델을 훈련해 보겠습니다.
Prophet이란 무엇인가?
Prophet은 일일 주식 데이터를 처리하고 휴일과 주말을 설명할 수 있는 강력한 예측 도구입니다. Meta에서 개발한 Prophet은 계절적 영향이 클 수 있는 시계열 데이터용으로 설계된 강력한 예측 도구입니다. 주가에 영향을 미칠 수 있는 휴일 및 주말을 처리할 수 있기 때문에 주가 예측과 같은 비즈니스 애플리케이션에 특히 유용합니다.
from prophet import Prophet
def train_prophet_model(data):
model = Prophet(
changepoint_prior_scale=0.05,
holidays_prior_scale=15,
seasonality_prior_scale=10,
weekly_seasonality=True,
yearly_seasonality=True,
daily_seasonality=False
)
model.add_country_holidays(country_name='US')
model.fit(data)
return model
예측 생성 및 시각화
내년에 대한 예측을 생성하고 시각화해 보겠습니다.
def generate_forecast(model, periods=365):
future = model.make_future_dataframe(periods=periods)
forecast = model.predict(future)
return forecast
def plot_forecast(model, forecast):
model.plot(forecast)
Matplotlib 차트로 출력
천 마디 말보다 한 장의 그림이 더 중요할 수 있습니다. 특히 금융 데이터의 경우 더욱 그렇습니다. 예측을 시각화하면 잠재적인 주가 변동을 더 명확하게 이해할 수 있습니다. 우리의 예측이 차트에 어떻게 나타나는지 살펴보겠습니다.
하이퍼파라미터를 개선하면 예측의 정확도를 높일 수 있습니다. 결과에 관심이 있는 경우 Stock Telegraph의 AAPL 예측 페이지를 확인해 보세요.
모든 것을 하나로 모으기
모든 기능을 결합하여 2022-01-01부터 2023-08-01까지 Apple(AAPL)의 주가 추세를 예측해 보겠습니다. 코드에 대해 더 자세히 알아보고 더 많은 기능을 탐색하는 데 관심이 있는 경우 GitHub 저장소에서 전체 코드와 추가 리소스를 찾을 수 있습니다.
import os
import pandas as pd
import requests
from prophet import Prophet
FMP_API_KEY = os.getenv("FMP_API_KEY")
def fetch_data(url):
"""Fetches data from the given URL and returns the JSON response.
Args:
url (str): The URL to fetch data from.
Returns:
dict: JSON response from the API.
"""
response = requests.get(url).json()
return response
def preprocess_data(data):
"""Preprocesses the historical data for compatibility with Prophet model.
Args:
data (dict): The historical data in dictionary format.
Returns:
pd.DataFrame: Processed DataFrame with renamed columns.
"""
df = pd.DataFrame(data["historical"])
df.reset_index(inplace=True)
df.rename(columns={"date": "ds", "adjClose": "y"}, inplace=True)
return df
def train_prophet_model(data):
"""Trains a Prophet model on the provided data.
Args:
data (pd.DataFrame): Processed DataFrame with 'ds' and 'y' columns.
Returns:
Prophet: Trained Prophet model.
"""
model = Prophet(
changepoint_prior_scale=0.05,
holidays_prior_scale=15,
seasonality_prior_scale=10,
weekly_seasonality=True,
yearly_seasonality=True,
daily_seasonality=False,
)
model.add_country_holidays(country_name="US")
model.fit(data)
return model
def generate_forecast(model, periods=365):
"""Generates forecasts using the trained Prophet model.
Args:
model (Prophet): Trained Prophet model.
periods (int): Number of periods to forecast into the future.
Returns:
pd.DataFrame: DataFrame containing forecasted values.
"""
future = model.make_future_dataframe(periods=periods)
forecast = model.predict(future)
return forecast
def plot_forecast(model, forecast):
"""Plots the forecast generated by the Prophet model.
Args:
model (Prophet): Trained Prophet model.
forecast (pd.DataFrame): DataFrame containing forecasted values.
"""
model.plot(forecast)
def main():
symbol = "AAPL"
from_date = "2022-01-01"
to_date = "2023-08-01"
URL = f"https://financialmodelingprep.com/api/v3/historical-price-full/{symbol}?from={from_date}&to={to_date}&apikey={FMP_API_KEY}"
# Fetch data
data = fetch_data(URL)
# Preprocess data
df = preprocess_data(data)
# Train Prophet model
model = train_prophet_model(df)
# Generate forecast
forecast = generate_forecast(model)
# Plot forecast
plot_forecast(model, forecast)
if __name__ == "__main__":
main()
결론
파이썬으로 주가 추세를 예측하는 것은 단순히 기술에 능숙한 것이 아니라 현명한 행동입니다. Prophet과 같은 도구를 사용하면 주식 시장 게임에서 앞서 나갈 수 있습니다. 더 이상 기다릴 필요가 없습니다. 지금 바로 예측을 시작하세요.
'Python' 카테고리의 다른 글
파이썬에서 파일을 다루는 방법 (26) | 2024.01.05 |
---|---|
프로그래머가 인식하지 못하는 파이썬 숨겨진 기능 (31) | 2024.01.03 |
파이썬 람다 함수: 구문 및 애플리케이션 (2) | 2023.12.31 |
PDF 파일 작업을 위한 6가지 Python 패키지 (2) | 2023.12.30 |
파이썬을 처음부터 배우는 방법: 전문가 가이드 (2) | 2023.12.29 |