Python은 데이터 과학 및 자동화의 세계에서 강력한 도구 중 하나로 자리매김하였습니다.
금융 시장에서의 자동 매매 시스템 구축은 많은 트레이더들에게 매력적인 과제가 되고 있습니다.
이번 글에서는 자동 매매 시스템에서 데이터를 시각화하는 데 중요한 요소인 Matplotlib의 Bar 차트 그리는 방법에 대해
상세히 설명하겠습니다.
1. Matplotlib란?
Matplotlib는 Python의 데이터 시각화 라이브러리로, 다양한 종류의 차트를 그릴 수 있는 기능을 제공합니다.
특히 Bar 차트는 데이터의 비교를 시각적으로 돕는 데 유용하며,
금융 데이터를 분석하는 데 있어 중요한 역할을 합니다.
1.1 Matplotlib 설치하기
Matplotlib는 pip를 사용하여 간단히 설치할 수 있습니다.
아래의 명령어를 실행하여 Matplotlib를 설치해 보세요.
pip install matplotlib
2. Bar 차트의 개요
Bar 차트는 각 카테고리의 값을 사각형의 높이로 나타낸 그래프입니다.
이는 단순하면서도 강력하게 데이터를 비교할 수 있는 장점을 가지고 있습니다.
예를 들어, 특정 주식의 월별 수익률을 Bar 차트로 나타내면 각 월의 성과를 한눈에 확인할 수 있습니다.
3. Bar 차트를 이용한 자동매매 데이터 시각화 실습
이제 실제 예제를 통해 Bar 차트를 그려보겠습니다.
우리는 가상의 주식 데이터를 이용하여 매매 성과를 시각화할 것입니다.
먼저 필요한 라이브러리를 임포트하고 데이터를 생성해 보겠습니다.
3.1 데이터 생성하기
import matplotlib.pyplot as plt
import numpy as np
# 가상의 데이터 생성
categories = ['1월', '2월', '3월', '4월', '5월']
profits = [100, 200, -150, 300, 250]
# Bar 차트 그리기
def plot_bar_chart(categories, profits):
plt.bar(categories, profits, color='blue')
plt.title('월별 수익률')
plt.xlabel('월')
plt.ylabel('수익률')
plt.grid(axis='y')
plt.axhline(0, color='black', lw=1)
plt.show()
# 차트 그리기 함수 호출
plot_bar_chart(categories, profits)
3.2 코드 설명
위 코드는 간단한 Bar 차트를 생성하는 프로세스를 보여줍니다.
여기에서 `plot_bar_chart` 함수는 입력된 카테고리와 수익률 데이터를 기반으로 Bar 차트를 그리는 역할을 합니다.
- Bar 차트 생성: `plt.bar()` 함수로 차트를 생성하고 있습니다.
- 제목 및 라벨 설정: `plt.title()`, `plt.xlabel()`, `plt.ylabel()` 로 차트 제목과 축 라벨을 설정합니다.
- 그리드 추가: `plt.grid(axis=’y’)`를 사용하여 Y축에만 그리드 라인을 추가합니다.
- 기준선 추가: `plt.axhline(0, color=’black’, lw=1)`를 통해 Y축의 0에 기준선이 추가됩니다.
4. 실제 데이터 사용하기
우리 실습에서 가상의 데이터를 사용했지만, 실제 금융 데이터로 더 유의미한 차트를 그려볼 수 있습니다.
Yahoo Finance API나 Alpha Vantage API와 같은 금융 데이터를 제공하는 API를 사용할 수 있습니다.
이 예제에서는 pandas와 yfinance 라이브러리를 사용하여 실제 주식 데이터를 가져와 Bar 차트를 그려보겠습니다.
4.1 yfinance로 데이터 가져오기
import yfinance as yf
import pandas as pd
# 종목 데이터 다운로드
ticker = 'AAPL'
data = yf.download(ticker, period='1y', interval='1mo')
data['Monthly Change'] = data['Close'].diff()
data = data[data['Monthly Change'].notnull()]
# 데이터 처리
months = data.index.strftime('%Y-%m').tolist()
profits = data['Monthly Change'].tolist()
# 실제 데이터로 바 차트 그리기
plot_bar_chart(months, profits)
4.2 코드 설명
위 코드는 yfinance 라이브러리를 통해 Apple Inc.(AAPL)의 지난 1년간의 월별 주가 데이터를 다운로드하고, 수익률을 계산하여 Bar 차트를 그리는 방법을 보여줍니다.
- 데이터 다운로드: `yf.download()`를 사용하여 특정 종목의 데이터를 다운로드합니다.
- 수익률 계산: `data[‘Close’].diff()`를 호출하여 월간 수익률을 계산합니다.
- Bar 차트 그리기: 마지막에 `plot_bar_chart()` 함수를 통해 Bar 차트를 그립니다.
5. Bar 차트 커스터마이징
Matplotlib는 차트를 더 아름답고 유용하게 만들기 위해 다양한 커스터마이징 옵션을 제공합니다.
아래는 Bar 차트를 커스터마이징하는 몇 가지 방법입니다.
5.1 색상 변경 및 스타일 적용
def plot_custom_bar_chart(categories, profits):
plt.bar(categories, profits, color='skyblue', edgecolor='darkblue')
plt.title('월별 수익률', fontsize=16)
plt.xlabel('개월', fontsize=12)
plt.ylabel('수익률(원)', fontsize=12)
plt.xticks(rotation=45)
plt.grid(axis='y', linestyle='--')
plt.axhline(0, color='red', lw=1)
plt.tight_layout()
plt.show()
plot_custom_bar_chart(months, profits)
5.2 코드 설명
`plot_custom_bar_chart` 함수는 바 차트의 색상, 글꼴 크기, 축 레이블 회전 등을 조정하여 차트를 더 보기 좋게 만듭니다.
- 색상 및 테두리: `color`와 `edgecolor`를 사용해 바의 색상과 테두리 색상을 지정합니다.
- 타이틀 및 레이블 폰트 크기: `fontsize`를 사용해 차트의 제목과 레이블의 폰트 크기를 조정합니다.
- 축 레이블 회전: `plt.xticks(rotation=45)`로 X축 레이블을 45도로 회전시켜 가독성을 높입니다.
- 선 스타일 변경: `plt.grid(axis=’y’, linestyle=’–‘)`로 그리드 선의 스타일을 변경합니다.
6. 결론
Matplotlib를 사용하여 Bar 차트를 그리는 것은 자동매매 시스템에서 효과적인 데이터 시각화를 이루는 데 매우 유용합니다.
이번 강좌를 통해 기본적인 Bar 차트 생성 뿐만 아니라 실제 데이터로 현실적인 차트를 그리고,
다양한 스타일 옵션을 통해 사용자 맞춤형 시각화를 수행하는 방법을 배웠습니다.
이러한 Skills는 트레이딩 전략을 시각적으로 분석하고 개선하는 데 큰 도움이 될 것입니다.
6.1 추가 학습 자료
참고 문헌
– Python for Data Analysis, Wes McKinney
– Python Data Science Handbook, Jake VanderPlas