Stock Market Dashboard

About the Project

프로젝트 소개

This project implements a minimal backtesting framework for moving average crossover strategies. It evaluates performance and risk using Sharpe Ratio, Max Drawdown, and 1‑day 95% Historical Value at Risk (VaR). Price data is fetched from Yahoo Finance, processed, and analyzed with customizable parameters.

이 프로젝트는 단순 이동 평균 교차 전략을 기반으로 한 최소한의 백테스트 프레임워크를 구현합니다. Yahoo Finance에서 데이터를 가져와 전처리하고, Sharpe 비율, 최대 낙폭, 95% 하루 기준 VaR 등의 리스크 지표를 사용해 전략 성과를 평가합니다.

🔗 View on GitHub

Strategy Results

전략 성과 요약

strategy table

This table summarizes the final returns and risk metrics for each stock from January 2023 to December 2024 under the moving average strategy.

이 표는 이동 평균 전략을 2023년 1월부터 2024년 12월까지 적용했을 때, 각 종목의 수익률과 리스크 지표를 요약한 것입니다.

Risk Metrics Comparison

리스크 지표 비교

strategy risk comparison chart

A side-by-side comparison of risk metrics such as Sharpe Ratio, VaR (95%), and Max Drawdown for each stock.

각 종목에 대해 Sharpe Ratio, VaR(95%), 최대 낙폭 등의 리스크 지표를 비교한 그래프입니다.

Example Code

예시 코드

import os, sys
sys.path.insert(0, os.path.abspath('..'))

from src.load_data import load_all
from src.analysis import compute_metrics
import matplotlib.pyplot as plt

# Load stock data
tickers = ["AAPL", "MSFT", "TSLA"]
data = load_all(tickers)

# Compute metrics
full_metrics = compute_metrics(data, short=5, long=20)
display(full_metrics)

# Plot risk metrics
ax = full_metrics.set_index('Ticker')[['Sharpe Ratio','VaR_95','Max Drawdown']].plot.bar(figsize=(8,4))
ax.set_title('Strategy Risk Metrics Comparison')
plt.tight_layout()
plt.show()
import os, sys
sys.path.insert(0, os.path.abspath('..'))

from src.load_data import load_all
from src.analysis import compute_metrics
import matplotlib.pyplot as plt

# 주가 데이터 불러오기
tickers = ["AAPL", "MSFT", "TSLA"]
data = load_all(tickers)

# 리스크 및 성과 지표 계산
full_metrics = compute_metrics(data, short=5, long=20)
display(full_metrics)

# 리스크 지표 시각화
ax = full_metrics.set_index('Ticker')[['Sharpe Ratio','VaR_95','Max Drawdown']].plot.bar(figsize=(8,4))
ax.set_title('Strategy Risk Metrics Comparison')
plt.tight_layout()
plt.show()