Skip to content

Commit 9331f57

Browse files
rshefteltwiecki
authored andcommitted
ReadTheDoc setup for auto-generation of documentation (#75)
* move the annualization factor multiplication to make it more obvious that the math is correct. * clarified the variable names in sortino and added a link to a pdf on the math * fixed flake8 error warnings on line length * one last attempt to fixed flake8 error warnings on line length * yet one more attempt to fixed flake8 error warnings so TravisCI will pass * Final fix for flake8 compliance so TravisCI passes * Files for documentation and cleanup of the docstrings in stats and utils. * Test with conf.py version to correct failing RTD build * Back to the correct version method * Try remove bottleneck * Update the pandas requirements * Use the standard napolean sphinx builder * Better method for excluding bottleneck in setup.py for RTD * Fix the Better method for excluding bottleneck in setup.py for RTD * Cleanup suggestions for initial docs * (1) remove un-needed .rst file (2) revert pandas requirement to 0.16.1
1 parent ca309ea commit 9331f57

File tree

10 files changed

+547
-47
lines changed

10 files changed

+547
-47
lines changed

docs/Makefile

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
# Minimal makefile for Sphinx documentation
2+
#
3+
4+
# You can set these variables from the command line.
5+
SPHINXOPTS =
6+
SPHINXBUILD = python -msphinx
7+
SPHINXPROJ = empyrical
8+
SOURCEDIR = .
9+
BUILDDIR = _build
10+
11+
# Put it first so that "make" without argument is like "make help".
12+
help:
13+
@$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
14+
15+
.PHONY: help Makefile
16+
17+
# Catch-all target: route all unknown targets to Sphinx using the new
18+
# "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS).
19+
%: Makefile
20+
@$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)

docs/conf.py

