# JacksonQuery
JacksonQuery is a Python package designed to automate the process of downloading, parsing, and analyzing web content
from the Jackson National Life (JNL) Insurance website located at www.jackson.com. Its main objective is to facilitate
investment advisers in making informed decisions about variable annuity subaccount investments.
This package finds, downloads, and parses content of all the variable annuity subaccount prospectuses and Morningstar
reports found on the JNL website. The parsed content is processed into data structures, enabling easy and efficient data
analysis. Additionally, JacksonQuery provides a factor model and a portfolio optimization module, automating the
investment selection and portfolio construction process.
The JNL website provides data on their variable annuity subaccounts only in the form of fund prospectuses and
Morningstar reports, all in PDF format. There are approximately 120 JNL variable annuity subaccounts for their
Perspective L product, and the task of going through all of this data is daunting for investment advisers. JacksonQuery
aims to minimize heuristics and maximize statistical methods in decision-making for investment advisers, making it
easier to choose the most appropriate subaccounts for their clients.
## Features
- Automated Web Navigation: Automatically logs into the JNL website, navigates to the necessary pages, and handles any
pop-ups or prompts along the way.
- Data Extraction: Fetches the most recent prospectuses and Morningstar reports for all variable annuity
subaccounts.
- Advanced Parsing: Utilizes the powerful tika library to parse PDFs and organize the data into easily analyzable
structures.
- Factor Modeling: Implements a factor model to analyze the performance of the subaccounts.
- Portfolio Optimization: Provides a module to automate the process of creating optimal portfolios based on the parsed
data.
## Installation
JacksonQuery is available on PyPI and can be installed via pip:
```
pip install jacksonquery
```
## Usage
See the [examples](https://github.com/nathanramoscfa/JacksonQuery/tree/master/examples) directory for usage examples.
## Disclaimer
JacksonQuery is not affiliated with Jackson National Life Insurance Company in any way. This package is not intended to
be used for any purpose other than for educational purposes. Past performance is not indicative of future results. The
authors of this package are not responsible for any financial losses that may occur as a result of using this package.
Use at your own risk.
## License
[MIT](https://choosealicense.com/licenses/mit/)
Raw data
{
"_id": null,
"home_page": "https://github.com/nathanramoscfa/JacksonQuery",
"name": "JacksonQuery",
"maintainer": "",
"docs_url": null,
"requires_python": ">=3.11",
"maintainer_email": "",
"keywords": "automation,jackson,scraping,selenium",
"author": "Nathan Ramos, CFA\u00ae",
"author_email": "info@nrcapitalmanagement.com",
"download_url": "https://files.pythonhosted.org/packages/27/ef/aeb76f8e394b45a94e702553b273214bbbeeeeff11628d5cf6b48446720b/JacksonQuery-0.0.1.tar.gz",
"platform": null,
"description": "# JacksonQuery\r\n\r\nJacksonQuery is a Python package designed to automate the process of downloading, parsing, and analyzing web content \r\nfrom the Jackson National Life (JNL) Insurance website located at www.jackson.com. Its main objective is to facilitate \r\ninvestment advisers in making informed decisions about variable annuity subaccount investments.\r\n\r\nThis package finds, downloads, and parses content of all the variable annuity subaccount prospectuses and Morningstar \r\nreports found on the JNL website. The parsed content is processed into data structures, enabling easy and efficient data \r\nanalysis. Additionally, JacksonQuery provides a factor model and a portfolio optimization module, automating the \r\ninvestment selection and portfolio construction process.\r\n\r\nThe JNL website provides data on their variable annuity subaccounts only in the form of fund prospectuses and \r\nMorningstar reports, all in PDF format. There are approximately 120 JNL variable annuity subaccounts for their \r\nPerspective L product, and the task of going through all of this data is daunting for investment advisers. JacksonQuery \r\naims to minimize heuristics and maximize statistical methods in decision-making for investment advisers, making it \r\neasier to choose the most appropriate subaccounts for their clients.\r\n\r\n## Features\r\n- Automated Web Navigation: Automatically logs into the JNL website, navigates to the necessary pages, and handles any \r\npop-ups or prompts along the way.\r\n- Data Extraction: Fetches the most recent prospectuses and Morningstar reports for all variable annuity \r\nsubaccounts.\r\n- Advanced Parsing: Utilizes the powerful tika library to parse PDFs and organize the data into easily analyzable \r\nstructures.\r\n- Factor Modeling: Implements a factor model to analyze the performance of the subaccounts.\r\n- Portfolio Optimization: Provides a module to automate the process of creating optimal portfolios based on the parsed \r\ndata.\r\n\r\n## Installation\r\nJacksonQuery is available on PyPI and can be installed via pip:\r\n```\r\npip install jacksonquery\r\n```\r\n\r\n## Usage\r\nSee the [examples](https://github.com/nathanramoscfa/JacksonQuery/tree/master/examples) directory for usage examples.\r\n\r\n## Disclaimer\r\nJacksonQuery is not affiliated with Jackson National Life Insurance Company in any way. This package is not intended to\r\nbe used for any purpose other than for educational purposes. Past performance is not indicative of future results. The \r\nauthors of this package are not responsible for any financial losses that may occur as a result of using this package. \r\nUse at your own risk. \r\n\r\n## License\r\n[MIT](https://choosealicense.com/licenses/mit/)\r\n",
"bugtrack_url": null,
"license": "",
"summary": "Automated interaction and data extraction tool for Jackson National Life Insurance website",
"version": "0.0.1",
"project_urls": {
"Homepage": "https://github.com/nathanramoscfa/JacksonQuery"
},
"split_keywords": [
"automation",
"jackson",
"scraping",
"selenium"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "b4079ad9181a5156da048141aba65816d84b3d466363269d6f2dbf77d2d7d46e",
"md5": "787aa80910f7e94af18559cbe1f8e697",
"sha256": "7d7591ce19a1218abf4dfba08a9dc95f621a5611d072cd6660f0696419bc21f2"
},
"downloads": -1,
"filename": "JacksonQuery-0.0.1-py3-none-any.whl",
"has_sig": false,
"md5_digest": "787aa80910f7e94af18559cbe1f8e697",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.11",
"size": 31076,
"upload_time": "2023-06-10T21:29:33",
"upload_time_iso_8601": "2023-06-10T21:29:33.524277Z",
"url": "https://files.pythonhosted.org/packages/b4/07/9ad9181a5156da048141aba65816d84b3d466363269d6f2dbf77d2d7d46e/JacksonQuery-0.0.1-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "27efaeb76f8e394b45a94e702553b273214bbbeeeeff11628d5cf6b48446720b",
"md5": "db9945a4e15adaaeabded2d4b8595112",
"sha256": "fe74dc8cfc9373b52e8d5d3cfafa27ff8c178b622489f025d0d855fc3ee16d04"
},
"downloads": -1,
"filename": "JacksonQuery-0.0.1.tar.gz",
"has_sig": false,
"md5_digest": "db9945a4e15adaaeabded2d4b8595112",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.11",
"size": 24553,
"upload_time": "2023-06-10T21:29:35",
"upload_time_iso_8601": "2023-06-10T21:29:35.631899Z",
"url": "https://files.pythonhosted.org/packages/27/ef/aeb76f8e394b45a94e702553b273214bbbeeeeff11628d5cf6b48446720b/JacksonQuery-0.0.1.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2023-06-10 21:29:35",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "nathanramoscfa",
"github_project": "JacksonQuery",
"travis_ci": false,
"coveralls": false,
"github_actions": false,
"requirements": [
{
"name": "beautifulsoup4",
"specs": [
[
">=",
"4.12.2"
]
]
},
{
"name": "bt",
"specs": [
[
">=",
"0.2.9"
]
]
},
{
"name": "ffn",
"specs": [
[
">=",
"0.3.6"
]
]
},
{
"name": "fuzzywuzzy",
"specs": [
[
">=",
"0.18.0"
]
]
},
{
"name": "keyring",
"specs": [
[
">=",
"23.13.1"
]
]
},
{
"name": "matplotlib",
"specs": [
[
">=",
"3.7.1"
]
]
},
{
"name": "numpy",
"specs": [
[
">=",
"1.23.5"
]
]
},
{
"name": "pandas",
"specs": [
[
">=",
"1.5.3"
]
]
},
{
"name": "patsy",
"specs": [
[
">=",
"0.5.3"
]
]
},
{
"name": "seaborn",
"specs": [
[
">=",
"0.12.2"
]
]
},
{
"name": "selenium",
"specs": [
[
">=",
"4.9.0"
]
]
},
{
"name": "setuptools",
"specs": [
[
">=",
"66.0.0"
]
]
},
{
"name": "statsmodels",
"specs": [
[
">=",
"0.13.5"
]
]
},
{
"name": "tiafork",
"specs": [
[
">=",
"1.2.2"
]
]
},
{
"name": "tika",
"specs": [
[
">=",
"2.6.0"
]
]
},
{
"name": "tqdm",
"specs": [
[
">=",
"4.65.0"
]
]
}
],
"lcname": "jacksonquery"
}