finbase 0.1.1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (53) hide show
  1. finbase-0.1.1/CHANGELOG.md +110 -0
  2. finbase-0.1.1/CLAUDE.md +631 -0
  3. finbase-0.1.1/LICENSE +21 -0
  4. finbase-0.1.1/MANIFEST.in +31 -0
  5. finbase-0.1.1/PKG-INFO +344 -0
  6. finbase-0.1.1/README.md +303 -0
  7. finbase-0.1.1/data/index_configs/dax.json +30 -0
  8. finbase-0.1.1/data/index_configs/dow30.json +31 -0
  9. finbase-0.1.1/data/index_configs/ftse100.json +18 -0
  10. finbase-0.1.1/data/index_configs/ndx.json +32 -0
  11. finbase-0.1.1/data/index_configs/sp500.json +36 -0
  12. finbase-0.1.1/data/risk_factor_groups/equities/indices.json +81 -0
  13. finbase-0.1.1/data/risk_factor_groups/equities/sp500_top100.json +31 -0
  14. finbase-0.1.1/environment.yml +19 -0
  15. finbase-0.1.1/pyproject.toml +82 -0
  16. finbase-0.1.1/requirements.txt +8 -0
  17. finbase-0.1.1/setup.cfg +4 -0
  18. finbase-0.1.1/setup.py +63 -0
  19. finbase-0.1.1/src/finbase/__init__.py +15 -0
  20. finbase-0.1.1/src/finbase/client/__init__.py +10 -0
  21. finbase-0.1.1/src/finbase/client/client.py +627 -0
  22. finbase-0.1.1/src/finbase/config/__init__.py +5 -0
  23. finbase-0.1.1/src/finbase/config/settings.py +214 -0
  24. finbase-0.1.1/src/finbase/config/user_config.py +207 -0
  25. finbase-0.1.1/src/finbase/dashboard/__init__.py +5 -0
  26. finbase-0.1.1/src/finbase/dashboard/data_service.py +321 -0
  27. finbase-0.1.1/src/finbase/data/__init__.py +0 -0
  28. finbase-0.1.1/src/finbase/data/database/__init__.py +5 -0
  29. finbase-0.1.1/src/finbase/data/database/index_db.py +470 -0
  30. finbase-0.1.1/src/finbase/data/database/schema.py +126 -0
  31. finbase-0.1.1/src/finbase/data/database/timeseries_db.py +526 -0
  32. finbase-0.1.1/src/finbase/data/index_updater.py +234 -0
  33. finbase-0.1.1/src/finbase/data/loaders/__init__.py +5 -0
  34. finbase-0.1.1/src/finbase/data/loaders/equity_loader.py +360 -0
  35. finbase-0.1.1/src/finbase/data/parsers/__init__.py +11 -0
  36. finbase-0.1.1/src/finbase/data/parsers/sp500_wikipedia.py +364 -0
  37. finbase-0.1.1/src/finbase/data/parsers/wikipedia_index_parser.py +321 -0
  38. finbase-0.1.1/src/finbase/data/risk_factor_groups/__init__.py +6 -0
  39. finbase-0.1.1/src/finbase/data/risk_factor_groups/base_group.py +104 -0
  40. finbase-0.1.1/src/finbase/data/risk_factor_groups/equity_group.py +208 -0
  41. finbase-0.1.1/src/finbase/data/validators/__init__.py +5 -0
  42. finbase-0.1.1/src/finbase/data/validators/timeseries_validator.py +206 -0
  43. finbase-0.1.1/src/finbase/utils/__init__.py +1 -0
  44. finbase-0.1.1/src/finbase/utils/logging.py +139 -0
  45. finbase-0.1.1/src/finbase.egg-info/PKG-INFO +344 -0
  46. finbase-0.1.1/src/finbase.egg-info/SOURCES.txt +51 -0
  47. finbase-0.1.1/src/finbase.egg-info/dependency_links.txt +1 -0
  48. finbase-0.1.1/src/finbase.egg-info/requires.txt +16 -0
  49. finbase-0.1.1/src/finbase.egg-info/top_level.txt +2 -0
  50. finbase-0.1.1/tests/test_client.py +711 -0
  51. finbase-0.1.1/tests/test_sp500_parser.py +341 -0
  52. finbase-0.1.1/tests/test_timeseries_db.py +390 -0
  53. finbase-0.1.1/tests/test_user_config.py +373 -0
