UBC-MDS / software-review-2023

DSCI 524
0 stars 0 forks source link

Group 5 - stocksignals(Python) #15

Open pengzh313 opened 1 year ago

pengzh313 commented 1 year ago

Submitting Author: Ruslan Dimitrov (@RussDim), Robin Dhillon (@robindhillon1), Peng Zhang (@pengzh313), Chenyang Wang (@wakesyracuse7) All current maintainers: (@RussDim, @robindhillon1, @pengzh313, @wakesyracuse7) Package Name: stocksignals One-Line Description of Package: Calculate and plot buy/sell signal indicators for a stock, including 200-day price moving average, 10 vs 20-day price moving average, and 20-day Bollinger bands. Repository Link: https://github.com/UBC-MDS/StockSignals Version submitted: v0.0.7 Editor: TBD Reviewer 1: Renzo Wijngaarden (@Hawknum) Reviewer 2: Wilfred Hass (@WilfHass) Reviewer 3: Lisa Sequeira (@LisaSeq) Reviewer 4: Daniel Merigo Silos (@merigo) Archive: TBD
Version accepted: TBD Date accepted (month/day/year): TBD


Description

Scope

Please fill out a pre-submission inquiry before submitting a data visualization package. For more info, see notes on categories of our guidebook.

Technical checks

For details about the pyOpenSci packaging requirements, see our packaging guide. Confirm each of the following by checking the box. This package:

Publication options