Lines changed: 155 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,155 @@
1+
#!/usr/bin/env python3
2+
# -*- coding: utf-8 -*-
3+
#
4+
# empyrical documentation build configuration file, created by
5+
# sphinx-quickstart on Thu Jan 25 22:49:14 2018.
6+
#
7+
# This file is execfile()d with the current directory set to its
8+
# containing dir.
9+
#
10+
# Note that not all possible configuration values are present in this
11+
# autogenerated file.
12+
#
13+
# All configuration values have a default; values that are commented out
14+
# serve to show the default.
15+
16+
# If extensions (or modules to document with autodoc) are in another directory,
17+
# add these directories to sys.path here. If the directory is relative to the
18+
# documentation root, use os.path.abspath to make it absolute, like shown here.
19+
#
20+
# import os
21+
# import sys
22+
# sys.path.insert(0, os.path.abspath('.'))
23+
import empyrical
24+
25+
26+
# -- General configuration ------------------------------------------------
27+
28+
# If your documentation needs a minimal Sphinx version, state it here.
29+
#
30+
# needs_sphinx = '1.0'
31+
32+
# Add any Sphinx extension module names here, as strings. They can be
33+
# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom
34+
# ones.
35+
extensions = ['sphinx.ext.autodoc', 'sphinx.ext.githubpages',
36+
'sphinx.ext.napoleon']
37+
# Add any paths that contain templates here, relative to this directory.
38+
templates_path = ['_templates']
39+
40+
# The suffix(es) of source filenames.
41+
# You can specify multiple suffix as a list of string:
42+
#
43+
# source_suffix = ['.rst', '.md']
44+
source_suffix = '.rst'
45+
46+
# The master toctree document.
47+
master_doc = 'index'
48+
49+
# General information about the project.
50+
project = 'empyrical'
51+
copyright = '2018, Quantopian'
52+
author = 'Quantopian'
53+
54+
# The version info for the project you're documenting, acts as replacement for
55+
# |version| and |release|, also used in various other places throughout the
56+
# built documents.
57+
#
58+
# The short X.Y version.
59+
ver = empyrical.__version__
60+
version = ver[:ver.find('+')] # get only the main part of the version
61+
# The full version, including alpha/beta/rc tags.
62+
release = version
63+
64+
# The language for content autogenerated by Sphinx. Refer to documentation
65+
# for a list of supported languages.
66+
#
67+
# This is also used if you do content translation via gettext catalogs.
68+
# Usually you set "language" from the command line for these cases.
69+
language = None
70+
71+
# List of patterns, relative to source directory, that match files and
72+
# directories to ignore when looking for source files.
73+
# This patterns also effect to html_static_path and html_extra_path
74+
exclude_patterns = ['_build', 'Thumbs.db', '.DS_Store', '**tests**']
75+
76+
# The name of the Pygments (syntax highlighting) style to use.
77+
pygments_style = 'sphinx'
78+
79+
# If true, `todo` and `todoList` produce output, else they produce nothing.
80+
todo_include_todos = False
81+
82+
83+
# -- Options for HTML output ----------------------------------------------
84+
85+
# The theme to use for HTML and HTML Help pages. See the documentation for
86+
# a list of builtin themes.
87+
#
88+
html_theme = 'default'
89+
90+
# Theme options are theme-specific and customize the look and feel of a theme
91+
# further. For a list of options available for each theme, see the
92+
# documentation.
93+
#
94+
# html_theme_options = {}
95+
96+
# Add any paths that contain custom static files (such as style sheets) here,
97+
# relative to this directory. They are copied after the builtin static files,
98+
# so a file named "default.css" will overwrite the builtin "default.css".
99+
html_static_path = ['_static']
100+
101+
# -- Options for HTMLHelp output ------------------------------------------
102+
103+
# Output file base name for HTML help builder.
104+
htmlhelp_basename = 'empyricaldoc'
105+
106+
107+
# -- Options for LaTeX output ---------------------------------------------
108+
109+
latex_elements = {
110+
# The paper size ('letterpaper' or 'a4paper').
111+
#
112+
# 'papersize': 'letterpaper',
113+
114+
# The font size ('10pt', '11pt' or '12pt').
115+
#
116+
# 'pointsize': '10pt',
117+
118+
# Additional stuff for the LaTeX preamble.
119+
#
120+
# 'preamble': '',
121+
122+
# Latex figure (float) alignment
123+
#
124+
# 'figure_align': 'htbp',
125+
}
126+
127+
# Grouping the document tree into LaTeX files. List of tuples
128+
# (source start file, target name, title,
129+
# author, documentclass [howto, manual, or own class]).
130+
latex_documents = [
131+
(master_doc, 'empyrical.tex', 'empyrical Documentation',
132+
'Quontopian', 'manual'),
133+
]
134+
135+
136+
# -- Options for manual page output ---------------------------------------
137+
138+
# One entry per manual page. List of tuples
139+
# (source start file, name, description, authors, manual section).
140+
man_pages = [
141+
(master_doc, 'empyrical', 'empyrical Documentation',
142+
[author], 1)
143+
]
144+
145+
146+
# -- Options for Texinfo output -------------------------------------------
147+
148+
# Grouping the document tree into Texinfo files. List of tuples
149+
# (source start file, target name, title, author,
150+
# dir menu entry, description, category)
151+
texinfo_documents = [
152+
(master_doc, 'empyrical', 'empyrical Documentation',
153+
author, 'empyrical', 'One line description of project.',
154+
'Miscellaneous'),
155+
]

docs/empyrical.rst

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
empyrical package
2+
=================
3+
4+
Submodules
5+
----------
6+
7+
empyrical\.stats module
8+
-----------------------
9+
10+
.. automodule:: empyrical.stats
11+
:members:
12+
:undoc-members:
13+
:show-inheritance:
14+
15+
empyrical\.utils module
16+
-----------------------
17+
18+
.. automodule:: empyrical.utils
19+
:members:
20+
:undoc-members:
21+
:show-inheritance:
22+
23+
24+
Module contents
25+
---------------
26+
27+
.. automodule:: empyrical
28+
:members:
29+
:undoc-members:
30+
:show-inheritance:

docs/index.rst

