diff --git a/.gitignore b/.gitignore index f60b36a..14d36cc 100644 --- a/.gitignore +++ b/.gitignore @@ -4,4 +4,3 @@ node_modules __pycache__/ *.py[cod] *$py.class -src/quant_research_starter.egg-info/PKG-INFO diff --git a/README.md b/README.md index 1d48e1d..c6434c7 100644 --- a/README.md +++ b/README.md @@ -53,29 +53,6 @@ pip install -e ".[dev]" pip install streamlit plotly ``` -### Quick CLI Usage - -After installation, you can use the CLI in two ways: - -**Option 1: Direct command (if PATH is configured)** -```bash -qrs --help -# generate synthetic sample price series -qrs generate-data -o data_sample/sample_prices.csv -s 5 -d 365 -# compute example factors -qrs compute-factors -d data_sample/sample_prices.csv -f momentum -f value -o output/factors.csv -# run a backtest -qrs backtest -d data_sample/sample_prices.csv -s output/factors.csv -o output/backtest_results.json -``` - -**Option 2: Python module (always works)** -```bash -python -m quant_research_starter.cli --help -python -m quant_research_starter.cli generate-data -o data_sample/sample_prices.csv -s 5 -d 365 -python -m quant_research_starter.cli compute-factors -d data_sample/sample_prices.csv -f momentum -f value -python -m quant_research_starter.cli backtest -d data_sample/sample_prices.csv -s output/factors.csv -o output/backtest_results.json -``` - ### Demo (one-line) ```bash @@ -86,13 +63,13 @@ make demo ```bash # generate synthetic sample price series -python -m quant_research_starter.cli generate-data -o data_sample/sample_prices.csv -s 5 -d 365 +qrs generate-data -o data_sample/sample_prices.csv -s 5 -d 365 # compute example factors -python -m quant_research_starter.cli compute-factors -d data_sample/sample_prices.csv -f momentum -f value -o output/factors.csv +qrs compute-factors -d data_sample/sample_prices.csv -f momentum -f value -o output/factors.csv # run a backtest -python -m quant_research_starter.cli backtest -d data_sample/sample_prices.csv -s output/factors.csv -o output/backtest_results.json +qrs backtest -d data_sample/sample_prices.csv -s output/factors.csv -o output/backtest_results.json # optional: start the Streamlit dashboard streamlit run src/quant_research_starter/dashboard/streamlit_app.py @@ -146,13 +123,11 @@ Supported frequencies: ## CLI reference -Run `python -m quant_research_starter.cli --help` or `python -m quant_research_starter.cli --help` for full usage. Main commands include: - -* `python -m quant_research_starter.cli generate-data` — create synthetic price series or download data from adapters -* `python -m quant_research_starter.cli compute-factors` — calculate and export factor scores -* `python -m quant_research_starter.cli backtest` — run the vectorized backtest and export results +Run `qrs --help` or `qrs --help` for full usage. Main commands include: -**Note:** If you have the `qrs` command in your PATH, you can use `qrs` instead of `python -m quant_research_starter.cli`. +* `qrs generate-data` — create synthetic price series or download data from adapters +* `qrs compute-factors` — calculate and export factor scores +* `qrs backtest` — run the vectorized backtest and export results --- diff --git a/pyproject.toml b/pyproject.toml index 4eecd4f..d070cdf 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -59,12 +59,6 @@ qrs = "quant_research_starter.cli:cli" requires = ["setuptools>=45", "wheel"] build-backend = "setuptools.build_meta" -[tool.setuptools.packages.find] -where = ["src"] - -[tool.setuptools.package-dir] -"" = "src" - [tool.black] line-length = 88 target-version = ['py310'] diff --git a/test_cli.py b/test_cli.py deleted file mode 100644 index 8606676..0000000 --- a/test_cli.py +++ /dev/null @@ -1,107 +0,0 @@ -#!/usr/bin/env python3 -""" -Simple test script for QuantResearch CLI -This demonstrates all the CLI functionality -""" - -import subprocess -import sys -from pathlib import Path - - -def run_command(cmd): - """Run a command and print the result""" - print(f"\n{'='*60}") - print(f"Running: {cmd}") - print('='*60) - result = subprocess.run(cmd, shell=True, capture_output=True, text=True) - - if result.stdout: - print(result.stdout) - if result.stderr and result.returncode != 0: - print(f"ERROR: {result.stderr}") - return False - - return result.returncode == 0 - - -def main(): - """Run all CLI tests""" - print("\n🧪 Testing QuantResearch CLI") - print("="*60) - - # Define test directories - test_data_dir = Path("test_data") - test_output_dir = Path("test_output") - - # Create test directories - test_data_dir.mkdir(exist_ok=True) - test_output_dir.mkdir(exist_ok=True) - - # Test 1: Show help - success = run_command("python -m quant_research_starter.cli --help") - if not success: - print("\n❌ Test 1 FAILED: Help command") - sys.exit(1) - - # Test 2: Generate data - success = run_command( - "python -m quant_research_starter.cli generate-data " - "-o test_data/data.csv -s 5 -d 100" - ) - if not success: - print("\n❌ Test 2 FAILED: Generate data") - sys.exit(1) - - # Test 3: Compute factors - success = run_command( - "python -m quant_research_starter.cli compute-factors " - "-d test_data/data.csv -f momentum -f value -o test_output/factors.csv" - ) - if not success: - print("\n❌ Test 3 FAILED: Compute factors") - sys.exit(1) - - # Test 4: Run backtest - success = run_command( - "python -m quant_research_starter.cli backtest " - "-d test_data/data.csv -s test_output/factors.csv " - "-o test_output/backtest_results.json" - ) - if not success: - print("\n❌ Test 4 FAILED: Run backtest") - sys.exit(1) - - # Verify output files exist - print("\n📁 Checking output files...") - files_to_check = [ - test_data_dir / "data.csv", - test_output_dir / "factors.csv", - test_output_dir / "backtest_results.json", - test_output_dir / "backtest_plot.png" - ] - - all_exist = True - for file_path in files_to_check: - if file_path.exists(): - print(f"✅ {file_path} exists ({file_path.stat().st_size} bytes)") - else: - print(f"❌ {file_path} missing!") - all_exist = False - - if not all_exist: - print("\n❌ Some output files are missing") - sys.exit(1) - - # Summary - print("\n" + "="*60) - print("✅ ALL TESTS PASSED!") - print("="*60) - print(f"\n📂 Test files created in:") - print(f" - {test_data_dir}/") - print(f" - {test_output_dir}/") - print("\n💡 You can view the results and plots in the test_output directory.") - - -if __name__ == "__main__": - main()