Releases: chinchalinchin/scrilla
1.6.0
Mainly, I've fixed an application breaking bug that popped up. I am not sure if there were some updates to the underlying libraries, but the sqlite cache stopped working at some point in the last year. It used to do type conversions with datetime.date
objects, but now requires strings.
Also, the GUI appears to have broken with an update to the Qt library. See here for more info: matplotlib/matplotlib#24155
Currently looking into a solution.
1.5.0
On February 4th, the US Treasury implemented changes to their Yield Curve RSS feed: https://home.treasury.gov/developer-notice-xml-changes
In addition, Nasdaq's acquisition of Quandl (https://www.nasdaq.com/about/press-center/nasdaq-acquires-quandl-advance-use-alternative-data) recently completed.
Quandl's RESTful endpoints for the Treasury Yield Curve fell out of support. Whether it was due to the acquisition or the internal changes to the data is unknown. Regardless, the USTREASURY/YIELD
endpoint is no longer refreshed. This was the main source of interest rate data for the application.
This new update hydrates the interest rate data directly from the US Treasury XML RSS feed. The format of the data is not ideal and requires some logical gymnastics to parse. I will keep searching for ways to optimize the parsing algorithm; as it stands the previous functionality has been restored.
A new service manager named 'treasury' was added to the interest parsing algorithm and configuration was added to the static.py
module. Besides this API switch, nothing else in the application has been touched.
In addition, the US Treasury RSS feed does not require an API key. Also, there does not appear to be any API throttling (?). Anyway, the point is, the application no longer requires a Quandl API key to function. In fact, the application will not function for dates after 2022-02-04 if Quandl is used as the interest rate manager. In a future release, it will be deprecated entirely. As such, the default interest service manager is now set to 'treasury' (it can be switched back to 'quandl' by setting the STAT_MANAGER environment variable accordingly, but this is not recommended for the aforementioned reasons).
1.4.0
Massively improved GUI
GUI actually works now. Argument validation; responsive design; graphs can be exported as PNGs onto local filesystem; tables can be exported as JSON onto local filesystem.
Configuration abstraction
GUI widgets are abstracted into a configuration file that gets fed into factory methods to populate the GUI. Similarly, CLI commands have been abstracted into a configuration file; new commands just need to be declared in the definitions.
Unit tests, documentation generation, pipeline
A pipeline has been setup to perform unit tests against every push to the main branch and then regenerate documentation. A static web site has been set up on the gh-pages branch to host the documentation.
General refactoring
The estimation methods have been improved. Estimating correlation through percentiles is now done through Gaussian copulas and results in a massively decrease execution time. The moving average algorithms have been condensed and optimized.
Various statistical functions
Functions have been added to calculate sample percentiles, empirical copulas, multivariate likelihoods, and much more.
1.3.0
Minor Update: Version 1.3.0
Features
-
QQ plot for sample returns to graphically assess normality. To view,
scrilla -plot-rets DIS
-
Sample statistical and point estimation can now be configured, either through an environment variable DEFAULT_ESTIMATION_METHOD or by passing in a flag to statistical estimator function. The available estimation techniques are current ly moment-matching (
moments
), percentile-match (percents
) and maximum likelihood estimation ('likely'). For example,scrilla -cor -likely BX ALLY
will estimate the correlation between BX and ALLY using maximum likelihood estimation, whereasscrilla -cor -moments BX ALLY
will estimate the correlation using the method of moment matching. If no flag is passed in, the method will default to whatever value is set in DEFAULT_ESTIMATION_METHOD.
1.2.0
Minor Update: Version 1.2.0
Features
- SQLite for faster caching. All IO now goes through a local SQLite database for faster reading and writing.
- Storage of API credentials through CLI instead of environment variables, i.e. in addition
scrilla -store ALPHA_VANTAGE_KEY=mykeygoeshere
Keys are stored unencrypted in the installation directory/data/common directory. Environment_ variables are still recommended for storage of API credentials for this reason.
- Conditional value at risk portfolio optimization function now available. The function currently assumes a Black Scholes model (i.e., the stock return is lognormally distributed) for calculating the percentiles. For example,
scrilla -opt-cvar -prob 0.05 -expiry 0.5 ALLY BX SONY ACI
will minimize the value at risk for outcomes at the end of a half year (-expiry=0.5
) occurring in the 5th percentile (-prob=0.05
) of the distribution created through a portfolio of ALLY, BX, SONY, and ACI.
- Improved error handling and general performance upgrades. Use of global variables in
files
module to prevent excessive IO, new exception classes inerrors
module now thrown through the program, etc.
First Scrilla Release
First release now available below. Alternatively, you can install through PyPi,
pip install scrilla
See README for more information on usage.