[알고리즘 트레이딩] 어떻게 금융 문제를 수학으로 풀어낼까?

  금융에서의 수학 모델링: 어떻게 금융 문제를 수학으로 풀어낼까? 금융 시장은 복잡하고 불확실성이 큰 환경입니다. 자산 가격의 변화, 리스크 관리, 투자 전략 개발 등 다양한 문제를 해결하기 위해 수학적 모델링이 중요한 역할을 합니다. 그렇다면 금융에서는 어떻게 수학적 모델을 사용하고, 이를 통해 문제를 해결할까요? 이번 글에서는 금융에서 사용되는 주요 수학적 모델과 그 유도 과정을 살펴보겠습니다. 1. 확률론적 모델 금융 시장은 불확실성이 매우 크기 때문에, 확률론을 활용한 모델링이 필수적입니다. 자산 가격의 변동이나 주식의 가격 변화는 예측하기 어려운 랜덤한 과정으로 나타날 수 있기 때문에, 확률적 모델은 이러한 불확실성을 다루는 데 사용됩니다. 예시: 블랙-숄즈 모델 (Black-Scholes Model) 블랙-숄즈 모델은 옵션 가격을 계산하는 데 사용되는 가장 유명한 확률적 모델 입니다. 이 모델에서는 주식 가격이 로그 정규분포를 따르고, 이를 기반으로 옵션의 가격을 계산합니다. 블랙-숄즈 모델은 확률적 미분방정식을 이용하여 유도되며, 옵션의 리스크 관리와 가격 예측에 매우 유용합니다. 2. 통계학적 모델 금융에서는 과거 데이터를 분석하여 미래를 예측 하는 경우가 많습니다. 이를 위해 다양한 통계적 기법이 사용됩니다. 시계열 분석, 회귀 분석 등이 그 대표적인 예입니다. 통계학적 모델은 데이터를 기반으로 한 예측 및 분석을 가능하게 해 줍니다. 예시: ARIMA 모델 (AutoRegressive Integrated Moving Average) ARIMA 모델은 시계열 데이터 예측 에 사용됩니다. 주식 가격, 금리, 환율 등 과거 데이터를 바탕으로 미래를 예측합니다. ARIMA는 자기회귀(AR)와 이동 평균(MA) 과정을 결합하여 예측 모델을 만들며, 이는 금융 시장의 동향을 예측하는 데 매우 유용합니다. 3. 최적화 모델 포트폴리오 관리와 자산 배분 전략을 설계할 때 최적화 모델 이 사용됩니다. 이 모델은 주어진 제약 조건 하에서 리스크를 최소...

[수학] 미적분학과 실해석학을 위한 추천 도서들

  미적분학과 실해석학을 위한 추천 도서들 미적분학과 실해석학은 수학을 깊이 이해하는 데 필수적인 기초 학문입니다. 이 두 분야는 미적분의 기본 개념을 배우고 이를 엄밀하게 다루는 방법을 익히는 데 중요한 역할을 합니다. 이 글에서는 미적분학과 실해석학을 배우고자 하는 학생들을 위해 추천할 수 있는 영문 도서들 을 정리해보았습니다. 각 책은 난이도와 스타일이 다르므로, 자신의 수준에 맞는 책을 선택하는 것이 중요합니다. 1. "Calculus" by Michael Spivak 대상 : 미적분학을 엄밀하게 배우고 싶은 학생들 내용 : Spivak의 "Calculus"는 기본적인 미적분 개념을 엄밀하게 다루며, 수학적 증명과 이론에 대한 깊은 이해를 제공합니다. 실수 해석학 과 수학적 증명 에 중점을 두고 있어, 계산을 넘어서 수학적 rigor와 정의, 증명 방법을 배우기에 적합합니다. 미적분의 기본 개념을 더욱 심도 있게 이해하고자 하는 사람들에게 추천합니다. 2. "Principles of Mathematical Analysis" by Walter Rudin 대상 : 고급 실해석학 및 미적분학을 배우고자 하는 학생 내용 : 흔히 Rudin 이라고 불리는 이 책은 고급 실수 해석학의 핵심을 다룹니다. 미적분학, 수열, 함수의 연속성, 미분, 적분 등을 심도 있게 다루며, 수학적 엄밀함을 강조합니다. 이 책은 고급 수학을 원하는 학생들에게 적합하며, 수학적 rigor 가 중요시됩니다. 3. "Introduction to Real Analysis" by Robert G. Bartle and Donald R. Sherbert 대상 : 실해석학을 배우고자 하는 학생 내용 : 이 책은 실수 해석학에 대한 훌륭한 입문서로, 함수의 극한 , 연속성 , 미분 및 적분 에 대한 기초를 잘 설명합니다. 또한 수학적 증명과 해석학의 핵심 개념을 쉽게 풀어내어, 학부 수준에서 접근하기에 적합합니다. 4. ...

