이는 양적 금융 분야의 다양한 주제를 기반으로 한 Jupyter 노트북 모음입니다.
거의! :)
이것은 내 생각에 흥미로운 주제와 알고리즘의 모음일 뿐입니다.
여기에는 요즘 그다지 인기가 없지만 매우 강력한 주제가 여러 가지 포함되어 있습니다. 일반적으로 PDE 방법, Lévy 프로세스, 푸리에 방법 또는 칼만 필터와 같은 주제는 보다 표준적인 도구를 사용하는 것을 선호하는 실무자들 사이에서 그다지 인기가 없습니다.
이 노트북의 목적은 대화형 Python 구현을 통해 실제 적용을 보여줌으로써 흥미로운 주제를 제시하는 것입니다.
완전 초보자에게는 적합하지 않습니다.
이러한 주제에는 확률론적 미적분학, 금융 수학 및 통계에 대한 기본 지식이 필요합니다. Python 프로그래밍에 대한 기본 지식도 필요합니다.
이 노트에서는 콜 옵션이 무엇인지, 확률론적 과정이 무엇인지, 편미분 방정식이 무엇인지 설명하지 않겠습니다.
그러나 개념을 소개할 때마다 해당 위키 페이지나 참조 매뉴얼에 대한 링크도 추가하겠습니다. 이렇게 하면 독자는 내가 말하는 내용을 즉시 이해할 수 있을 것입니다.
이 노트는 금융 수학과 통계 분야에서 최소 한 학부 과정을 이수한 과학, 경제 또는 금융 분야의 학생들을 위한 것입니다.
독학한 학생이나 실무자는 금융 수학에 대한 입문 책을 최소한 한 권 읽어야 합니다.
우선 이 책은 책이 아닙니다!
모든 노트북은 다른 노트북과 (거의) 독립적입니다. 따라서 관심 있는 노트북만 선택하시면 됩니다!
- Every notebook contains python code ready to use!
바로 사용할 수 있고 잘 문서화되어 있는 Python으로 구현된 재무 모델의 예를 인터넷에서 찾는 것은 쉽지 않습니다.
양적 금융을 처음 시작하는 분들에게 이 노트가 매우 유용할 것 같아요!
게다가 Jupyter 노트북은 대화형입니다. 즉, 노트북 내부에서 코드를 실행할 수 있습니다. 아마도 이것이 공부하는 가장 좋은 방법일 것입니다!
Github이나 NBviewer로 노트북을 열면 수학 공식이 제대로 표시되지 않는 경우가 있습니다. 이러한 이유로 저장소를 복제/다운로드하는 것이 좋습니다.
아니요!
수시로 더 많은 노트를 업로드하겠습니다.
현재 저는 확률론적 프로세스, 칼만 필터, 통계 등의 분야에 관심이 있습니다. 앞으로는 이러한 주제에 관해 더 흥미로운 노트를 추가하겠습니다.
궁금한 점이 있거나 오류를 발견한 경우, 개선을 위한 제안 사항이 있는 경우 언제든지 저에게 연락해 주세요.
1.1) 블랙숄즈 수치법 (대수정규분포, 측도변화, 몬테카를로, 이항법) .
1.2) SDE 시뮬레이션 및 통계 (경로 생성, 신뢰구간, 가설 검정, 기하 브라운 운동, Cox-Ingersoll-Ross 과정, 오일러 마루야마 방법, 매개변수 추정)
1.3) 푸리에 역산법 (역산식, 수치역산, 옵션가격, FFT, 루이스식)
1.4) SDE, Heston 모델 (상관 브라운 운동, Heston 경로, Heston 분포, 특성 함수, 옵션 가격 책정)
1.5) SDE, Lévy 프로세스 (Merton, Variance Gamma, NIG, 경로 생성, 매개변수 추정)
2.1) Black-Scholes PDE (PDE 이산화, 암시적 방법, 희소 행렬 자습서)
2.2) 엑조틱 옵션 (바이너리 옵션, 배리어 옵션, 아시안 옵션)
2.3) 미국식 옵션 (PDE, Early exercise, Binomial method, Longstaff-Schwartz, Perpetual put)
3.1) Merton Jump-Diffusion PIDE (암시적-명시적 이산화, 이산 컨볼루션, 모델 제한, 몬테카를로, 푸리에 역산, 반폐쇄식)
3.2) 분산 감마 PIDE (근사 점프-확산 PIDE, 몬테카를로, 푸리에 반전, 블랙숄즈와의 비교)
3.3) 정규 역 가우스 PIDE (근사 점프-확산 PIDE, 몬테카를로, 푸리에 반전, 레비 측정의 속성)
4.1) 거래비용에 따른 가격 책정 (Davis-Panas-Zariphopoulou 모델, 특이 통제 문제, HJB 변량 불평등, 무차별 가격 책정, 이항 트리, 성능)
4.2) 변동성 스마일 및 모델 교정 (Volatility smile, root finder 방법, 교정 방법)
5.1) 선형 회귀 및 칼만 필터 (시장 데이터 정리, 선형 회귀 방법, 칼만 필터 설계, 매개변수 선택)
5.2) 칼만 자기상관 추적 - AR(1) 과정 (자기회귀 과정, 추정 방법, 칼만 필터, 칼만 스무더, 가변 자기상관 추적)
5.3) 변동성 추적 (Heston 시뮬레이션, 가설 검정, 분포 피팅, 추정 방법, GARCH(1,1), Kalman 필터, Kalman Smoother)
6.1) Ornstein-Uhlenbeck 프로세스 및 응용 (매개변수 추정, 적중 시간, Vasicek PDE, Kalman 필터, 거래 전략)
7.1) 고전적인 MVO (평균 분산 최적화, 2차 계획법, 장단점만 사용, 닫힌 공식)
A.1) 부록: 선형 방정식 (LU, Jacobi, Gauss-Seidel, SOR, Thomas)
A.2) 부록: 코드 최적화 (cython, C 코드)
A.3) 부록: Lévy 프로세스 이론 검토 (기본적이고 중요한 정의, 가격 책정 PIDE 도출)
가상 환경:
여기에서는 Anaconda와 Python 모듈 venv를 사용하여 가상 환경을 만드는 방법을 설명합니다.
다음을 사용하여 테스트된 Conda 가상 환경을 다시 만들 수 있습니다.
conda env create -f environment.yml
pip install -e .
첫 번째 줄은 가상 환경을 다시 만들고 모든 패키지를 설치합니다.
두 번째 줄에서는 로컬 패키지 FMNM
설치합니다.
최신 Python 버전으로 새 환경을 생성하려면 다음을 수행할 수 있습니다.
conda create -n FMNM python
conda activate FMNM
PACKAGES= $( tr ' n ' ' ' < list_of_packages.txt | sed " s/arch/arch-py/g " )
conda install ${PACKAGES[@]}
pip install -e .
세 번째 줄에서는 패키지 이름 arch
conda에서 사용하는 이름인 arch-py
로 바꿉니다.
Python 3.11.4를 사용하는 venv
생성하려는 경우 다음과 같이 수행할 수 있습니다.
python3.11.4 -m venv --prompt FMNM python-venv
source python-venv/bin/activate
python3 -m pip install --upgrade pip
pip install --requirement requirements.txt
pip install -e .
시스템에 이미 설치된 Python 버전을 사용하려면 다음을 실행하면 됩니다.
pip install --requirement list_of_packages.txt
pip install -e .
그런 다음 쉘 jupyter-notebook
또는 jupyter-lab
에 입력하십시오.
그러나 이전 버전을 사용하는 경우 호환성 문제가 발생할 수 있습니다.
도커:
여기서는 jupyterlab을 사용하여 노트북을 실행합니다.
docker-compose를 사용하여 컨테이너를 빌드할 수 있습니다.
docker-compose up --build -d
그런 다음 컨테이너를 중지합니다.
docker-compose down
그리고 http://localhost:8888/lab
에서 브라우저를 엽니다.
또는 다음을 수행할 수 있습니다.
docker build -t fmnm .
docker run --rm -d -p 8888:8888 --name Numeric_Finance fmnm