Tags: MathSci/fecon236
Tags
2018-12-02 (tag: 10.8.0) tool.py: Add median(), mad(), and madmen() for robust rescaling using MAD, Median Absolute Deviation. Add module rates/credit.py. Derivation in fecon235 notebook, https://git.io/creditprof Include rates/credit module in __init__.py, specifically for Unified Credit Profile, creditprof(), which produces robust MAD rescaling of credit spreads.
2018-07-31 (tag: 10.7.1) Default switch from biased to unbiased estimator of standard deviation, cf. population vs. sample statistics. fecon236/tool.py: Add `std()` with population argument, which can make a significant difference for small sample sizes. Clarify use of ddof, delta degrees of freedom, and data format cases. Modify `kurtfun()` in tool.py with population argument. Thus in dst/gaussmix.py, switch from np.std() to tool.std() where implicitly population=False by default. prob/sim.py: Add norat2ret(), ret2prices(), gmix2ret(), and gmix2prices(), then for display, gmixshow(). Generalizing the bootstrap module reveals two new primitive functions which can be reused often. Replace rates2prices() by zerat2prices() for clarity. Rename simshow() to simushow() using replaced function. Include the latest SPX constants as default arguments, so that the numerical values can be sourced by the bootstrap module. Total rewrite of boots/bootstrap.py: generalization and clarification of logic flow. The 2014 code was too SPX specific, but this new version can be applied across all asset classes. Add hybrid2ret() where hybrid means synthesis of bootstrap method with Gaussian mixture. boots/bootstrap.py: Add smallsample_gmr() to demo geometric mean rates, and smallsample_loss() to demo probability of loss. Also for boots/bootstrap.py, let replace=True as default. This aligns generally with theoretical bootstrap assumptions. The opposite was useful during preliminary testing. Add tests/test_bootstrap.py where the roundtrip test illustrates overall usage. We can deprecate `fecon235/nb/SIMU-mn0-sd1pc-d4spx_1957-2014.csv.gz` but include recipe for creating similar pre-computed CSV files in https://git.io/bootspx notebook. dst/gaussmix.py: Modify error handling. On excessive kurtosis, change `system.die` to OverflowError. In such cases, retry with larger argument b. Add docs/index.md for https://fecon236.readthedocs.io thus markdown files in the `docs` directory should be rendered automatically by Read the Docs webhooks on fecon236. Re-establish `.github` directory and revise contents: .old/235/.github/CODE_OF_CONDUCT.md -> .github/CODE_OF_CONDUCT.md .old/235/.github/CONTRIBUTING.md -> .github/CONTRIBUTING.md .old/235/.github/PULL_REQUEST_TEMPLATE.md -> .github/PULL_REQUEST_TEMPLATE.md .old/235/.github/ISSUE_TEMPLATE.md -> .github/ISSUE_TEMPLATE.md .github/ISSUE_TEMPLATE.md -> .github/ISSUE_TEMPLATE/custom.md
2018-06-24 (tag: 10.7.0) **Bump minor to 7 to mark COMPLETION OF REFACTORING.** See `fecon236/__init__.py` for tree "map" of package directory, reproduced in README.md: `print(fe.map)` Revise docs/READ/fe-00_Intro.md esp. on versioning and use first half on first half of wiki Home. Add docs/READ/fe-02_FAQ.md originally from https://github.com/rsvp/fecon235/wiki a.k.a. Home but revised to reflect new fecon236 changes. Re-use this FAQ as second half of renewed Home. Add docs/jupyter/nb-10_Security_trust.md for notebooks. *Documentation now in sync between fecon235 and fecon236.* .old/235/lib/ys_prtf_boltzmann.py -> fecon236/prtf/boltzmann.py .old/235/tests/test_boltzmann.py -> tests/test_boltzmann.py prtf/boltzmann.py: Fix circular dependency problem using fecon235.fecon235 module, especially for covdiflog() and groupgemrat().
2018-06-20 (tag: 10.6.7b70) The objective of this micro-7 beta release was to spin-off, integrate, and test the old fecon235/fecon235.py top module as fecon236/fecon236/top.py. Spin-off from top.py, which is now entirely clean and empty, results in several new subdirectories and modules. .old/235/fecon235.py -> fecon236/top.py .old/235/tests/test_fecon235.py -> tests/test_group.py - Add util/group.py for `group*()` functions - Move covdiflog() from util/group.py to math/matrix.py - Add futures/cftc.py resulting from groupcotr() - Function forecast() moved to holtwinters module - Include foreholt() and forecast() in test_holtwinters.py - Add rates/fedfunds.py especially for forefunds() - Add econ/infl.py especially for foreinfl() - Add host/hostess.py especially for get() Fix #3: Circular dependencies resolved within host/hostess.py. The Python circular dependency hack is detailed in the Endnotes: put imports inside get() and avoid "from" import syntax. Test get() via FRED and Quandl in test_hostess.py. Decorate w4cotr_metals with pytest.mark.xfail, to be investigated. **setup.py: Change development status from alpha to STABLE.** The essential core spin-off from fecon235 to fecon236 is now complete and passes flake8, unit and integration tests: Travis build 70, https://travis-ci.org/MathSci/fecon236/builds/394678277
2018-06-13 (tag: 10.6.6a58) The `__version__` variable in `fecon236/__init__.py` will be updated by `./bin/up-pypi` before each release upload to PyPI. Add new directories: `parse`, `math`, and `ml` such that .old/235/lib/yi_secform.py -> fecon236/parse/sec.py .old/235/lib/yi_matrix.py -> fecon236/math/matrix.py .old/235/tests/test_matrix.py -> tests/test_matrix.py .old/235/lib/ys_mlearn.py -> fecon236/ml/learn.py Add `tests/test_learn.py` by spin-off of doctests from ml/learn.py.
2018-06-09 (tag: 10.6.5a50) The objective of this micro-5 alpha release was to update, integrate, and test the *gaussmix* module. The sympy module for symbolic mathematics is a prerequisite so we have included notebook documentation. The analytical results are verified through numerical simulation, hence we also use our *sim* module. Add fecon236/dst directory for Distributions (Statistical, not software). We extensively develop the Gaussian mixture distribution. In .travis.yml: conda install sympy -- symbolic math package needed for gaussmix module. Notebook demo of symbolic math package: `docs/READ/fe-54_Symbolic_sympy.ipynb`. .old/235/lib/ys_gauss_mix.py -> fecon236/dst/gaussmix.py .old/235/tests/test_gauss_mix.py -> tests/test_gaussmix.py .old/235/docs/fecon235-08-sympy.ipynb -> docs/READ/fe-54_Symbolic_sympy.ipynb .old/235/lib/yi_simulation.py -> fecon236/prob/sim.py .old/235/lib/yi_stocks.py -> fecon236/host/stock.py Add fecon236/boots directory for Bootstrap and small-sample studies. Spin-off 2014 material from prob/sim.py to boots/bootstrap.py. This will need polish and generalization, useful for a notebook later. prob/sim.py: Add rates2prices() and simshow(). The latter provides a statistical and optional visual summary of the simulation module. In .travis.yml: conda install pandas-datareader -- not pandas_datareader, GOTCHA, which is the module name. The package name is pandas-datareader, which is prerequisite for `fecon236/host/stock.py` to retrieve data from Yahoo and Google Finance.
2018-06-01 (tag: 10.6.4a43) The objective of this micro-4 alpha release was to update, integrate, and test the *optimize* module. That enabled the absorption of the *opt_holt* module into the *holtwinters* module. Add `oc` "Optimal Control" directory for general optimization methods. .old/235/lib/ys_optimize.py -> fecon236/oc/optimize.py .old/235/tests/test_optimize.py -> tests/test_optimize.py .old/235/lib/ys_opt_holt.py -> fecon236/tsa/opt_holt.py -> rm tsa/holtwinters.py: Absorb tsa/opt_holt.py and delete tsa/opt_holt.py. test_holtwinters.py: Include test of `optimize_holt()` concluding absorption of opt_holt module, which produces robust optimal estimation of alpha and beta, into the holtwinters module. README.md: Edit sections, include issues URL, add "what for" section and logo image. Provisional link to docs.
2018-05-24 (tag: 10.6.3a35) The objective of this micro-3 alpha release was to update, integrate, and test the *qdl* module and its dependencies into the project. ``` .old/235/lib/yi_quandl.py -> fecon236/host/qdl.py .old/235/lib/yi_quandl_api.py -> fecon236/host/_ex_Quandl.py .old/235/tests/test_timeseries.py -> tests/test_holtwinters.py ``` Add tests/test_qdl.py: Pass xbt price test. The `_ex_Quandl` module is still operational, despite Quandl's deprecation of its Quandl.py version 2.8.9. We fork the single module and will maintain it as straddling python2/3 code. host/qdl.py: Deprecate plotqdl() and holtqdl(). Rename quandl() as `_qget()` for future clarity. Explain the mechanics of API key and token file "authtoken.p". test_qdl.py: Mark download function with "oLocal", else Quandl raises: "HTTP Error 429: Too Many Requests" when testing without authtoken.p through external Travis. setup.py: Support markdown, correct PyPI rendering by appending "content_type" incantation. PyPI rendering also corrected by excluding "license" as text. Add `docs/READ/fe-97-upkeep.md` for maintenance of the code infrastructure and distribution.
2018-05-18 (tag: 10.6.2a29) The objective of this micro-2 alpha release was to update, integrate, and test the *plots* module and its dependencies into the project. `host/fred.py`: Graceful deprecate plotfred() since system.die() does not provide traceback. `visual/plots.py`: Transplant plot() from `.old/235` and deprecate use of symbol code as argument. Wrapping of plotfred and plotqdl within `plot()` has been deprecated in fecon236, thus the "data" argument can no longer be a fredcode or quandlcode. MAJOR decorator refactoring of `visual/plots.py` using ***decorator*** `saveImage()`. This greatly reduced repetitive boilerplate code, and introduced centralized logic, for example, the option to suppress screen show via leading blank space in title. Fix `boxplot()` by removing NaN from data. Hopefully this fixes the "percentile interpolation" bug which can be traced back to use of `np.compress()`. `require.txt`: Mirror conda installs in .travis.yml where minimum versions were obtained through Travis' raw log. Adopt lockfile "==" syntax to obtain a known deterministic build, actually used in testing. The shown combination of versions is *de facto* dependency resolved. `fecon236/__init__.py`: Include principal modules, i.e. tool, fred, plots, holtwinters. `docs/nb-02-preamble.md`: Update Preamble-p10.18.0514 for use in Jupyter notebooks. Renamed and fully tested: .old/235/tests/test_1tools.py -> tests/test_tool.py
2018-05-12 (tag: 10.6.1a24) The objective of this micro-1 alpha release was to update, integrate, and test the *fred* module and its dependencies into the project. We shall use absolute, not relative, import statements for both `tests` and package modules. Import division from `__future__`. Add bin/up-pypi for uploading to PyPI. Create and upload dist wheel to PyPI.org with option to bump VERSION. Since our code is still straddling between python27 and python34, we must pay attention to the difference between Universal versus Pure wheels. Delete prior wheels in `dist`, else PyPI will consider duplicate submissions as error. Add require.txt as placeholder for requirements.txt where explanation is given in `docs/fe-10-install.md`. ``` .old/235/lib/yi_fred.py -> fecon236/host/fred.py .old/235/lib/yi_plot.py -> fecon236/visual/plots.py .old/235/lib/yi_1tools.py -> fecon236/tools.py -> fecon236/tool.py .old/235/lib/yi_timeseries.py -> fecon236/tsa/holtwinters.py .old/235/tests/test_fred.py -> tests/test_fred.py .old/235/tests/zdata-xau-13hj-c30.csv -> tests/zdata-xau-13hj-c30.csv ``` Add fecon236/tsa, directory for *time-series analysis*. Holt-Winters is only one major method. We plan to also include Kalman filters. After each module was renamed, we made lint changes to comply with flake8. Then the import statements were modified from relative to proper absolute form. In `host/fred.py` we eliminate float(integer). Deprecate plotfred() in favor of using get() and plot(). Add `docs/fe-80-db-store.md` to show how we can persist a DataFrame using the pandas pickle feature. Our integration testing via `.travis.yml` begins to conda install some scientific packages. Successfully passed Travis build 24.
PreviousNext