{"id":31133054,"url":"https://github.com/princeoncada/quant-pca-risk","last_synced_at":"2026-05-06T02:32:59.993Z","repository":{"id":313595093,"uuid":"1051970395","full_name":"princeoncada/quant-pca-risk","owner":"princeoncada","description":"Applies Principal Component Analysis (PCA) to daily returns of 20 US equities (2015–2025) to uncover hidden risk factors. Explores variance explained, scree, loadings, factor returns, covariance reconstruction, and Varimax rotation. Results show 3–5 PCs capture ~75% of portfolio risk.","archived":false,"fork":false,"pushed_at":"2025-09-07T05:49:41.000Z","size":3064,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-09-07T07:17:46.315Z","etag":null,"topics":["correlation-analysis","covariance-matrix","dimensionality-reduction","factor-models","matplotlib","numpy","pandas","pca","portfolio-risk","principal-component-analysis","python","quantitative-finance","time-series-analysis","variance","varimax"],"latest_commit_sha":null,"homepage":"","language":"Jupyter Notebook","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/princeoncada.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-09-07T05:43:24.000Z","updated_at":"2025-09-07T06:37:37.000Z","dependencies_parsed_at":"2025-09-07T07:27:50.477Z","dependency_job_id":null,"html_url":"https://github.com/princeoncada/quant-pca-risk","commit_stats":null,"previous_names":["princeoncada/quant-pca-risk"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/princeoncada/quant-pca-risk","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/princeoncada%2Fquant-pca-risk","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/princeoncada%2Fquant-pca-risk/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/princeoncada%2Fquant-pca-risk/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/princeoncada%2Fquant-pca-risk/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/princeoncada","download_url":"https://codeload.github.com/princeoncada/quant-pca-risk/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/princeoncada%2Fquant-pca-risk/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":275712384,"owners_count":25514205,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-18T02:00:09.552Z","response_time":77,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["correlation-analysis","covariance-matrix","dimensionality-reduction","factor-models","matplotlib","numpy","pandas","pca","portfolio-risk","principal-component-analysis","python","quantitative-finance","time-series-analysis","variance","varimax"],"created_at":"2025-09-18T05:08:02.921Z","updated_at":"2025-09-18T05:08:05.305Z","avatar_url":"https://github.com/princeoncada.png","language":"Jupyter Notebook","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Quant Project – PCA for Portfolio Risk\n\n**Goal:** Apply Principal Component Analysis (PCA) to daily returns of 20 large-cap US equities to uncover hidden risk drivers, reduce dimensionality, and evaluate interpretability with Varimax rotation.\n\n## Data\n- **Assets (20 US large-caps):**\n  - *Technology/Communication*: AAPL, MSFT, AMZN, GOOGL, META, NVDA, NFLX\n  - *Financials/Payments*: JPM, GS, V, MA\n  - *Industrials/Energy*: BA, GE, CAT, XOM, CVX\n  - *Consumer/Other*: DIS, IBM, WMT, TSLA\n- **Frequency:** Daily adjusted closing prices\n- **Period:** January 2015 – January 2025 (\\~2,500 observations)\n- **Transformations:**\n  - Returns computed as daily percentage changes\n  - Returns standardized (z-scored) for PCA comparability\n\n## Methods\n\n- Correlation matrix (heatmap of return co-movements)\n- PCA extraction (eigenvalues, variance explained)\n- Scree plot + Kaiser criterion for component selection\n- Factor loadings:\n  - Heatmap (PC1–PC5)\n  - Scatterplot (PC1 vs PC2)\n- Factor returns (time series of PC scores)\n- Covariance reconstruction (Frobenius norm error vs k)\n- Varimax rotation (interpretability of first 3 PCs)\n\n## Key Results\n\n- **PC1 (market factor):** \\~43% of variance → broad co-movement\n- **PC2 (sector tilt):** \\~13% of variance → Tech vs. Industrials/Energy split\n- **PC3 (idiosyncratic):** \\~9% of variance → Tesla \u0026 Nvidia dominance\n- **Top 3 PCs explain \\~65%**, top 5 \\~75–80%\n- **Covariance reconstruction:** 3–5 PCs approximate full risk matrix with minimal error\n- **Varimax rotation:** clarified sector-based groupings without reducing variance explained\n\n## Deliverables\n\n* 📑 [Research Paper PDF](docs/pca_portfolio_risk.pdf)\n* 📸 Figures in `docs/charts/`\n* 📂 [Notebook](notebooks/pca_portfolio_risk.ipynb)\n* 🖼️ [Summary Slide](docs/pca_portfolio_risk.png)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fprinceoncada%2Fquant-pca-risk","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fprinceoncada%2Fquant-pca-risk","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fprinceoncada%2Fquant-pca-risk/lists"}