[알고리즘 트레이딩] 고점, 저점 파악 (프랙탈 감지) 개요

  머신러닝을 활용한 프랙탈 감지 및 실시간 트레이딩 적용 1. 개요 프랙탈 감지는 금융 시장에서 가격 패턴을 분석하여 고점과 저점을 파악하는 데 사용됩니다. 이를 통해 트레이더는 지지선 및 저항선 을 식별하고, 시장 흐름을 보다 명확하게 이해할 수 있습니다. 머신러닝을 활용하면 프랙탈 패턴을 자동으로 감지하고, 실시간 데이터에 적용하여 현재 시장 상황이 고점인지 저점인지 판단할 수 있습니다. 이 글에서는 머신러닝을 활용한 프랙탈 감지 모델을 설계하고, 이를 실시간 트레이딩에 적용하는 방법 을 정리하겠습니다. 2. 프랙탈 감지란? 프랙탈 감지는 일정한 주기로 반복되는 가격 패턴을 탐지하는 방법입니다. 대표적인 프랙탈 패턴은 다음과 같습니다. 프랙탈 고점 (Fractal High) : 특정 기간 동안 중앙에 있는 캔들이 가장 높은 가격을 기록하는 패턴 프랙탈 저점 (Fractal Low) : 특정 기간 동안 중앙에 있는 캔들이 가장 낮은 가격을 기록하는 패턴 프랙탈은 주로 빌 윌리엄스(Bill Williams)의 트레이딩 이론에서 사용되며, 볼린저 밴드, 이동 평균, CCI, MFI 등과 결합하여 매매 전략을 구성 하는 데 활용됩니다. 3. 머신러닝을 활용한 프랙탈 감지 전통적인 프랙탈 감지는 일정한 룰을 기반으로 하지만, 머신러닝을 활용하면 더욱 정교하게 시장의 패턴을 분석할 수 있습니다. (1) 데이터 수집 및 전처리 과거 데이터 확보 : OHLCV(시가, 고가, 저가, 종가, 거래량) 데이터를 수집합니다. 특징 생성 : 볼린저 밴드, 이동 평균, RSI, MACD, 거래량 변화율 등의 지표를 추가합니다. 레이블링 : 과거 데이터를 기반으로 프랙탈 고점/저점 여부를 라벨링합니다. 정규화 : 데이터를 스케일링하여 모델의 학습 효율을 높입니다. (2) 모델 선택 및 학습 머신러닝 모델로는 다음과 같은 방법을 활용할 수 있습니다. LSTM (Long Short-Term Memory) : 시계열 데이터 분석에 적합...

[알고리즘 트레이딩] Upbit 데이터를 활용한 Backtrader 백테스트

  Upbit 1분봉 데이터를 활용한 Backtrader 백테스트 1. 개요 Backtrader 는 강력한 백테스팅 프레임워크로, Python을 이용해 다양한 트레이딩 전략을 검증할 수 있습니다. 이번 글에서는 Upbit에서 1분봉 데이터를 가져와 Backtrader에서 활용하는 방법 을 소개합니다. 2. 백테스트 과정 1️⃣ Upbit에서 1분봉 데이터 가져오기 Backtrader에서 데이터를 사용하려면 Pandas DataFrame 형태로 변환해야 합니다. Upbit API를 이용해 1분봉 데이터를 가져오는 코드를 작성합니다. import requests import pandas as pd def get_upbit_ohlcv(market="KRW-BTC", count=200): url = "https://api.upbit.com/v1/candles/minutes/1" # 1분봉 데이터 params = {"market": market, "count": count} response = requests.get(url, params=params) data = response.json() df = pd.DataFrame(data) df["datetime"] = pd.to_datetime(df["candle_date_time_kst"]) df = df[["datetime", "opening_price", "high_price", "low_price", "trade_price", "candle_acc_trade_volume"]] df.columns = ["datetime", "open", "high", "low", ...

[알고리즘 트레이딩] 자동매매 시스템 구축 가이드

  자동매매 시스템 구축 가이드 자동매매 시스템을 구축하는 과정은 크게 데이터 수집 → 전략 개발 및 백테스트 → 실시간 트레이딩 시스템 구축 으로 나눌 수 있습니다. 이 글에서는 각 단계를 상세히 설명하고 실전에서 사용할 수 있는 코드 예제도 제공합니다. 📌 데이터 수집 자동매매를 위해서는 먼저 시장 데이터를 가져와야 합니다 . 대표적인 거래소 API로 Upbit와 Binance를 활용할 수 있습니다. 1️⃣ 거래소 API 활용 (Upbit, Binance) Upbit API : REST API 제공 (Python requests 활용 가능) Binance API : REST API 및 WebSocket 지원 (CCXT 라이브러리 활용 가능) 2️⃣ OHLCV 데이터 수집 예제 (Binance, 1시간봉) import ccxt import pandas as pd exchange = ccxt.binance() bars = exchange.fetch_ohlcv('BTC/USDT', timeframe='1h', limit=100) df = pd.DataFrame(bars, columns=['timestamp', 'open', 'high', 'low', 'close', 'volume']) df['timestamp'] = pd.to_datetime(df['timestamp'], unit='ms') print(df.head()) # 데이터 확인 이 코드는 최근 100개의 1시간봉 OHLCV(시가, 고가, 저가, 종가, 거래량) 데이터를 가져오는 예제입니다. 📌 전략 개발 & 백테스트 데이터를 확보한 후에는 트레이딩 전략을 개발하고 과거 데이터를 이용해 백테스트(검증) 해야 합니다. 1️⃣ 백테스트 프레임워크 활용 Backtrader : Python 기반 백테스트...