@@ -0,0 +1,110 @@
1
+ # Changelog
2
+
3
+ All notable changes to this project will be documented in this file.
4
+
5
+ ## [0.1.1] - 2026-04-10
6
+
7
+ ### Changed
8
+ - **Project renamed from findata to finbase** for PyPI availability
9
+ - Package: `findata` → `finbase`
10
+ - Config: `~/.findatarc` → `~/.finbaserc`, `~/.findata/` → `~/.finbase/`
11
+ - Env vars: `FINDATA_*` → `FINBASE_*`
12
+
13
+ ### Fixed
14
+ - **DataClient.get_data() N+1 query**: queries all symbols at once per column instead of one DB call per symbol×column combination
15
+ - **IndexDB connection bypass**: now uses the injected TimeSeriesDB connection instead of opening independent sqlite3 connections per method call
16
+ - **Silent data loss in DataClient.get_data()**: unexpected errors now propagate to the caller instead of being silently swallowed; only DatabaseError (no data found) is handled gracefully
17
+
18
+ ---
19
+
20
+ ## [0.1.0] - 2025-12-09
21
+
22
+ ### Added
23
+ - **Core Database System**
24
+ - SQLite-based time series database with schema for risk factors and OHLCV data
25
+ - Support for multiple asset classes (equity, fx, rates, commodities)
26
+ - User space configuration (~/.finbase/timeseries.db, ~/.finbaserc)
27
+ - Database audit trail with data_updates table
28
+
29
+ - **Index Management**
30
+ - Wikipedia-based index constituent extraction
31
+ - Support for 5 major indices: SP500 (503), DOW30 (30), NDX (101), FTSE100 (100), DAX (41)
32
+ - Temporal tracking of index composition (slowly changing dimension pattern)
33
+ - Automatic change detection and logging
34
+ - Config-driven parser for easy addition of new indices
35
+
36
+ - **Data Loading**
37
+ - YFinance integration with rate limiting (5s/symbol, 30s/batch)
38
+ - Smart loading: automatic skip of existing data
39
+ - Bulk loading by index constituents
40
+ - Incremental and resumable loading
41
+ - Support for US, UK, and German markets
42
+
43
+ - **DataClient API**
44
+ - Clean API for external projects (e.g., tsgen)
45
+ - Support for long and wide format data
46
+ - Convenience methods: get_closes(), get_latest(), get_all()
47
+ - Discovery methods: list_symbols(), search_symbols(), get_symbol_info()
48
+ - Bulk retrieval by asset class, sector, or index
49
+ - Index constituent queries with historical point-in-time support
50
+
51
+ - **Risk Factor Groups**
52
+ - JSON-based group definitions
53
+ - Support for equities with sector filtering
54
+ - Market cap sorting and subsetting
55
+ - Built-in groups: major indices, SP500 top companies
56
+
57
+ - **Dashboard** (Optional)
58
+ - Streamlit-based web dashboard for data exploration
59
+ - Interactive charts with Plotly
60
+ - Database statistics and symbol search
61
+ - Multi-symbol comparison
62
+
63
+ - **Documentation**
64
+ - Quick start guides for common workflows
65
+ - API examples and usage patterns
66
+
67
+ ### Features
68
+ - **Configuration Management**: User-space configuration with ~/.finbaserc
69
+ - **Multi-Source Support**: Track data provenance with data_source field
70
+ - **Validation**: Input validation and data quality checks
71
+ - **Logging**: Comprehensive logging with structured output
72
+ - **Testing**: Unit tests for core functionality
73
+ - **Error Handling**: Graceful error handling with retries and reporting
74
+
75
+ ### Technical Details
76
+ - Python 3.12 required
77
+ - SQLite for data storage (<1M records)
78
+ - Pandas for data manipulation
79
+ - YFinance for market data
80
+ - Conda and pip installation support
81
+
82
+ ### Breaking Changes
83
+ None (initial release)
84
+
85
+ ### Known Limitations
86
+ - YFinance rate limits require conservative loading (10-100 symbols recommended per session)
87
+ - SQLite performance degrades >1M records (future: migrate to DuckDB)
88
+ - Currently supports daily frequency only
89
+ - Index historical changes not fully tracked yet (planned for future release)
90
+
91
+ ### Dependencies
92
+ - Core: yfinance, pandas, numpy, lxml, beautifulsoup4, requests, pyyaml
93
+ - Development: pytest, pytest-cov
94
+ - Dashboard: streamlit, plotly
95
+
96
+ ### Installation
97
+ ```bash
98
+ # From source
99
+ git clone https://github.com/yourusername/finbase.git
100
+ cd finbase
101
+ pip install -e .
102
+
103
+ # With conda
104
+ conda env create -f environment.yml
105
+ conda activate finbase
106
+ ```
107
+
108
+ ---
109
+
110
+ [0.1.0]: https://github.com/yourusername/finbase/releases/tag/v0.1.0