Lines changed: 129 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,129 @@
1+
empyrical
2+
=========
3+
4+
Common financial risk metrics.
5+
6+
Table of Contents
7+
-----------------
8+
9+
- `Installation <#installation>`__
10+
- `Usage <#usage>`__
11+
- `API <#api>`__
12+
- `Support <#support>`__
13+
- `Contributing <#contributing>`__
14+
- `Testing <#testing>`__
15+
- `Documentation <#documentation>`__
16+
17+
Source location
18+
---------------
19+
Hosted on GitHub: https://github.com/quantopian/empyrical
20+
21+
Installation
22+
------------
23+
24+
::
25+
26+
pip install empyrical
27+
28+
Usage
29+
-----
30+
31+
Simple Statistics
32+
33+
.. code:: python
34+
35+
import numpy as np
36+
from empyrical import max_drawdown, alpha_beta
37+
38+
returns = np.array([.01, .02, .03, -.4, -.06, -.02])
39+
benchmark_returns = np.array([.02, .02, .03, -.35, -.05, -.01])
40+
41+
# calculate the max drawdown
42+
max_drawdown(returns)
43+
44+
# calculate alpha and beta
45+
alpha, beta = alpha_beta(returns, benchmark_returns)
46+
47+
Rolling Measures
48+
49+
.. code:: python
50+
51+
import numpy as np
52+
from empyrical import roll_max_drawdown
53+
54+
returns = np.array([.01, .02, .03, -.4, -.06, -.02])
55+
56+
# calculate the rolling max drawdown
57+
roll_max_drawdown(returns, window=3)
58+
59+
Pandas Support
60+
61+
.. code:: python
62+
63+
import pandas as pd
64+
from empyrical import roll_up_capture, capture
65+
66+
returns = pd.Series([.01, .02, .03, -.4, -.06, -.02])
67+
68+
# calculate a capture ratio
69+
capture(returns)
70+
71+
# calculate capture for up markets on a rolling 60 day basis
72+
roll_up_capture(returns, window=60)
73+
74+
API
75+
---
76+
77+
.. toctree::
78+
:maxdepth: 2
79+
80+
modules.rst
81+
82+
Support
83+
-------
84+
85+
Please `open an
86+
issue <https://github.com/quantopian/empyrical/issues/new>`__ for
87+
support.
88+
89+
Contributing
90+
------------
91+
92+
Please contribute using `Github
93+
Flow <https://guides.github.com/introduction/flow/>`__. Create a branch,
94+
add commits, and `open a pull
95+
request <https://github.com/quantopian/empyrical/compare/>`__.
96+
97+
Testing
98+
-------
99+
100+
- install requirements
101+
- "nose>=1.3.7",
102+
- "parameterized>=0.6.1"
103+
104+
::
105+
106+
python -m unittest
107+
108+
109+
Documentation
110+
-------------
111+
To build this documentation requires `sphinx`
112+
113+
::
114+
115+
cd docs
116+
make_docs.bat
117+
118+
119+
.. toctree::
120+
:maxdepth: 2
121+
:caption: Contents:
122+
123+
124+
Indices and tables
125+
==================
126+
127+
* :ref:`genindex`
128+
* :ref:`modindex`
129+
* :ref:`search`

docs/make.bat

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
@ECHO OFF
2+
3+
pushd %~dp0
4+
5+
REM Command file for Sphinx documentation
6+
7+
if "%SPHINXBUILD%" == "" (
8+
set SPHINXBUILD=python -msphinx
9+
)
10+
set SOURCEDIR=.
11+
set BUILDDIR=_build
12+
set SPHINXPROJ=empyrical
13+
14+
if "%1" == "" goto help
15+
16+
%SPHINXBUILD% >NUL 2>NUL
17+
if errorlevel 9009 (
18+
echo.
19+
echo.The Sphinx module was not found. Make sure you have Sphinx installed,
20+
echo.then set the SPHINXBUILD environment variable to point to the full
21+
echo.path of the 'sphinx-build' executable. Alternatively you may add the
22+
echo.Sphinx directory to PATH.
23+
echo.
24+
echo.If you don't have Sphinx installed, grab it from
25+
echo.http://sphinx-doc.org/
26+
exit /b 1
27+
)
28+
29+
%SPHINXBUILD% -M %1 %SOURCEDIR% %BUILDDIR% %SPHINXOPTS%
30+
goto end
31+
32+
:help
33+
%SPHINXBUILD% -M help %SOURCEDIR% %BUILDDIR% %SPHINXOPTS%
34+
35+
:end
36+
popd

docs/make_docs.bat

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
@ECHO OFF
2+
REM Makes the Sphinx documentation files
3+
4+
FOR %%a IN (%~dp0\.) do set SOURCE=%%~dpa
5+
set OLD_PYTHONPATH=%PYTHONPATH%
6+
set PYTHONPATH=%PYTHONPATH%;%SOURCE%
7+
8+
sphinx-apidoc -f -o . ../empyrical
9+
./make.bat html
10+
set PYTHONPATH=%OLD_PYTHONPATH%

docs/modules.rst

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
empyrical
2+
=========
3+
4+
.. toctree::
5+
:maxdepth: 4
6+
7+
empyrical

0 commit comments

Comments
 (0)