[알고리즘 트레이딩] 고확률 트레이딩 전략의 자동화 개요

High Probability Trading Strategies 자동화하기 Robert C. Miner의 High Probability Trading Strategies for Any Market and Any Time Frame 책에서 소개된 전략을 자동화하는 방법을 정리해보겠습니다. 이 책의 핵심 개념을 퀀트 트레이딩 전략으로 변환하여 자동매매 시스템을 구축하는 것이 목표입니다. 1. 고확률 트레이딩 전략의 자동화 접근법 책에서 강조하는 핵심 요소는 다음과 같습니다: 트렌드 분석 : 시장의 방향성을 파악 패턴 분석 : 엘리엇 파동, 피보나치 조정 활용 타이밍 분석 : 가격과 모멘텀 기반의 진입 타이밍 결정 트레이드 실행 : 진입 & 청산 전략을 체계적으로 설정 이 요소들을 퀀트 투자 방식으로 자동화하는 방법을 살펴보겠습니다. 2. 트렌드 분석 자동화 Miner는 시장의 추세를 주관적으로 분석하지만, 자동화하려면 정량적인 기준 을 설정해야 합니다. 📌 트렌드 필터 적용 예시 EMA(20) > EMA(60) > EMA(120) → 상승 트렌드 ADX > 25 → 강한 추세 존재 이러한 필터를 적용하면 추세가 명확한 구간에서만 트레이딩을 수행 할 수 있습니다. 3. 패턴 분석 자동화 (엘리엇 파동 & 피보나치) 책에서는 엘리엇 파동과 피보나치 되돌림을 활용하지만, 이를 자동화하려면 패턴 감지 알고리즘 이 필요합니다. 📌 자동화 예시 가격이 피보나치 38.2%, 50%, 61.8% 조정 구간 에 도달하면 매수 신호 머신러닝 기반 프랙탈 감지 모델 활용 가능 4. 타이밍 분석 자동화 (모멘텀 기반 진입 신호) 책에서 강조하는 트리거 바(trigger bar) 개념을 모멘텀 지표로 대체할 수 있습니다. 📌 트리거 바 자동화 예시 RSI(14) 30 이하에서 상승 반전 시 매수 신호 CCI, MFI, 볼린저 밴드 %b 조합하여 추가 필터링 이렇게 하면 감정 개입 없이 정확한 타이밍에 자동으로 진입 ...

[알고리즘 트레이딩] Multiple Time Frame Momentum Strategy를 활용한 트레이딩 봇 개발

  Multiple Time Frame Momentum Strategy를 활용한 트레이딩 봇 개발 최근 암호화폐 시장에서 다중 타임프레임을 활용한 전략이 주목받고 있습니다. 이번 글에서는 Multiple Time Frame Momentum Strategy 를 기반으로 한 트레이딩 봇을 개발하는 과정을 공유합니다. 1. 다중 타임프레임 전략이란? 다중 타임프레임(Multiple Time Frame) 분석은 서로 다른 시간대의 차트를 함께 고려하여 매매 신호를 더욱 정교하게 분석하는 기법입니다. 우리는 1시간봉과 10분봉 을 활용하여 장기적인 방향성을 확인한 후, 단기적인 매수/매도 타이밍을 포착하는 전략을 구현할 것입니다. 2. 트레이딩 봇의 핵심 로직 본 트레이딩 봇은 Upbit 거래소 에서 데이터를 가져와 다음과 같은 기준으로 매매 신호를 생성합니다: 1시간봉(60분) : 장기적인 트렌드를 확인 (EMA 60과 EMA 120의 관계 분석) 10분봉 : 단기적인 진입 타이밍 결정 (EMA 20과 EMA 60의 관계 + 볼린저 밴드 %b 활용) 매수 조건: 1시간봉에서 EMA(60) > EMA(120) (상승 추세 확인) 10분봉에서 EMA(20) > EMA(60) 볼린저 밴드의 %b 값이 0.2 이하 (하단 근접) 매도 조건: 10분봉에서 EMA(20) < EMA(60) (하락 추세 진입) 3. 코드 구현 아래는 위 전략을 구현한 Python 코드입니다: import ccxt import pandas as pd import time import logging import argparse import numpy as np from datetime import datetime from colorama import init, Fore import winsound symbol = None # API 키 불러오기 with open("upbit.txt") as f: api_key,...