{
  "slug": "portfolio-allocation",
  "name": "gizza-ai/portfolio-allocation",
  "version": "0.1.0",
  "title": "Portfolio Allocation Calculator — Holdings Breakdown by Asset, Sector, Account — gizza.ai",
  "description": "Paste holdings and calculate percentage allocation by asset class, holding, sector, or account with chart-ready values and concentration score.",
  "tags": [
    "portfolio allocation",
    "asset allocation",
    "holdings breakdown",
    "sector allocation",
    "account allocation",
    "investment calculator",
    "portfolio chart",
    "diversification"
  ],
  "category": "data",
  "urls": {
    "page": "https://gizza.ai/tools/portfolio-allocation/",
    "markdown": "https://gizza.ai/tools/portfolio-allocation/index.md",
    "descriptor": "https://gizza.ai/tools/portfolio-allocation/tool.json",
    "deep_link_example": "https://gizza.ai/tools/portfolio-allocation/?input=Name%2C%20Value%2C%20Asset%2C%20Sector%2C%20Account%0AAAPL%2C%206000%2C%20Stocks%2C%20Technology%2C%20Brokerage%0ABND%2C%203000%2C%20Bonds%2C%20Bonds%2C%20IRA%0ACash%2C%201000%2C%20Cash%2C%20Cash%2C%20Savings&group_by=asset&sort=value&top_n=0&currency=%24"
  },
  "cli": "gizza tool portfolio-allocation \"Name, Value, Asset, Sector, Account\nAAPL, 6000, Stocks, Technology, Brokerage\nBND, 3000, Bonds, Bonds, IRA\nCash, 1000, Cash, Cash, Savings\"",
  "tool": {
    "description": "Break a pasted portfolio holdings list into allocation percentages by asset class, holding, sector, or account. Accepts CSV or tab-separated rows: label, value, optional asset class, optional sector, optional account. Values may be currency amounts, thousands-separated numbers, or shares @ price. Returns a text table with value, percent, proportional bars, holding counts, and a concentration score.",
    "parameters": {
      "additionalProperties": false,
      "properties": {
        "currency": {
          "default": "$",
          "description": "Currency symbol or prefix to display before values, such as $, €, £, USD, or blank for no prefix.",
          "type": "string"
        },
        "group_by": {
          "default": "asset",
          "description": "Which dimension to allocate by: asset class (default), individual holding, sector, or account.",
          "enum": [
            "asset",
            "holding",
            "sector",
            "account"
          ],
          "type": "string"
        },
        "input": {
          "description": "Holdings pasted as CSV or tab-separated rows: label, value, optional asset class, optional sector, optional account. A header row is allowed. Values may be currency amounts, thousands-separated numbers, or shares @ price.",
          "type": "string"
        },
        "sort": {
          "default": "value",
          "description": "Sort slices by descending value (default) or alphabetically by label. When top_n is used, the largest slices are kept before any label sort.",
          "enum": [
            "value",
            "label"
          ],
          "type": "string"
        },
        "top_n": {
          "default": 0,
          "description": "Keep only the largest N slices and fold the rest into Other. Use 0 (default) to show every slice.",
          "maximum": 1000,
          "minimum": 0,
          "type": "integer"
        }
      },
      "required": [
        "input"
      ],
      "type": "object"
    }
  }
}