Metadata-Version: 2.2
Name: uwqsc-algorithmic-trading
Version: 2025.3.4.post3
Summary: The University of Waterloo quantitative analytics stocks club algorithmic trading repository.
Author-email: Sargun Singh Bhatti <sargunbhatti27@gmail.com>, Param Shah <paramshah07@gmail.com>
Project-URL: Homepage, https://github.com/UWQSC/algorithmic-trading
Classifier: Programming Language :: Python :: 3
Classifier: Operating System :: OS Independent
Classifier: License :: OSI Approved :: MIT License
Requires-Python: >=3.9
Description-Content-Type: text/markdown
License-File: LICENSE.txt
Requires-Dist: matplotlib==3.7.0
Requires-Dist: numpy==1.26.4
Requires-Dist: pandas==2.0.3
Requires-Dist: tensorflow==2.18.0
Requires-Dist: keras==3.8.0
Requires-Dist: torch==2.5.1
Requires-Dist: scikit-learn==1.6.0rc1
Requires-Dist: seaborn==0.13.2
Requires-Dist: statsmodels==0.14.4
Requires-Dist: coverage==7.6.4
Requires-Dist: fastparquet==2024.11.0
Requires-Dist: yfinance==0.2.54
Requires-Dist: setuptools==70.0.0
Requires-Dist: build==1.2.2.post1
Requires-Dist: twine==6.1.0

# Algorithmic Trading

The University of Waterloo quantitative analytics stocks club algorithmic trading repository.

Project Board: https://github.com/orgs/UWQSC/projects/1

### Onboarding Information

###### Setup
- After cloning the repository, run the following command

```bash
chmod +x ./setup.sh
./setup.sh
```
- This sets up your:
  - Python virtual environment with your packages
  - GitHub hook for commit message regex.

###### Project Structure

- `src/`: Main code
- `interfaces/`: Abstract Interfaces, referenced by other repo
- `tests/`: Unit Tests for `src/`

Other files and directories

- `bin`: All important directory bash files go here
- `Makefile`: Used to locally run unit tests, can be used for other functionalities as well
- `.github`: Contains the GitHub Workflows that run on every push and pull request
- `.git`: Contains GitHub Hooks for commit messages

###### Conventions and Rules to Follow

- Every commit should be linked with at-least one issue. Hence, every commit should have the GitHub
Issues that it belongs to. For example, if issue is `#100`, your commit should have `topic/#100`
mentioned in an independent line. Note that there is a checker.

Correct commit message

```text
Writing Unit Test for black_litterman.py

topic/#100

- Code coverage 80%.
```

Incorrect commit message

```text
Writing Unit Test for black_litterman.py
```

```text
Writing Unit Test for black_litterman.py topic/#100
```

```text
Writing Unit Test for black_litterman.py

topic/#100 - Code coverage 80%.
```

```text
Writing Unit Test for black_litterman.py

topic/100 

- Code coverage 80%.
```

```text
Writing Unit Test for black_litterman.py

#100 

- Code coverage 80%.
```

- For convention’s sake, name your branches `topic/<issue_number>`. For example: Issue `#100` should 
be worked on `topic/100`. There's no checker for branches though.
- Try to make commits as descriptive as possible.
- Changes to mainline can only be made through PRs. Please make the PR descriptions descriptive
  (preferably list of commit descriptions)
- When a PR is ready to be reviewed, please add `Ready for Review` label from the `Label` section
and then add `algo-trading-team` as reviewers.
- When a PR is ready to be merged, please add `Ready for Merge` label from the `Label` section.

###### Running Unit Tests Locally

- Running this command will run all the unit tests, with the source code being present at `src/`

```bash
make
```

- To see unit test writing convention, please refer to [Python Sample Test File](tests/sample_test.py)

###### Running GitHub Workflows Locally

This requires you to have Docker installed. Install Act from https://nektosact.com/introduction.html

A successful act run looks like:
```bash
> cd ~/<algorithmic-trading-root>
> act
...
[Pylint/build            ]   ✅  Success - Main Analysing the code with pylint
[Pylint/build            ] ⭐ Run Post Set up Python 3.9
[Pylint/build            ]   🐳  docker exec cmd=[/opt/acttoolcache/node/18.20.5/arm64/bin/node /var/run/act/actions/actions-setup-python@v3/dist/cache-save/index.js] user= workdir=
[Pylint/build            ]   ✅  Success - Post Set up Python 3.9
[Pylint/build            ] Cleaning up container for job build
[Pylint/build            ] 🏁  Job succeeded
>
```
