neurodoc님의 포스팅
퀀트 도전- 월간 퀀트스터디, LPPL) 파이썬 LPPL 코드로 과거 TSLA 주가 분석해보기(코드 수정됐으니 받아가신 분들 필독!!)
이게 급 궁금해졌다.
이 블로그 포스팅 생성의 직접 원인이 된 글은,
자산의 버블을 예측하는 수학공식(Log Periodic Power Law, LPPL)
이거였다.
사실 처음 이 퀀트 스터디 칼럼을 읽었을 때 나는
와~ 흥미롭다. 이런 분석은 기술적 분석의 심화 버전이 될 수 있겠다.'
정도의 반응이었다.
그런데 무슨 일인지 위 뉴로닥님 포스팅을 우연히 보다가 호기심이 커졌다.
코딩의 로직을 분해해보기로 했다.
어렸을 때 아무것도 모르지만, 집에 반쯤 망가진 라디오 카셋트 플레이어를 분해하듯이,
코드를 분해해보면 어떨까 생각했다.
코딩 무지렁이인 내가 어떻게... 할 수 있을까?
우선 GPT AI 도움을 받아보자.
https://www.perplexity.ai/search/haeseoghaejweo-.M_QqsXPTTSQgT900H5TTg
알겠습니다. 첨부된 파일은 LPPL(Log-Periodic Power Law) 모델을 구현하는 Python 코드입니다. 이 모델은 금융 시장에서 거품(bubble) 붕괴를 예측하는 데 사용됩니다.
LPPL 모델 주요 내용
이 코드는 다음과 같은 주요 기능들을 포함합니다.
클래스:
LPPL클래스는 LPPL 모델의 핵심이며, 다음을 포함합니다.초기화: 과거 가격 데이터를 사용하여 모델을 초기화합니다.
데이터 변환: 날짜 데이터를 시작일로부터 경과일로 변환하고, 가격에 로그를 취합니다.
LPPL 행렬 생성: 주어진 파라미터에 대한 LPPL 행렬을 생성합니다.
목적 함수: 최적화할 목적 함수를 정의합니다.
단순 모델 피팅: 초기
tc(임계 시간) 값을 추정하기 위해 단순 모델을 피팅합니다.유전 알고리즘: 유전 알고리즘을 사용하여 LPPL 파라미터를 최적화합니다.
파라미터 미세 조정: 로컬 최적화를 사용하여 파라미터를 미세 조정합니다.
거품 조건 확인: 피팅된 파라미터가 거품 조건에 부합하는지 확인합니다.
다중 윈도우 시도: 여러 윈도우 크기에 대해 피팅을 시도하여 최적의 파라미터를 찾습니다.
유전 알고리즘: 이 코드에서는 유전 알고리즘을 사용하여 LPPL 모델의 파라미터를 최적화합니다. 유전 알고리즘은 다음과 같은 단계를 포함합니다.
초기 모집단 생성: 초기 파라미터 집합을 생성합니다.
적합도 평가: 각 파라미터 집합의 적합도를 평가합니다.
선택: 적합도가 높은 파라미터 집합을 선택합니다.
교차: 선택된 파라미터 집합을 교차하여 새로운 파라미터 집합을 생성합니다.
돌연변이: 새로운 파라미터 집합에 돌연변이를 적용합니다.
반복: 위의 단계를 반복하여 최적의 파라미터 집합을 찾습니다.
거품 조건: 이 코드에서는 다음과 같은 거품 조건을 확인합니다.
A > 0
B < 0
|C| < 1
m in $$0.1, 0.9]
omega in $$2, 25]
phi in $$0, 2π]
tc > last time point and tc < last time point + 0.1
Number of oscillations >= 2.5
Damping factor >= 1
Max relative error <= 0.2
코드 사용법
이 코드를 사용하려면 다음과 같은 단계를 따르십시오.
필요한 라이브러리 설치:
numpy,pandas,yfinance,matplotlib,scipy라이브러리가 필요합니다.데이터 준비: 과거 가격 데이터를 pandas DataFrame으로 준비합니다. DataFrame은 DatetimeIndex와 'Adj Close' 열을 포함해야 합니다.
LPPL 객체 생성:
LPPL클래스의 객체를 생성하고, 가격 데이터를 전달합니다.모델 피팅:
simple_model_fit,genetic_algorithm_fit,fine_tune_parameters메서드를 사용하여 모델을 피팅합니다.결과 분석: 피팅된 파라미터를 사용하여 거품 붕괴를 예측합니다.
추가 설명
주석: 코드에는 자세한 주석이 포함되어 있어 각 기능과 단계를 이해하는 데 도움이 됩니다.
예외 처리: 코드에는 예외 처리가 포함되어 있어 발생할 수 있는 오류를 처리합니다.
파라미터 범위: 코드에는 파라미터 범위가 정의되어 있어 최적화 과정에서 파라미터가 유효한 범위 내에 있도록 합니다.
다중 윈도우: 코드에서는 다중 윈도우 크기를 사용하여 모델을 피팅하여 더 나은 결과를 얻을 수 있습니다.
이 코드는 LPPL 모델을 사용하여 금융 시장의 거품 붕괴를 예측하는 데 유용한 도구가 될 수 있습니다.
다음 단계
이 코드를 실제로 사용하려면 다음을 수행하는 것이 좋습니다.
주식 데이터 가져오기:
yfinance라이브러리를 사용하여 관심 있는 주식의 과거 데이터를 가져옵니다.데이터 전처리: 필요한 경우 데이터를 정리하고 전처리합니다.
모델 실행: 코드를 실행하고 결과를 분석합니다.
파라미터 조정: 필요에 따라 파라미터를 조정하여 모델의 정확도를 높입니다.
궁금한 점이 있다면 언제든지 다시 질문해주세요.






![[독서] Fed Insight (성상현)](https://post-image.valley.town/c3FdeAxbfNCd3iMxVpTtI.jpeg)

![[Howard Marks, Oaktree Capital] How to think about Risk.](https://post-image.valley.town/e6vgRFumdclpz8eD7MYGe.png)