From 7cc105fb472c86dfb3418ffc9aeb170527b4277a Mon Sep 17 00:00:00 2001 From: woodsp Date: Thu, 30 Apr 2020 14:47:14 -0400 Subject: [PATCH 1/3] Update to Finance and ML docs --- .../qiskit.finance.applications.ising.rst | 6 +++++ docs/apidocs/qiskit.finance.applications.rst | 6 +++++ qiskit/finance/__init__.py | 26 +++++++++++++++---- qiskit/finance/applications/__init__.py | 19 ++++++++++++++ qiskit/finance/applications/ising/__init__.py | 2 +- .../uncertainty_problems/__init__.py | 7 ++--- qiskit/finance/data_providers/__init__.py | 18 +++++++------ .../data_providers/_base_data_provider.py | 9 ++----- .../data_providers/data_on_demand_provider.py | 10 +++---- .../data_providers/exchange_data_provider.py | 9 ++++--- .../data_providers/random_data_provider.py | 13 +++------- .../data_providers/wikipedia_data_provider.py | 12 +++++---- qiskit/finance/exceptions.py | 22 ++++++++++++++++ qiskit/ml/__init__.py | 11 +++++--- qiskit/optimization/applications/__init__.py | 6 ++--- .../applications/ising/__init__.py | 1 + test/finance/test_data_providers.py | 2 +- 17 files changed, 124 insertions(+), 55 deletions(-) create mode 100644 docs/apidocs/qiskit.finance.applications.ising.rst create mode 100644 docs/apidocs/qiskit.finance.applications.rst create mode 100644 qiskit/finance/exceptions.py diff --git a/docs/apidocs/qiskit.finance.applications.ising.rst b/docs/apidocs/qiskit.finance.applications.ising.rst new file mode 100644 index 0000000000..6a2bf3699a --- /dev/null +++ b/docs/apidocs/qiskit.finance.applications.ising.rst @@ -0,0 +1,6 @@ +.. _qiskit-finance-applications-ising: + +.. automodule:: qiskit.finance.applications.ising + :no-members: + :no-inherited-members: + :no-special-members: diff --git a/docs/apidocs/qiskit.finance.applications.rst b/docs/apidocs/qiskit.finance.applications.rst new file mode 100644 index 0000000000..f00c75d1f9 --- /dev/null +++ b/docs/apidocs/qiskit.finance.applications.rst @@ -0,0 +1,6 @@ +.. _qiskit-finance-applications: + +.. automodule:: qiskit.finance.applications + :no-members: + :no-inherited-members: + :no-special-members: diff --git a/qiskit/finance/__init__.py b/qiskit/finance/__init__.py index 85e353541c..d4bb4e4724 100644 --- a/qiskit/finance/__init__.py +++ b/qiskit/finance/__init__.py @@ -12,26 +12,42 @@ # copyright notice, and modified files need to carry a notice indicating # that they have been altered from the originals. """ -========================================================== -Finance application stack for Aqua (:mod:`qiskit.finance`) -========================================================== -This is the finance domain logic.... +=============================================== +Qiskit's finance module (:mod:`qiskit.finance`) +=============================================== .. currentmodule:: qiskit.finance +This is the Qiskit`s finance module. There is an initial set of function here that +will be built out over time. At present it has applications in the form of +Ising Hamiltonians. Some financial uncertainty problem components and data providers +which supply a source of financial data. + +.. autosummary:: + :toctree: ../stubs/ + :nosignatures: + + QiskitFinanceError + +In addition to standard Python errors Qiskit's finance module will raise this error if +circumstances are that it cannot proceed to completion. + Submodules ========== .. autosummary:: :toctree: + applications components data_providers """ +from .exceptions import QiskitFinanceError from ._logging import (get_qiskit_finance_logging, set_qiskit_finance_logging) -__all__ = ['get_qiskit_finance_logging', +__all__ = ['QiskitFinanceError', + 'get_qiskit_finance_logging', 'set_qiskit_finance_logging'] diff --git a/qiskit/finance/applications/__init__.py b/qiskit/finance/applications/__init__.py index 4317685c28..431ccdcda2 100644 --- a/qiskit/finance/applications/__init__.py +++ b/qiskit/finance/applications/__init__.py @@ -11,3 +11,22 @@ # Any modifications or derivative works of this code must retain this # copyright notice, and modified files need to carry a notice indicating # that they have been altered from the originals. + +""" +Finance applications (:mod:`qiskit.finance.applications`) +========================================================= + +.. currentmodule:: qiskit.finance.applications + +Applications for Qiskit's finance module. The present set are in the form of +Ising Hamiltonians. + +Submodules +========== + +.. autosummary:: + :toctree: + + ising + +""" diff --git a/qiskit/finance/applications/ising/__init__.py b/qiskit/finance/applications/ising/__init__.py index 3e0f201270..523781278f 100644 --- a/qiskit/finance/applications/ising/__init__.py +++ b/qiskit/finance/applications/ising/__init__.py @@ -14,9 +14,9 @@ """ -======================================================= Ising Models (:mod:`qiskit.finance.applications.ising`) ======================================================= + Ising models for finance problems .. currentmodule:: qiskit.finance.applications.ising diff --git a/qiskit/finance/components/uncertainty_problems/__init__.py b/qiskit/finance/components/uncertainty_problems/__init__.py index 25b9221b92..3297986cd6 100644 --- a/qiskit/finance/components/uncertainty_problems/__init__.py +++ b/qiskit/finance/components/uncertainty_problems/__init__.py @@ -2,7 +2,7 @@ # This code is part of Qiskit. # -# (C) Copyright IBM 2019. +# (C) Copyright IBM 2019, 2020 # # This code is licensed under the Apache License, Version 2.0. You may # obtain a copy of this license in the LICENSE.txt file in the root directory @@ -16,8 +16,9 @@ Uncertainty Problems (:mod:`qiskit.finance.components.uncertainty_problems`) ============================================================================ These are finance specific Aqua Uncertainty Problems where they inherit from -Aqua :class:`UncertaintyProblem`. As they rely on finance specific knowledge -and/or functions they live here rather than in Aqua. +Aqua :class:`~qiskit.aqua.components.uncertainty_problems.UncertaintyProblem`. +Because they rely on finance specific knowledge and/or functions they are +located here rather than in Aqua. .. currentmodule:: qiskit.finance.components.uncertainty_problems diff --git a/qiskit/finance/data_providers/__init__.py b/qiskit/finance/data_providers/__init__.py index d4bb9d18a5..2608b0a351 100644 --- a/qiskit/finance/data_providers/__init__.py +++ b/qiskit/finance/data_providers/__init__.py @@ -15,12 +15,15 @@ """ Data Providers (:mod:`qiskit.finance.data_providers`) ===================================================== -Providers of financial data... .. currentmodule:: qiskit.finance.data_providers -Data Providers Base Class -========================= +A selection of providers for financial data. These may be backed by +an external service that sources the actual data; please refer to the +specific provider class below, for more information in that regard. + +Data Provider Base Class +======================== .. autosummary:: :toctree: ../stubs/ @@ -28,8 +31,8 @@ BaseDataProvider -Data Provider Utilities -======================= +Data Provider Types +=================== .. autosummary:: :toctree: ../stubs/ @@ -37,7 +40,6 @@ DataType StockMarket - QiskitFinanceError Data Providers ============== @@ -53,13 +55,13 @@ """ -from ._base_data_provider import BaseDataProvider, DataType, StockMarket, QiskitFinanceError +from ._base_data_provider import BaseDataProvider, DataType, StockMarket from .data_on_demand_provider import DataOnDemandProvider from .exchange_data_provider import ExchangeDataProvider from .wikipedia_data_provider import WikipediaDataProvider from .random_data_provider import RandomDataProvider __all__ = [ - 'BaseDataProvider', 'DataType', 'QiskitFinanceError', 'StockMarket', 'RandomDataProvider', + 'BaseDataProvider', 'DataType', 'StockMarket', 'RandomDataProvider', 'DataOnDemandProvider', 'ExchangeDataProvider', 'WikipediaDataProvider' ] diff --git a/qiskit/finance/data_providers/_base_data_provider.py b/qiskit/finance/data_providers/_base_data_provider.py index d23d7866eb..7cbca1710a 100644 --- a/qiskit/finance/data_providers/_base_data_provider.py +++ b/qiskit/finance/data_providers/_base_data_provider.py @@ -2,7 +2,7 @@ # This code is part of Qiskit. # -# (C) Copyright IBM 2019. +# (C) Copyright IBM 2019, 2020 # # This code is licensed under the Apache License, Version 2.0. You may # obtain a copy of this license in the LICENSE.txt file in the root directory @@ -23,16 +23,11 @@ import numpy as np import fastdtw -from qiskit.aqua import AquaError +from ..exceptions import QiskitFinanceError logger = logging.getLogger(__name__) -class QiskitFinanceError(AquaError): - """ Qiskit Finance Error """ - pass - - # Note: Not all DataProviders support all stock markets. # Check the DataProvider before use. class StockMarket(Enum): diff --git a/qiskit/finance/data_providers/data_on_demand_provider.py b/qiskit/finance/data_providers/data_on_demand_provider.py index 1bffcee863..e115560572 100644 --- a/qiskit/finance/data_providers/data_on_demand_provider.py +++ b/qiskit/finance/data_providers/data_on_demand_provider.py @@ -12,7 +12,7 @@ # copyright notice, and modified files need to carry a notice indicating # that they have been altered from the originals. -""" data on demand provider """ +""" NASDAQ Data on demand data provider. """ from typing import Optional, Union, List import datetime @@ -22,15 +22,15 @@ import certifi import urllib3 -from qiskit.finance.data_providers import (BaseDataProvider, - StockMarket, QiskitFinanceError) +from ._base_data_provider import BaseDataProvider, StockMarket +from ..exceptions import QiskitFinanceError logger = logging.getLogger(__name__) class DataOnDemandProvider(BaseDataProvider): - """ - Python implementation of an NASDAQ Data on Demand data provider. + """NASDAQ Data on Demand data provider. + Please see: https://github.com/Qiskit/qiskit-tutorials/qiskit/finance/data_providers/time_series.ipynb for instructions on use, which involve obtaining a NASDAQ DOD access token. diff --git a/qiskit/finance/data_providers/exchange_data_provider.py b/qiskit/finance/data_providers/exchange_data_provider.py index bb09d8f53f..bd2d43fe4b 100644 --- a/qiskit/finance/data_providers/exchange_data_provider.py +++ b/qiskit/finance/data_providers/exchange_data_provider.py @@ -12,21 +12,22 @@ # copyright notice, and modified files need to carry a notice indicating # that they have been altered from the originals. -""" exchange data provider """ +""" Exchange data provider. """ from typing import Union, List import datetime import importlib import logging -from qiskit.finance.data_providers import (BaseDataProvider, - StockMarket, QiskitFinanceError) +from ._base_data_provider import BaseDataProvider, StockMarket +from ..exceptions import QiskitFinanceError logger = logging.getLogger(__name__) class ExchangeDataProvider(BaseDataProvider): - """Python implementation of an Exchange Data provider. + """Exchange data provider. + Please see: https://github.com/Qiskit/qiskit-tutorials/qiskit/finance/data_providers/time_series.ipynb for instructions on use, which involve obtaining a Quandl access token. diff --git a/qiskit/finance/data_providers/random_data_provider.py b/qiskit/finance/data_providers/random_data_provider.py index a67edb1c93..bcc6f34a0f 100644 --- a/qiskit/finance/data_providers/random_data_provider.py +++ b/qiskit/finance/data_providers/random_data_provider.py @@ -12,9 +12,7 @@ # copyright notice, and modified files need to carry a notice indicating # that they have been altered from the originals. -""" -Python implementation of provider of mock stock-market data, which are generated pseudo-randomly. -""" +""" Pseudo-randomly generated mock stock-market data provider """ from typing import Optional, Union, List import datetime @@ -24,17 +22,14 @@ import numpy as np import pandas as pd -from qiskit.finance.data_providers import (BaseDataProvider, - StockMarket, - QiskitFinanceError) +from ._base_data_provider import BaseDataProvider, StockMarket +from ..exceptions import QiskitFinanceError logger = logging.getLogger(__name__) class RandomDataProvider(BaseDataProvider): - """ - Python implementation of provider of mock stock-market data, - which are generated pseudo-randomly. + """Pseudo-randomly generated mock stock-market data provider. """ def __init__(self, diff --git a/qiskit/finance/data_providers/wikipedia_data_provider.py b/qiskit/finance/data_providers/wikipedia_data_provider.py index c55fc8de0c..1358e83eef 100644 --- a/qiskit/finance/data_providers/wikipedia_data_provider.py +++ b/qiskit/finance/data_providers/wikipedia_data_provider.py @@ -12,7 +12,7 @@ # copyright notice, and modified files need to carry a notice indicating # that they have been altered from the originals. -""" wikipedia data provider """ +""" Wikipedia data provider. """ from typing import Optional, Union, List import datetime @@ -22,17 +22,19 @@ import quandl from quandl.errors.quandl_error import NotFoundError -from qiskit.finance.data_providers import (BaseDataProvider, - StockMarket, QiskitFinanceError) +from ._base_data_provider import BaseDataProvider, StockMarket +from ..exceptions import QiskitFinanceError logger = logging.getLogger(__name__) class WikipediaDataProvider(BaseDataProvider): - """Python implementation of a Wikipedia data provider. + """Wikipedia data provider. + Please see: https://github.com/Qiskit/qiskit-tutorials/qiskit/finance/data_providers/time_series.ipynb - for instructions on use.""" + for instructions on use. + """ def __init__(self, token: Optional[str] = None, diff --git a/qiskit/finance/exceptions.py b/qiskit/finance/exceptions.py new file mode 100644 index 0000000000..bf38d80758 --- /dev/null +++ b/qiskit/finance/exceptions.py @@ -0,0 +1,22 @@ +# -*- coding: utf-8 -*- + +# This code is part of Qiskit. +# +# (C) Copyright IBM 2019, 2020. +# +# This code is licensed under the Apache License, Version 2.0. You may +# obtain a copy of this license in the LICENSE.txt file in the root directory +# of this source tree or at http://www.apache.org/licenses/LICENSE-2.0. +# +# Any modifications or derivative works of this code must retain this +# copyright notice, and modified files need to carry a notice indicating +# that they have been altered from the originals. + +""" Finance Exception """ + +from qiskit.aqua.aqua_error import AquaError + + +class QiskitFinanceError(AquaError): + """Class for errors returned by Qiskit's finance module.""" + pass diff --git a/qiskit/ml/__init__.py b/qiskit/ml/__init__.py index 41942d29be..1593d75404 100644 --- a/qiskit/ml/__init__.py +++ b/qiskit/ml/__init__.py @@ -13,13 +13,16 @@ # that they have been altered from the originals. """ -============================================================== -Machine Learning application stack for Aqua (:mod:`qiskit.ml`) -============================================================== -This is the machine learning domain logic.... +=================================================== +Qiskit's Machine Learning module (:mod:`qiskit.ml`) +=================================================== .. currentmodule:: qiskit.ml +This is the Qiskit`s machine learning module. There is an initial set of function here that +will be built out over time. At present it has sample sets that can be used with +Aqua's :mod:`~qiskit.aqua.algorithms.classifiers`. + Submodules ========== diff --git a/qiskit/optimization/applications/__init__.py b/qiskit/optimization/applications/__init__.py index ef32bbdbe7..542eebbf99 100644 --- a/qiskit/optimization/applications/__init__.py +++ b/qiskit/optimization/applications/__init__.py @@ -13,12 +13,12 @@ # that they have been altered from the originals. """ -Optimization applications (:mod:`qiskit.aqua.applications`) -=========================================================== +Optimization applications (:mod:`qiskit.optimization.applications`) +=================================================================== .. currentmodule:: qiskit.optimization.applications -Applications for Qiskit Optimization. The present set are in the form of +Applications for Qiskit's optimization module. The present set are in the form of Ising Hamiltonians. Submodules diff --git a/qiskit/optimization/applications/ising/__init__.py b/qiskit/optimization/applications/ising/__init__.py index f13251435f..51d6fbc5c1 100644 --- a/qiskit/optimization/applications/ising/__init__.py +++ b/qiskit/optimization/applications/ising/__init__.py @@ -15,6 +15,7 @@ """ Ising Models (:mod:`qiskit.optimization.applications.ising`) ============================================================ + Ising models for optimization application problems .. currentmodule:: qiskit.optimization.applications.ising diff --git a/test/finance/test_data_providers.py b/test/finance/test_data_providers.py index 612e44d1ad..1d48cf7443 100644 --- a/test/finance/test_data_providers.py +++ b/test/finance/test_data_providers.py @@ -19,8 +19,8 @@ from test.finance import QiskitFinanceTestCase import warnings import numpy as np +from qiskit.finance import QiskitFinanceError from qiskit.finance.data_providers import (RandomDataProvider, - QiskitFinanceError, WikipediaDataProvider, StockMarket, DataOnDemandProvider, From f7563a8299106562730d6a2a5cf57386cd7e8f18 Mon Sep 17 00:00:00 2001 From: Manoel Marques Date: Thu, 30 Apr 2020 15:50:42 -0400 Subject: [PATCH 2/3] fix copyright --- qiskit/finance/data_providers/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/qiskit/finance/data_providers/__init__.py b/qiskit/finance/data_providers/__init__.py index 2608b0a351..96b51bfbde 100644 --- a/qiskit/finance/data_providers/__init__.py +++ b/qiskit/finance/data_providers/__init__.py @@ -2,7 +2,7 @@ # This code is part of Qiskit. # -# (C) Copyright IBM 2018, 2019. +# (C) Copyright IBM 2018, 2020. # # This code is licensed under the Apache License, Version 2.0. You may # obtain a copy of this license in the LICENSE.txt file in the root directory From 179748c167763b9227bedb56140b044064dd64d4 Mon Sep 17 00:00:00 2001 From: woodsp Date: Thu, 30 Apr 2020 17:55:02 -0400 Subject: [PATCH 3/3] Fix dead links --- qiskit/finance/data_providers/data_on_demand_provider.py | 2 +- qiskit/finance/data_providers/exchange_data_provider.py | 2 +- qiskit/finance/data_providers/wikipedia_data_provider.py | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/qiskit/finance/data_providers/data_on_demand_provider.py b/qiskit/finance/data_providers/data_on_demand_provider.py index e115560572..65a27c76e5 100644 --- a/qiskit/finance/data_providers/data_on_demand_provider.py +++ b/qiskit/finance/data_providers/data_on_demand_provider.py @@ -32,7 +32,7 @@ class DataOnDemandProvider(BaseDataProvider): """NASDAQ Data on Demand data provider. Please see: - https://github.com/Qiskit/qiskit-tutorials/qiskit/finance/data_providers/time_series.ipynb + https://github.com/Qiskit/qiskit-tutorials/blob/stable/0.14.x/qiskit/advanced/aqua/finance/data_providers/time_series.ipynb for instructions on use, which involve obtaining a NASDAQ DOD access token. """ diff --git a/qiskit/finance/data_providers/exchange_data_provider.py b/qiskit/finance/data_providers/exchange_data_provider.py index bd2d43fe4b..ad4ee9a1e9 100644 --- a/qiskit/finance/data_providers/exchange_data_provider.py +++ b/qiskit/finance/data_providers/exchange_data_provider.py @@ -29,7 +29,7 @@ class ExchangeDataProvider(BaseDataProvider): """Exchange data provider. Please see: - https://github.com/Qiskit/qiskit-tutorials/qiskit/finance/data_providers/time_series.ipynb + https://github.com/Qiskit/qiskit-tutorials/blob/stable/0.14.x/qiskit/advanced/aqua/finance/data_providers/time_series.ipynb for instructions on use, which involve obtaining a Quandl access token. """ diff --git a/qiskit/finance/data_providers/wikipedia_data_provider.py b/qiskit/finance/data_providers/wikipedia_data_provider.py index 1358e83eef..1954e4c141 100644 --- a/qiskit/finance/data_providers/wikipedia_data_provider.py +++ b/qiskit/finance/data_providers/wikipedia_data_provider.py @@ -32,7 +32,7 @@ class WikipediaDataProvider(BaseDataProvider): """Wikipedia data provider. Please see: - https://github.com/Qiskit/qiskit-tutorials/qiskit/finance/data_providers/time_series.ipynb + https://github.com/Qiskit/qiskit-tutorials/blob/stable/0.14.x/qiskit/advanced/aqua/finance/data_providers/time_series.ipynb for instructions on use. """