GithubHelp home page GithubHelp logo

jonnyorz / lppls Goto Github PK

View Code? Open in Web Editor NEW

This project forked from boulder-investment-technologies/lppls

0.0 1.0 0.0 9.66 MB

Library for fitting the LPPLS model to data.

License: MIT License

Python 100.00%

lppls's Introduction

PyPI ๐Ÿ“ฆ

Log Periodic Power Law Singularity (LPPLS) Model

lppls is a Python module for fitting the LPPLS model to data.

Overview

The LPPLS model provides a flexible framework to detect bubbles and predict regime changes of a financial asset. A bubble is defined as a faster-than-exponential increase in asset price, that reflects positive feedback loop of higher return anticipations competing with negative feedback spirals of crash expectations. It models a bubble price as a power law with a finite-time singularity decorated by oscillations with a frequency increasing with time.

Here is the model:

LPPLS Model

where:

  • Expected Log Price Colon Equals expected log price at the date of the termination of the bubble
  • Critical Time Colon Equals critical time (date of termination of the bubble and transition in a new regime)
  • A Colon Equals expected log price at the peak when the end of the bubble is reached at Critical Time
  • B Colon Equals amplitude of the power law acceleration
  • C Colon Equals amplitude of the log-periodic oscillations
  • m Colon Equals degree of the super exponential growth
  • omega Colon Equals scaling ratio of the temporal hierarchy of oscillations
  • phi Colon Equals time scale of the oscillations

The model has three components representing a bubble. The first, LPPLS Term 1, handles the hyperbolic power law. For m < 1 when the price growth becomes unsustainable, and at Critical Time the growth rate becomes infinite. The second term, LPPLS Term 2, controls the amplitude of the oscillations. It drops to zero at the critical time Critical Time. The third term, LPPLS Term 3, models the frequency of the osciallations. They become infinite at Critical Time.

Important links

Installation

Dependencies

lppls requires:

  • Matplotlib (>= 3.1.1)
  • NumPy (>= 1.17.0)
  • Pandas (>= 0.25.0)
  • Python (>= 3.6)
  • SciPy (>= 1.3.0)

User installation

pip install -U lppls

Example Use

from lppls import lppls, data_loader
import numpy as np
import pandas as pd
%matplotlib inline

# read example dataset into df 
data = data_loader.sp500()

# convert index col to evenly spaced numbers over a specified interval
time = np.linspace(0, len(data)-1, len(data))

# create list of observation data, in this case, 
# daily adjusted close prices of the S&P 500
price = [p for p in data['Adj Close']]

# create Mx2 matrix (expected format for LPPLS observations)
observations = np.array([time, price])

# set the max number for searches to perform before giving-up
# the literature suggests 25
MAX_SEARCHES = 25

# instantiate a new LPPLS model with the S&P 500 dataset
lppls_model = lppls.LPPLS(use_ln=True, observations=observations)

# fit the model to the data and get back the params
tc, m, w, a, b, c = lppls_model.fit(observations, MAX_SEARCHES, minimizer='Nelder-Mead')

# visualize the fit
lppls_model.plot_fit(observations, tc, m, w)

# should give a plot like the following...

LPPLS Fit to the S&P500 Dataset

References

  • Filimonov, V. and Sornette, D. A Stable and Robust Calibration Scheme of the Log-Periodic Power Law Model. Physica A: Statistical Mechanics and its Applications. 2013
  • Sornette, D. Why Stock Markets Crash: Critical Events in Complex Financial Systems. Princeton University Press. 2002.

lppls's People

Contributors

joshwani-broadcom avatar joshwani avatar tucaman avatar

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.