JOSS Checks - [ ] The package has an **obvious research application** according to JOSS's definition in their [submission requirements][JossSubmissionRequirements]. Be aware that completing the pyOpenSci review process **does not** guarantee acceptance to JOSS. Be sure to read their submission requirements (linked above) if you are interested in submitting to JOSS. - [ ] The package is not a "minor utility" as defined by JOSS's [submission requirements][JossSubmissionRequirements]: "Minor ‘utility’ packages, including ‘thin’ API clients, are not acceptable." pyOpenSci welcomes these packages under "Data Retrieval", but JOSS has slightly different criteria. - [ ] The package contains a `paper.md` matching [JOSS's requirements][JossPaperRequirements] with a high-level description in the package root or in `inst/`. - [ ] The package is deposited in a long-term repository with the DOI: *Note: Do not submit your package separately to JOSS*

Are you OK with Reviewers Submitting Issues and/or pull requests to your Repo Directly?

This option will allow reviewers to open smaller issues that can then be linked to PR's rather than submitting a more dense text based review. It will also allow you to demonstrate addressing the issue via PR links.

Code of conduct

Please fill out our survey

P.S. *Have feedback/comments about our review process? Leave a comment here

Editor and Review Templates

The [editor template can be found here][Editor Template].

The [review template can be found here][Review Template].

WilfHass commented 1 year ago

Package Review

Please check off boxes as applicable, and elaborate in comments below. Your review is not limited to these topics, as described in the reviewer guide

Documentation

The package includes all the following forms of documentation:

Readme file requirements The package meets the readme requirements below:

The README should include, from top to bottom:

NOTE: If the README has many more badges, you might want to consider using a table for badges: see this example. Such a table should be more wide than high. (Note that the a badge for pyOpenSci peer-review will be provided upon acceptance.)

Usability

Reviewers are encouraged to submit suggestions (or pull requests) that will improve the usability of the package as a whole. Package structure should follow general community best-practices. In general please consider whether:

Functionality

Final approval (post-review)

Estimated hours spent reviewing: 2 1/2

Review Comments

  1. Package looks good! I would recommend adding more badges to easily show the code coverage and other important information at a quick glance.
  2. I would recommend adding an example in the vignette of using the functions and showing the user what would be output, such as the plots (in notebook functionality) that then appears on the ReadTheDocs.
  3. I would also like to recommend making it more clear on where to find the ReadTheDocs link as the hyperlink on "here" is very small and hard to see.
  4. The plotting looks hard to test but if you have time, adding a few more tests for edge cases like erroneous data could help!
  5. Finally, I would suggest pooling some functions together in the file directory! Each file having a different function when some are helpers to others might get complicated in the future and it might be easier to start pooling functions early.

Overall, great package! Very fun and interesting to use.

RenzoWijn commented 1 year ago

Package Review

Documentation

The package includes all the following forms of documentation:

Readme file requirements The package meets the readme requirements below:

The README should include, from top to bottom:

NOTE: If the README has many more badges, you might want to consider using a table for badges: see this example. Such a table should be more wide than high. (Note that the a badge for pyOpenSci peer-review will be provided upon acceptance.)

Usability

Reviewers are encouraged to submit suggestions (or pull requests) that will improve the usability of the package as a whole. Package structure should follow general community best-practices. In general please consider whether:

Functionality

Final approval (post-review)

Estimated hours spent reviewing: 1.5


Review Comments

The package overall looks great! Concise and does what it says on the label. A few potential improvements:

  1. Add all applicable badges to your GitHub repository. This will help anyone looking to use your package see more quickly that it is reliable and well-tested. (Also mentioned by @WilfHass )
  2. Improve the visual appeal of your plots: the units on the y-axis are dollar signs so add $ to the numbers, the x-axis shows the wrong date format in some of your plots.
  3. Make your package more accessible by using appropriate colour schemes or discernible line styles that are easily legible for those who are colourblind! Two of your plots feature lines that are red and green dotted, and therefore indistinguishable to those who suffer from red-green colourblindness.
  4. I would also suggest to making your directory structure more concise to not lose track of the greater scope of your file structures. (Mentioned by @WilfHass)
  5. Perhaps to try and tie all your functions together, you could add a parameter to your functions like docs=True that when set to True prints the explanation of the table/plot so people don't have to switch between the README.md and their implementation of your package when they're not familiar with it, or when they use your package in an educational setting.
LisaSeq commented 1 year ago

Package Review

Please check off boxes as applicable, and elaborate in comments below. Your review is not limited to these topics, as described in the reviewer guide

Documentation

The package includes all the following forms of documentation:

Readme file requirements The package meets the readme requirements below:

The README should include, from top to bottom:

NOTE: If the README has many more badges, you might want to consider using a table for badges: see this example. Such a table should be more wide than high. (Note that the a badge for pyOpenSci peer-review will be provided upon acceptance.)

Usability

Reviewers are encouraged to submit suggestions (or pull requests) that will improve the usability of the package as a whole. Package structure should follow general community best-practices. In general please consider whether:

Functionality

Final approval (post-review)

Estimated hours spent reviewing: 1.5


Review Comments

As mentioned in the R package equivalent, very interesting package and great work overall! My comments are as follows:

  1. For the plotting functions, it would be a good idea to indicate in the docstring that the user must first run get_data to download the data of the stock sticker prior to running the other functions. Otherwise the user is left with a long error message to decipher. I noticed you have mentioned something like this in the details about the moving_average function, but not for the other functions, alternatively you could build this into the function to have an error message that is more clear to the user.
  2. Also, while playing around with the get_data function, I noticed that running the get_data function a second time, after already loaded the a csv for a given stock sticker, this function overwrites this file if I use it again to request data for a new stock sticker. What if a user wanted to review the stock information for more than one stock sticker at the same time? If this was the intent, perhaps a warning could be added into the documentation for this.
  3. For the moving_average function, can more detailed description be provided for the argument size? Current it says: "size : int: The size of the period that we're interested in", is this period size in days, months or years?
  4. I too agree with previous users regarding the addition of more badges if available to show how robust and how user friendly your package is.
  5. Lastly, with regards to the documentation, it would be nice to do what you did with R package and display the expected plots in your documentation, so the user has some idea or expectation on what they should see. Furthermore, finding ways of making these plots more interactive would add really make the graphs stand out.
DMerigo commented 1 year ago

Package Review

Please check off boxes as applicable, and elaborate in comments below. Your review is not limited to these topics, as described in the reviewer guide

Documentation

The package includes all the following forms of documentation:

Readme file requirements The package meets the readme requirements below:

The README should include, from top to bottom:

NOTE: If the README has many more badges, you might want to consider using a table for badges: see this example. Such a table should be more wide than high. (Note that the a badge for pyOpenSci peer-review will be provided upon acceptance.)

Usability

Reviewers are encouraged to submit suggestions (or pull requests) that will improve the usability of the package as a whole. Package structure should follow general community best-practices. In general please consider whether:

Functionality

Final approval (post-review)

Estimated hours spent reviewing: 1.5


Review Comments

  1. Some badges are missing, specially the test coverage and documentation ones would be nice (specially since your documentation is well rendered and complete in sphinx format and hosted on Read the Docs)

  2. Interactivity would be incredible in this package, the plots could use it to explore the specific prices at specific times.

  3. I agree with @LisaSeq a more specific size indication in calc_moving_avg.py would be great for specificity.

  4. After installing and when I pasted your examples (in the Usage portion of the README) and running it threw an error with DATE, it cleared after I ran a second time and functioned correctly but wanted to mention it (For reference I am on a Mac M2, using VSCode and the 573 environment)

  5. The vignette is missed, it would have helped understand how to use your function and how it can be used in the context of stock analysis (and even maybe show how a Bollinger band is useful!)

  6. While doing several tests with different I noticed it was hard to visualize the differences between plots (maybe adding a grid behind the data would help visualize the actual x and y values for the datapoints)

  7. I agree with @RenzoWijn the axis labels show the wrong date formats in the moving average plots

Well done! The package is well constructed and includes good documentation in each of the functions. It is easy to use (experimented with a few stocks and it performed nicely). The only suggestions I have are the ones mentioned in the comments (specially the interactivity).