# samyakkk11/indian-mutual-fund-intelligence architecture

> Architecture diagram of the GitHub repository samyakkk11/indian-mutual-fund-intelligence, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-10). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/samyakkk11/indian-mutual-fund-intelligence
- Repository: https://github.com/samyakkk11/indian-mutual-fund-intelligence

## Overview

This repository is a static mutual-fund analytics pipeline and Power BI dashboard. Its main workflow loads compiled NAV and scheme-master data into DuckDB, filters an active Direct-Growth universe, calculates daily returns, detects discontinuities, builds performance and risk analytics, validates and exports datasets, then presents them in Power BI. The graph preserves documented profiling and age-tier enrichment alongside the main path. Some pipeline ordering and the Power BI input relationship are documented in the README; unsampled implementation details are not inferred.

Main entry points: [`data/src/scripts/build_model.py`](https://github.com/samyakkk11/indian-mutual-fund-intelligence/blob/main/data/src/scripts/build_model.py) (Raw data model), [`data/src/scripts/run_analysis.py`](https://github.com/samyakkk11/indian-mutual-fund-intelligence/blob/main/data/src/scripts/run_analysis.py) (Analytics workflow), [`data/src/scripts/build_fund_analytics.py`](https://github.com/samyakkk11/indian-mutual-fund-intelligence/blob/main/data/src/scripts/build_fund_analytics.py) (Performance and risk), [`data/src/scripts/add_fund_age_tier.py`](https://github.com/samyakkk11/indian-mutual-fund-intelligence/blob/main/data/src/scripts/add_fund_age_tier.py) (Fund age tiers)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_inputs["Data inputs"]
  node_config["Path configuration<br/>[config.py]"]
  node_profiling["Source profiling<br/>[inspect_mf_data.py]"]
end

subgraph group_model["DuckDB preparation"]
  node_model_build["Raw data model<br/>[build_model.py]"]
  node_duckdb[("DuckDB model")]
  node_universe["Fund universe"]
end

subgraph group_analytics["Analytics and quality"]
  node_daily["Daily returns"]
  node_discontinuities["NAV discontinuities"]
  node_orchestrator["Analytics workflow<br/>[run_analysis.py]"]
  node_analytics_tables["Performance and risk"]
  node_age_tier["Fund age tiers"]
  node_validation["Data validation<br/>[check_nesting.py]"]
  node_exports["Parquet datasets"]
end

subgraph group_presentation["Dashboard"]
  node_powerbi["Power BI report<br/>[Mf_Dashboard.pbix]"]
end

node_source["Compiled AMFI data"]
node_analyst(("Analyst"))

node_source -->|"supplies NAV and master"| node_model_build
node_config -->|"provides paths"| node_model_build
node_model_build -->|"creates model"| node_duckdb
node_duckdb -->|"reads scheme master"| node_universe
node_duckdb -->|"reads NAV and universe"| node_daily
node_duckdb -->|"reads daily returns"| node_discontinuities
node_duckdb -->|"queries analytical tables"| node_orchestrator
node_orchestrator -->|"builds analytics"| node_analytics_tables
node_analytics_tables -->|"exports Parquet"| node_exports
node_duckdb -->|"joins scheme master"| node_age_tier
node_exports -->|"enriches dataset"| node_age_tier
node_exports -->|"checks nesting"| node_validation
node_exports -->|"feeds dashboard"| node_powerbi
node_analyst -->|"explores fund metrics"| node_powerbi
node_analyst -.->|"profiles source data"| node_profiling

click node_config "https://github.com/samyakkk11/indian-mutual-fund-intelligence/blob/main/data/src/scripts/config.py"
click node_profiling "https://github.com/samyakkk11/indian-mutual-fund-intelligence/blob/main/data/src/scripts/inspect_mf_data.py"
click node_model_build "https://github.com/samyakkk11/indian-mutual-fund-intelligence/blob/main/data/src/scripts/build_model.py"
click node_universe "https://github.com/samyakkk11/indian-mutual-fund-intelligence/blob/main/data/src/scripts/create_fund_universe.py"
click node_daily "https://github.com/samyakkk11/indian-mutual-fund-intelligence/blob/main/data/src/scripts/create_daily_returns.py"
click node_discontinuities "https://github.com/samyakkk11/indian-mutual-fund-intelligence/blob/main/data/src/scripts/flag_nav_discontinuities.py"
click node_orchestrator "https://github.com/samyakkk11/indian-mutual-fund-intelligence/blob/main/data/src/scripts/run_analysis.py"
click node_analytics_tables "https://github.com/samyakkk11/indian-mutual-fund-intelligence/blob/main/data/src/scripts/build_fund_analytics.py"
click node_age_tier "https://github.com/samyakkk11/indian-mutual-fund-intelligence/blob/main/data/src/scripts/add_fund_age_tier.py"
click node_validation "https://github.com/samyakkk11/indian-mutual-fund-intelligence/blob/main/data/src/scripts/check_nesting.py"
click node_powerbi "https://github.com/samyakkk11/indian-mutual-fund-intelligence/blob/main/Mf_Dashboard.pbix"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_config,node_profiling toneBlue
class node_model_build,node_duckdb,node_universe toneAmber
class node_daily,node_discontinuities,node_orchestrator,node_analytics_tables,node_age_tier,node_validation,node_exports toneMint
class node_powerbi toneRose
class node_source,node_analyst toneIndigo
```

## Components

### Data inputs

- [Path configuration](https://github.com/samyakkk11/indian-mutual-fund-intelligence/blob/main/data/src/scripts/config.py): `data/src/scripts/config.py`
- [Source profiling](https://github.com/samyakkk11/indian-mutual-fund-intelligence/blob/main/data/src/scripts/inspect_mf_data.py): `data/src/scripts/inspect_mf_data.py`

### DuckDB preparation

- [Raw data model](https://github.com/samyakkk11/indian-mutual-fund-intelligence/blob/main/data/src/scripts/build_model.py): `data/src/scripts/build_model.py`
- **DuckDB model**
- [Fund universe](https://github.com/samyakkk11/indian-mutual-fund-intelligence/blob/main/data/src/scripts/create_fund_universe.py): `data/src/scripts/create_fund_universe.py`

### Analytics and quality

- [Daily returns](https://github.com/samyakkk11/indian-mutual-fund-intelligence/blob/main/data/src/scripts/create_daily_returns.py): `data/src/scripts/create_daily_returns.py`
- [NAV discontinuities](https://github.com/samyakkk11/indian-mutual-fund-intelligence/blob/main/data/src/scripts/flag_nav_discontinuities.py): `data/src/scripts/flag_nav_discontinuities.py`
- [Analytics workflow](https://github.com/samyakkk11/indian-mutual-fund-intelligence/blob/main/data/src/scripts/run_analysis.py): `data/src/scripts/run_analysis.py`
- [Performance and risk](https://github.com/samyakkk11/indian-mutual-fund-intelligence/blob/main/data/src/scripts/build_fund_analytics.py): `data/src/scripts/build_fund_analytics.py`
- [Fund age tiers](https://github.com/samyakkk11/indian-mutual-fund-intelligence/blob/main/data/src/scripts/add_fund_age_tier.py): `data/src/scripts/add_fund_age_tier.py`
- [Data validation](https://github.com/samyakkk11/indian-mutual-fund-intelligence/blob/main/data/src/scripts/check_nesting.py): `data/src/scripts/check_nesting.py`
- **Parquet datasets**

### Dashboard

- [Power BI report](https://github.com/samyakkk11/indian-mutual-fund-intelligence/blob/main/Mf_Dashboard.pbix): `Mf_Dashboard.pbix`

### Other components

- **Compiled AMFI data**
- **Analyst**

## Connections

- Compiled AMFI data → Raw data model: supplies NAV and master (evidence: `README.md`)
- Path configuration → Raw data model: provides paths (evidence: `data/src/scripts/build_model.py`)
- Raw data model → DuckDB model: creates model (evidence: `data/src/scripts/build_model.py`)
- DuckDB model → Fund universe: reads scheme master (evidence: `data/src/scripts/create_fund_universe.py`)
- DuckDB model → Daily returns: reads NAV and universe (evidence: `data/src/scripts/create_daily_returns.py`)
- DuckDB model → NAV discontinuities: reads daily returns (evidence: `data/src/scripts/flag_nav_discontinuities.py`)
- DuckDB model → Analytics workflow: queries analytical tables (evidence: `data/src/scripts/run_analysis.py`)
- Analytics workflow → Performance and risk: builds analytics (evidence: `README.md`)
- Performance and risk → Parquet datasets: exports Parquet
- DuckDB model → Fund age tiers: joins scheme master (evidence: `data/src/scripts/add_fund_age_tier.py`)
- Parquet datasets → Fund age tiers: enriches dataset (evidence: `data/src/scripts/add_fund_age_tier.py`)
- Parquet datasets → Data validation: checks nesting (evidence: `data/src/scripts/check_nesting.py`)
- Parquet datasets → Power BI report: feeds dashboard (evidence: `README.md`)
- Analyst → Power BI report: explores fund metrics (evidence: `README.md`)
- Analyst → Source profiling: profiles source data
