Files
OpenBB/openbb_terminal/reports
montezdesousa 475ebb5acd [WIP] Migrate user, feature flags and configurations to dataclass (#4309)
* implement user and change is guest

* replace User methods

* move remaining functions to user

* fix bug

* portfolio test

* fix tests

* fix tests

* uncomment skip

* ruff

* start credentials model implementation

* change deault structure

* refacto quandl

* change default struct and file names

* bug

* start using global user

* add comments

* move update flair

* change cfg references in keys model

* reddit & fmp

* refactore additional keys

* remaing config keys

* remove unsude imports and fix hub keys

* ruff

* fix line too long

* unblock unittests

* fix keys model tests

* remove os patch

* fix account controller tests

* fix account controller tests

* fix account model

* account fixed

* fix user tests

* User Model

* User Model

* User Model

* Move session folder

* User Model : grouping the models

* User Model : fix bugs

* Config Plot + bug fix

* User Model : Refactoring plots

* Feature flags

* Remove dup

* clean comments a fix some vars

* fix feature flags controller

* refactor obbff from settings controller

* refactor a bunch of obbff variables

* fix bug blocking terminal

* fix integration tests

* refactor controllers with obbff

* refactor remaining ffs

* remove comments

* log not started

* mispelled variable

* set current user on local model

* User Model : moving files + updating

* User Preferences

* User : Refactor is_guest function + bug fix

* User : refactor is_guest function

* Fix conftest.py

* remove lost obbffs

* typo on fileoverwrite

* Plot config: move variables and start plot dpi

* User : tests

* refactor plot dpi references

* remove plot dpi imports

* refactor some config terminal leftover

* /account/sync : fix bug

* remove configs reload

* start path refactor

* installation paths vs user paths

* remove cfg_plot

* Tests : User Refactoring

* user prefix only for preferences

* user prefix only for preferences

* move user paths

* remove comment

* update apply remote configs

* fix tz not updating

* save some copys

* small fix

* create interface for credentials and preferences

* wrong docstrings fixed

* ruff core

* fix some pref setting

* login is better

* ruff

* ruff

* remove Literal

* add small comment

* Tests : User Refactoring

* Credentials Model : add DataBento

* Fix helper_funcs

* Fixing code

* Tests : fixing

* User Model : freezing the models

* Fixed Income + Databento

* Tests : fixing keys

* black

* ruff

* Tests : user model

* Tests : user model

* Fix linting

* Fix linting

* Linting

* Linting

* Fixing code and tests

* Fix tests

* mypy

* SDK

* Clean ruff cache

* Fix syntax issue

* Update fred_view

* Black

* Linting

* Update code

* Update tests

* Linting

* Linting

* Tests

* Black

* Linting

* Linting

* Mock os.listdir to avoid looking for file that doesnt exist

* Mock options paths

* lint

* Tests : fix

* Code : update

* Tests + Linting

* Tests

* Ruff

* Code : update

* Tests

* Code : update

* Fix workflow

* Code : update

---------

Co-authored-by: Chavithra PARANA <chavithra@gmail.com>
Co-authored-by: luqazino@gmail.com <luqazino@gmail.com>
Co-authored-by: James Maslek <jmaslek11@gmail.com>
2023-03-05 00:37:19 +01:00
..
2023-03-01 22:48:45 -05:00

REPORTS

This menu has a different concept from remaining menus. It has 2 main goals:

  • Generate a personalised report.
  • Allow the user to write notes on that notebook (report), as if it was his personal investment diary.

How to create your own personal report

  1. Copy one of the existing notebook reports as a template, e.g. dark_pool.ipynb.

  2. Rename that notebook with a name that reflects what you want this notebook to contain, even including your name.

  3. One of the notebook cells will have a parameters tag, that's where the papermill will parametrize the notebook. Thus, your variables should be declared there.

  4. Remove the function calls that you don't care about to build your own report.

  5. When building your template notebook, there are 2 type of possible things you can do:

    • Create a markdown cell, where you can add a title or a description. E.g.
    ## Analyst Targets
    
    • Create a code cell, where you should both: import a module, and call a function to display a chart or print data. E.g.
    from openbb_terminal.stocks.due_diligence import finviz_view
    
    finviz_view.analyst(ticker=ticker, export='')
    

Note: In order to find the name of the function you want, you should either crawl through the codebase (and ask help in discord) or look into our readthedocs (#TODO).

How to run the report

  1. In config_terminal you may need to change your PAPERMILL_NOTEBOOK_REPORT_PORT from 8888. If the notebook generation fails, it is likely that the port selected is not the correct one.

  2. Start the terminal with python terminal.py

  3. Select reports context, and choose from the options selected - which are derived from the .ipynb jupyter notebook files on the reports folder.

  4. This should prompt you with a filled notebook with name: <date time>_<report name>_<args>.ipynb. E.g. 20210725_193517_dark_pool_AMC.ipynb

  5. Due to the last cell of the notebook, the report is saved by default as .html. E.g. 20210725_193517_dark_pool_AMC.html

    folder = "notebooks/reports/"
    extension = ".ipynb"
    !jupyter nbconvert {report_name} --to html --no-input
    
  6. You can now write your own personal notes on the notebook. By doing:

    • Click on the notebook cell that you are interested in writing your notes
    • On the toolbar click on "+" to add a new cell
    • On the toolbar click on "Cell" -> "Cell Type" -> "Markdown"
    • You're now ready to write your own notes
  7. Once you're happy with your report, you can either:

    • Re-run the last cell, potentially changing output from .html:
    • Or, on the toolbar click on "File" -> "Download as" -> Select your preferred option (e.g. HTML)