diff --git a/.github/ISSUE_TEMPLATE/workflows/main.yml b/.github/ISSUE_TEMPLATE/workflows/main.yml
index c8a3cf59..d94f0a51 100644
--- a/.github/ISSUE_TEMPLATE/workflows/main.yml
+++ b/.github/ISSUE_TEMPLATE/workflows/main.yml
@@ -3,7 +3,7 @@ on:
pull_request:
push:
branches:
- - master
+ - main
jobs:
pytest:
diff --git a/.github/workflows/codecov.yml b/.github/workflows/codecov.yml
index 0f3083f9..05702f1f 100644
--- a/.github/workflows/codecov.yml
+++ b/.github/workflows/codecov.yml
@@ -3,7 +3,7 @@ on:
pull_request:
push:
branches:
- - master
+ - main
jobs:
codecov:
diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml
index 478bac0a..baf57714 100644
--- a/.github/workflows/main.yml
+++ b/.github/workflows/main.yml
@@ -5,9 +5,9 @@ name: pytest
on:
push:
- branches: ["master"]
+ branches: ["main"]
pull_request:
- branches: ["master"]
+ branches: ["main"]
jobs:
pytest:
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index d203e632..72afc817 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -4,7 +4,7 @@ Please refer to the roadmap for a list of areas that I think PyPortfolioOpt coul
from. In addition, the following is always welcome::
- Improve performance of existing code (but not at the cost of readability) – are there any nice numpy tricks I've missed?
-- Add new optimization objective functions. For example, if you think that the best performance metric has not been included, write it into a function (or suggest it in [Issues](https://github.com/robertmartin8/PyPortfolioOpt/issues) and I will have a go).
+- Add new optimization objective functions. For example, if you think that the best performance metric has not been included, write it into a function (or suggest it in [Issues](https://github.com/pyportfolio/pyportfolioopt/issues) and I will have a go).
- Help me write more tests! If you are someone learning about quant finance and/or unit testing in python, what better way to practice than to write some tests on an open-source project! Feel free to check for edge cases, or test performance on a dataset with more stocks.
## Guidelines
@@ -31,13 +31,13 @@ I would appreciate if changes are accompanied by relevant documentation – it d
## Questions
-If you have any questions related to the project, it is probably easiest to [raise an issue](https://github.com/robertmartin8/PyPortfolioOpt/issues), and I will tag it as a question.
+If you have any questions related to the project, it is probably easiest to [raise an issue](https://github.com/pyportfolio/pyportfolioopt/issues), and I will tag it as a question.
If you have questions unrelated to the project, drop me an email – contact details can be found on my [website](https://reasonabledeviations.com/about/)
## Bugs/issues
-If you find any bugs or the portfolio optimization is not working as expected, feel free to [raise an issue](https://github.com/robertmartin8/PyPortfolioOpt/issues). I would ask that you provide the following information in the issue:
+If you find any bugs or the portfolio optimization is not working as expected, feel free to [raise an issue](https://github.com/pyportfolio/pyportfolioopt/issues). I would ask that you provide the following information in the issue:
- Descriptive title so that other users can see the existing issues
- Operating system, python version, and python distribution (optional).
diff --git a/README.md b/README.md
index e7a75eda..120df47b 100755
--- a/README.md
+++ b/README.md
@@ -1,5 +1,5 @@
-
+
@@ -16,16 +16,16 @@
-
-
+
-
-
+
-
+
@@ -45,10 +45,10 @@ in a risk-efficient way.
PyPortfolioOpt is now being maintained by [Tuan Tran](https://github.com/88d52bdba0366127fffca9dfa93895).
-Head over to the **[documentation on ReadTheDocs](https://pyportfolioopt.readthedocs.io/en/latest/)** to get an in-depth look at the project, or check out the [cookbook](https://github.com/robertmartin8/PyPortfolioOpt/tree/master/cookbook) to see some examples showing the full process from downloading data to building a portfolio.
+Head over to the **[documentation on ReadTheDocs](https://pyportfolioopt.readthedocs.io/en/latest/)** to get an in-depth look at the project, or check out the [cookbook](https://github.com/pyportfolio/pyportfolioopt/tree/main/cookbook) to see some examples showing the full process from downloading data to building a portfolio.
-
+
## Table of contents
@@ -74,7 +74,7 @@ Head over to the **[documentation on ReadTheDocs](https://pyportfolioopt.readthe
## Getting started
-If you would like to play with PyPortfolioOpt interactively in your browser, you may launch Binder [here](https://mybinder.org/v2/gh/robertmartin8/pyportfolioopt/master). It takes a
+If you would like to play with PyPortfolioOpt interactively in your browser, you may launch Binder [here](https://mybinder.org/v2/gh/pyportfolio/pyportfolioopt/main). It takes a
while to set up, but it lets you try out the cookbook recipes without having to deal with all of the requirements.
_Note: macOS users will need to install [Command Line Tools](https://osxdaily.com/2014/02/12/install-command-line-tools-mac-os-x/)._
@@ -126,13 +126,13 @@ For more information, please read [this guide](https://docker-curriculum.com/#in
If you would like to make major changes to integrate this with your proprietary system, it probably makes sense to clone this repository and to just use the source code.
```bash
-git clone https://github.com/robertmartin8/PyPortfolioOpt
+git clone https://github.com/pyportfolio/pyportfolioopt
```
Alternatively, you could try:
```bash
-pip install -e git+https://github.com/robertmartin8/PyPortfolioOpt.git
+pip install -e git+https://github.com/pyportfolio/pyportfolioopt.git
```
## A quick example
@@ -211,14 +211,14 @@ Discrete allocation: {'GOOG': 1, 'AAPL': 4, 'FB': 12, 'BABA': 4, 'BBY': 2,
Funds remaining: $11.89
```
-_Disclaimer: nothing about this project constitues investment advice, and the author bears no responsibiltiy for your subsequent investment decisions. Please refer to the [license](https://github.com/robertmartin8/PyPortfolioOpt/blob/master/LICENSE.txt) for more information._
+_Disclaimer: nothing about this project constitues investment advice, and the author bears no responsibiltiy for your subsequent investment decisions. Please refer to the [license](https://github.com/PyPortfolio/PyPortfolioOpt/blob/main/LICENSE.txt) for more information._
## An overview of classical portfolio optimization methods
Harry Markowitz's 1952 paper is the undeniable classic, which turned portfolio optimization from an art into a science. The key insight is that by combining assets with different expected returns and volatilities, one can decide on a mathematically optimal allocation which minimises the risk for a target return – the set of all such optimal portfolios is referred to as the **efficient frontier**.
-
+
Although much development has been made in the subject, more than half a century later, Markowitz's core ideas are still fundamentally important and see daily use in many portfolio management firms.
@@ -236,7 +236,7 @@ components while still making use of the framework that PyPortfolioOpt provides.
## Features
-In this section, we detail some of PyPortfolioOpt's available functionality. More examples are offered in the Jupyter notebooks [here](https://github.com/robertmartin8/PyPortfolioOpt/tree/master/cookbook). Another good resource is the [tests](https://github.com/robertmartin8/PyPortfolioOpt/tree/master/tests).
+In this section, we detail some of PyPortfolioOpt's available functionality. More examples are offered in the Jupyter notebooks [here](https://github.com/pyportfolio/pyportfolioopt/tree/main/cookbook). Another good resource is the [tests](https://github.com/pyportfolio/pyportfolioopt/tree/main/tests).
A far more comprehensive version of this can be found on [ReadTheDocs](https://pyportfolioopt.readthedocs.io/en/latest/), as well as possible extensions for more advanced users.
@@ -272,7 +272,7 @@ The covariance matrix encodes not just the volatility of an asset, but also how
- implemented in `sklearn.covariance`
-
+
(This plot was generated using `plotting.plot_covariance`)
@@ -420,7 +420,7 @@ BibTex::
## Contributing
-Contributions are _most welcome_. Have a look at the [Contribution Guide](https://github.com/robertmartin8/PyPortfolioOpt/blob/master/CONTRIBUTING.md) for more.
+Contributions are _most welcome_. Have a look at the [Contribution Guide](https://github.com/PyPortfolio/PyPortfolioOpt/blob/main/CONTRIBUTING.md) for more.
I'd like to thank all of the people who have contributed to PyPortfolioOpt since its release in 2018.
Special shout-outs to:
diff --git a/cookbook/1-RiskReturnModels.ipynb b/cookbook/1-RiskReturnModels.ipynb
index 1c74e858..cd262eae 100644
--- a/cookbook/1-RiskReturnModels.ipynb
+++ b/cookbook/1-RiskReturnModels.ipynb
@@ -11,13 +11,13 @@
"\n",
"In this section, we compare how well the different risk models predict an out-of-sample covariance matrix, and how well the different returns models predict out-of-sample returns.\n",
"\n",
- "[](https://colab.research.google.com/github/robertmartin8/PyPortfolioOpt/blob/master/cookbook/1-RiskReturnModels.ipynb)\n",
+ "[](https://colab.research.google.com/github/pyportfolio/pyportfolioopt/blob/master/cookbook/1-RiskReturnModels.ipynb)\n",
" \n",
- "[](https://kaggle.com/kernels/welcome?src=https://github.com/robertmartin8/PyPortfolioOpt/blob/master/cookbook/1-RiskReturnModels.ipynb)\n",
+ "[](https://kaggle.com/kernels/welcome?src=https://github.com/PyPortfolio/PyPortfolioOpt/blob/main/cookbook/1-RiskReturnModels.ipynb)\n",
" \n",
- "[](https://console.paperspace.com/github/robertmartin8/PyPortfolioOpt/blob/master/cookbook/1-RiskReturnModels.ipynb)\n",
+ "[](https://console.paperspace.com/github/pyportfolio/pyportfolioopt/blob/master/cookbook/1-RiskReturnModels.ipynb)\n",
" \n",
- "[](https://studiolab.sagemaker.aws/import/github/robertmartin8/PyPortfolioOpt/blob/master/cookbook/1-RiskReturnModels.ipynb)\n",
+ "[](https://studiolab.sagemaker.aws/import/github/pyportfolio/pyportfolioopt/blob/master/cookbook/1-RiskReturnModels.ipynb)\n",
"\n",
"## Risk models"
]
@@ -37,7 +37,7 @@
"!pip install pandas numpy matplotlib PyPortfolioOpt\n",
"import os\n",
"if not os.path.isdir('data'):\n",
- " os.system('git clone https://github.com/robertmartin8/PyPortfolioOpt.git')\n",
+ " os.system('git clone https://github.com/pyportfolio/pyportfolioopt.git')\n",
" os.chdir('PyPortfolioOpt/cookbook')"
]
},
diff --git a/cookbook/2-Mean-Variance-Optimisation.ipynb b/cookbook/2-Mean-Variance-Optimisation.ipynb
index 4b3404f6..0f9879a5 100644
--- a/cookbook/2-Mean-Variance-Optimisation.ipynb
+++ b/cookbook/2-Mean-Variance-Optimisation.ipynb
@@ -33,13 +33,13 @@
"\n",
"To download data, we will use `yfinance`, an excellent library that provides free price data from Yahoo Finance, no API key needed.\n",
"\n",
- "[](https://colab.research.google.com/github/robertmartin8/PyPortfolioOpt/blob/master/cookbook/2-Mean-Variance-Optimisation.ipynb)\n",
+ "[](https://colab.research.google.com/github/pyportfolio/pyportfolioopt/blob/master/cookbook/2-Mean-Variance-Optimisation.ipynb)\n",
" \n",
- "[](https://kaggle.com/kernels/welcome?src=https://github.com/robertmartin8/PyPortfolioOpt/blob/master/cookbook/2-Mean-Variance-Optimisation.ipynb)\n",
+ "[](https://kaggle.com/kernels/welcome?src=https://github.com/PyPortfolio/PyPortfolioOpt/blob/main/cookbook/2-Mean-Variance-Optimisation.ipynb)\n",
" \n",
- "[](https://console.paperspace.com/github/robertmartin8/PyPortfolioOpt/blob/master/cookbook/2-Mean-Variance-Optimisation.ipynb)\n",
+ "[](https://console.paperspace.com/github/pyportfolio/pyportfolioopt/blob/master/cookbook/2-Mean-Variance-Optimisation.ipynb)\n",
" \n",
- "[](https://studiolab.sagemaker.aws/import/github/robertmartin8/PyPortfolioOpt/blob/master/cookbook/2-Mean-Variance-Optimisation.ipynb)"
+ "[](https://studiolab.sagemaker.aws/import/github/pyportfolio/pyportfolioopt/blob/master/cookbook/2-Mean-Variance-Optimisation.ipynb)"
]
},
{
@@ -57,7 +57,7 @@
"!pip install pandas numpy matplotlib yfinance PyPortfolioOpt\n",
"import os\n",
"if not os.path.isdir('data'):\n",
- " os.system('git clone https://github.com/robertmartin8/PyPortfolioOpt.git')\n",
+ " os.system('git clone https://github.com/pyportfolio/pyportfolioopt.git')\n",
" os.chdir('PyPortfolioOpt/cookbook')"
]
},
diff --git a/cookbook/3-Advanced-Mean-Variance-Optimisation.ipynb b/cookbook/3-Advanced-Mean-Variance-Optimisation.ipynb
index b51f71e9..3e2adedb 100644
--- a/cookbook/3-Advanced-Mean-Variance-Optimisation.ipynb
+++ b/cookbook/3-Advanced-Mean-Variance-Optimisation.ipynb
@@ -20,13 +20,13 @@
"\n",
"As discussed in the previous notebook, assets are an exogenous input (i.e you must come up with a list of tickers). We will use `yfinance` to download data for thesee tickers\n",
"\n",
- "[](https://colab.research.google.com/github/robertmartin8/PyPortfolioOpt/blob/master/cookbook/3-Advanced-Mean-Variance-Optimisation.ipynb)\n",
+ "[](https://colab.research.google.com/github/pyportfolio/pyportfolioopt/blob/master/cookbook/3-Advanced-Mean-Variance-Optimisation.ipynb)\n",
" \n",
- "[](https://kaggle.com/kernels/welcome?src=https://github.com/robertmartin8/PyPortfolioOpt/blob/master/cookbook/3-Advanced-Mean-Variance-Optimisation.ipynb)\n",
+ "[](https://kaggle.com/kernels/welcome?src=https://github.com/PyPortfolio/PyPortfolioOpt/blob/main/cookbook/3-Advanced-Mean-Variance-Optimisation.ipynb)\n",
" \n",
- "[](https://console.paperspace.com/github/robertmartin8/PyPortfolioOpt/blob/master/cookbook/3-Advanced-Mean-Variance-Optimisation.ipynb)\n",
+ "[](https://console.paperspace.com/github/pyportfolio/pyportfolioopt/blob/master/cookbook/3-Advanced-Mean-Variance-Optimisation.ipynb)\n",
" \n",
- "[](https://studiolab.sagemaker.aws/import/github/robertmartin8/PyPortfolioOpt/blob/master/cookbook/3-Advanced-Mean-Variance-Optimisation.ipynb)"
+ "[](https://studiolab.sagemaker.aws/import/github/pyportfolio/pyportfolioopt/blob/master/cookbook/3-Advanced-Mean-Variance-Optimisation.ipynb)"
]
},
{
@@ -87,7 +87,7 @@
"!pip install pandas numpy matplotlib yfinance PyPortfolioOpt\n",
"import os\n",
"if not os.path.isdir('data'):\n",
- " os.system('git clone https://github.com/robertmartin8/PyPortfolioOpt.git')\n",
+ " os.system('git clone https://github.com/pyportfolio/pyportfolioopt.git')\n",
" os.chdir('PyPortfolioOpt/cookbook')"
]
},
diff --git a/cookbook/4-Black-Litterman-Allocation.ipynb b/cookbook/4-Black-Litterman-Allocation.ipynb
index 1d4f290e..125935d3 100644
--- a/cookbook/4-Black-Litterman-Allocation.ipynb
+++ b/cookbook/4-Black-Litterman-Allocation.ipynb
@@ -24,13 +24,13 @@
"In addition to price data, constructing a market prior requires market-caps.\n",
"\n",
"\n",
- "[](https://colab.research.google.com/github/robertmartin8/PyPortfolioOpt/blob/master/cookbook/4-Black-Litterman-Allocation.ipynb)\n",
+ "[](https://colab.research.google.com/github/pyportfolio/pyportfolioopt/blob/master/cookbook/4-Black-Litterman-Allocation.ipynb)\n",
" \n",
- "[](https://kaggle.com/kernels/welcome?src=https://github.com/robertmartin8/PyPortfolioOpt/blob/master/cookbook/4-Black-Litterman-Allocation.ipynb)\n",
+ "[](https://kaggle.com/kernels/welcome?src=https://github.com/PyPortfolio/PyPortfolioOpt/blob/main/cookbook/4-Black-Litterman-Allocation.ipynb)\n",
" \n",
- "[](https://console.paperspace.com/github/robertmartin8/PyPortfolioOpt/blob/master/cookbook/4-Black-Litterman-Allocation.ipynb)\n",
+ "[](https://console.paperspace.com/github/pyportfolio/pyportfolioopt/blob/master/cookbook/4-Black-Litterman-Allocation.ipynb)\n",
" \n",
- "[](https://studiolab.sagemaker.aws/import/github/robertmartin8/PyPortfolioOpt/blob/master/cookbook/4-Black-Litterman-Allocation.ipynb)"
+ "[](https://studiolab.sagemaker.aws/import/github/pyportfolio/pyportfolioopt/blob/master/cookbook/4-Black-Litterman-Allocation.ipynb)"
]
},
{
@@ -48,7 +48,7 @@
"!pip install pandas numpy matplotlib yfinance PyPortfolioOpt\n",
"import os\n",
"if not os.path.isdir('data'):\n",
- " os.system('git clone https://github.com/robertmartin8/PyPortfolioOpt.git')\n",
+ " os.system('git clone https://github.com/pyportfolio/pyportfolioopt.git')\n",
" os.chdir('PyPortfolioOpt/cookbook')"
]
},
diff --git a/cookbook/5-Hierarchical-Risk-Parity.ipynb b/cookbook/5-Hierarchical-Risk-Parity.ipynb
index 4edfaacb..a7b048e1 100644
--- a/cookbook/5-Hierarchical-Risk-Parity.ipynb
+++ b/cookbook/5-Hierarchical-Risk-Parity.ipynb
@@ -19,13 +19,13 @@
"- Using HRP to find the minimum variance portfolio\n",
"- Plotting dendrograms\n",
"\n",
- "[](https://colab.research.google.com/github/robertmartin8/PyPortfolioOpt/blob/master/cookbook/5-Hierarchical-Risk-Parity.ipynb)\n",
+ "[](https://colab.research.google.com/github/pyportfolio/pyportfolioopt/blob/master/cookbook/5-Hierarchical-Risk-Parity.ipynb)\n",
" \n",
- "[](https://kaggle.com/kernels/welcome?src=https://github.com/robertmartin8/PyPortfolioOpt/blob/master/cookbook/5-Hierarchical-Risk-Parity.ipynb)\n",
+ "[](https://kaggle.com/kernels/welcome?src=https://github.com/PyPortfolio/PyPortfolioOpt/blob/main/cookbook/5-Hierarchical-Risk-Parity.ipynb)\n",
" \n",
- "[](https://console.paperspace.com/github/robertmartin8/PyPortfolioOpt/blob/master/cookbook/5-Hierarchical-Risk-Parity.ipynb)\n",
+ "[](https://console.paperspace.com/github/pyportfolio/pyportfolioopt/blob/master/cookbook/5-Hierarchical-Risk-Parity.ipynb)\n",
" \n",
- "[](https://studiolab.sagemaker.aws/import/github/robertmartin8/PyPortfolioOpt/blob/master/cookbook/5-Hierarchical-Risk-Parity.ipynb)\n"
+ "[](https://studiolab.sagemaker.aws/import/github/pyportfolio/pyportfolioopt/blob/master/cookbook/5-Hierarchical-Risk-Parity.ipynb)\n"
]
},
{
@@ -56,7 +56,7 @@
"!pip install pandas numpy matplotlib yfinance PyPortfolioOpt\n",
"import os\n",
"if not os.path.isdir('data'):\n",
- " os.system('git clone https://github.com/robertmartin8/PyPortfolioOpt.git')\n",
+ " os.system('git clone https://github.com/pyportfolio/pyportfolioopt.git')\n",
" os.chdir('PyPortfolioOpt/cookbook')"
]
},
diff --git a/docs/BlackLitterman.rst b/docs/BlackLitterman.rst
index a2062d53..8a6b703d 100644
--- a/docs/BlackLitterman.rst
+++ b/docs/BlackLitterman.rst
@@ -44,13 +44,13 @@ Similarly, we can calculate a posterior estimate of the covariance matrix:
Though the algorithm is relatively simple, BL proved to be a challenge from a software
engineering perspective because it's not quite clear how best to fit it into PyPortfolioOpt's
-API. The full discussion can be found on a `Github issue thread `_,
+API. The full discussion can be found on a `Github issue thread `_,
but I ultimately decided that though BL is not technically an optimizer, it didn't make sense to
split up its methods into `expected_returns` or `risk_models`. I have thus made it an independent
module and owing to the comparatively extensive theory, have given it a dedicated documentation page.
I'd like to thank `Felipe Schneider `_ for his multiple
contributions to the Black-Litterman implementation. A full example of its usage, including the acquisition
-of market cap data for free, please refer to the `cookbook recipe `_.
+of market cap data for free, please refer to the `cookbook recipe `_.
.. tip::
diff --git a/docs/Contributing.rst b/docs/Contributing.rst
index 75effa3c..38a47642 100644
--- a/docs/Contributing.rst
+++ b/docs/Contributing.rst
@@ -7,7 +7,7 @@ Some of the things that I'd love for people to help with:
- Improve performance of existing code (but not at the cost of readability)
- Add new optimization objectives. For example, if you would like to use something other
than the Sharpe ratio, write an optimizer! (or suggest it in
- `Issues `_ and I will have a go).
+ `Issues `_ and I will have a go).
- Help me write more tests! If you are someone learning about quant finance and/or unit
testing in python, what better way to practice than to write some tests on an
open-source project! Feel free to check for edge cases, or for uncommon parameter
@@ -21,7 +21,7 @@ Seek early feedback
-------------------
Before you start coding your contribution, it may be wise to
-`raise an issue `_ on
+`raise an issue `_ on
GitHub to discuss whether the contribution is appropriate for the project.
Code style
@@ -62,7 +62,7 @@ Questions
=========
If you have any questions related to the project, it is probably best to
-`raise an issue `_ and
+`raise an issue `_ and
I will tag it as a question.
If you have questions *unrelated* to the project, drop me an email - contact
@@ -72,7 +72,7 @@ Bugs/issues
===========
If you find any bugs or the portfolio optimization is not working as expected,
-feel free to `raise an issue `_.
+feel free to `raise an issue `_.
I would ask that you provide the following information in the issue:
- Descriptive title so that other users can see the existing issues
diff --git a/docs/FAQ.rst b/docs/FAQ.rst
index dc2b8388..e9022bf9 100644
--- a/docs/FAQ.rst
+++ b/docs/FAQ.rst
@@ -36,7 +36,7 @@ for small problems with less than 1000 variables and constraints, you can use th
ef.min_volatility()
This does not play well with ``max_sharpe``, and needs to be modified for different bounds.
-See `this issue `_ for further discussion.
+See `this issue `_ for further discussion.
Tracking error
--------------
diff --git a/docs/GeneralEfficientFrontier.rst b/docs/GeneralEfficientFrontier.rst
index 1a7ecbf3..ff609caf 100644
--- a/docs/GeneralEfficientFrontier.rst
+++ b/docs/GeneralEfficientFrontier.rst
@@ -229,7 +229,7 @@ You can either optimize some generic ``convex_objective``
(which *must* be built using ``cvxpy`` atomic functions -- see `here `_)
or a ``nonconvex_objective``, which uses ``scipy.optimize`` as the backend and thus has a completely
different API. For more examples, check out this `cookbook recipe
-`_.
+`_.
.. class:: pypfopt.base_optimizer.BaseConvexOptimizer
diff --git a/docs/MeanVariance.rst b/docs/MeanVariance.rst
index a87ee447..3bf34da5 100644
--- a/docs/MeanVariance.rst
+++ b/docs/MeanVariance.rst
@@ -32,7 +32,7 @@ language for convex optimization upon which PyPortfolioOpt's efficient frontier
.. tip::
- You can find complete examples in the relevant cookbook `recipe `_.
+ You can find complete examples in the relevant cookbook `recipe `_.
Structure
diff --git a/docs/RiskModels.rst b/docs/RiskModels.rst
index 72d15724..3fc8b152 100644
--- a/docs/RiskModels.rst
+++ b/docs/RiskModels.rst
@@ -146,7 +146,7 @@ the following shrinkage methods:
My implementations have been translated from the Matlab code on
`Michael Wolf's webpage `_, with
-the help of `xtuanta `_.
+the help of `xtuanta `_.
.. autoclass:: CovarianceShrinkage
diff --git a/docs/Roadmap.rst b/docs/Roadmap.rst
index 9d251109..880293a4 100644
--- a/docs/Roadmap.rst
+++ b/docs/Roadmap.rst
@@ -288,13 +288,13 @@ Began migration to cvxpy by changing the discrete allocation backend from PuLP t
- New algorithm: ML de Prado's CLA
- New algorithms for converting continuous allocation to discrete (using linear
programming).
-- Merged a `PR `__ implementing Single Factor and
+- Merged a `PR `__ implementing Single Factor and
Constant Correlation shrinkage.
0.3.1
-----
-Merged `PR `__ from `TommyBark `_
+Merged `PR `__ from `TommyBark `_
fixing a bug in the arguments of a call to ``portfolio_performance``.
0.3.3
diff --git a/docs/UserGuide.rst b/docs/UserGuide.rst
index 4d1c7efc..4919f406 100644
--- a/docs/UserGuide.rst
+++ b/docs/UserGuide.rst
@@ -46,7 +46,7 @@ This dataset should look something like the one below::
The index should consist of dates or timestamps, and each column should represent the
time series of prices for an asset. A dataset of real-life stock prices has been
-included in the `tests folder `_
+included in the `tests folder `_
of the GitHub repo.
.. note::
@@ -301,7 +301,7 @@ in the sidebar to learn more about the parameters and theoretical details of the
different models offered by PyPortfolioOpt. If you have any questions, please
raise an issue on GitHub and I will try to respond promptly.
-If you'd like even more examples, check out the cookbook `recipe `_.
+If you'd like even more examples, check out the cookbook `recipe `_.
References
diff --git a/docs/index.rst b/docs/index.rst
index 228cfdee..0a12bcce 100755
--- a/docs/index.rst
+++ b/docs/index.rst
@@ -7,7 +7,7 @@
-
+