chartlet 0.10.0

Compile structured data into deterministic, accessible static charts
Documentation
{
  "schemaVersion": 1,
  "type": "time",
  "title": "Kestrel Instruments (KSTL), daily share price",
  "source": "Illustrative values, chartlet",
  "height": 560,
  "timeAxis": {
    "title": "Trading day",
    "gaps": "collapse"
  },
  "panes": [
    {
      "heightRatio": 3,
      "valueAxis": {
        "title": "Price (USD)",
        "decimals": 2
      },
      "layers": [
        {
          "mark": "ohlc",
          "name": "KSTL",
          "data": [
            { "time": "2026-01-07", "open": 49.24, "high": 51.09, "low": 48.93, "close": 50.2 },
            { "time": "2026-01-08", "open": 50.43, "high": 50.84, "low": 49.8, "close": 50.77 },
            { "time": "2026-01-09", "open": 51.14, "high": 51.15, "low": 50.33, "close": 50.81 },
            { "time": "2026-01-12", "open": 50.66, "high": 52.79, "low": 50.58, "close": 52.03 },
            { "time": "2026-01-13", "open": 52.52, "high": 53.08, "low": 51.61, "close": 52.3 },
            { "time": "2026-01-14", "open": 52.52, "high": 53.14, "low": 51.39, "close": 51.86 },
            { "time": "2026-01-15", "open": 51.92, "high": 52.41, "low": 51.82, "close": 52.1 },
            { "time": "2026-01-16", "open": 52.1, "high": 53.08, "low": 51.78, "close": 52.66 },
            { "time": "2026-01-20", "open": 52.51, "high": 53.06, "low": 52.5, "close": 52.85 },
            { "time": "2026-01-21", "open": 52.99, "high": 54.0, "low": 51.33, "close": 52.74 },
            { "time": "2026-01-22", "open": 52.88, "high": 53.28, "low": 52.64, "close": 53.14 },
            { "time": "2026-01-23", "open": 52.96, "high": 54.6, "low": 52.77, "close": 53.27 },
            { "time": "2026-01-26", "open": 53.19, "high": 53.22, "low": 51.65, "close": 53.15 },
            { "time": "2026-01-27", "open": 52.74, "high": 53.73, "low": 52.21, "close": 53.7 },
            { "time": "2026-01-28", "open": 53.1, "high": 54.69, "low": 52.91, "close": 54.49 },
            { "time": "2026-01-29", "open": 53.55, "high": 55.18, "low": 52.76, "close": 54.59 },
            { "time": "2026-01-30", "open": 54.65, "high": 55.3, "low": 53.27, "close": 53.35 },
            { "time": "2026-02-02", "open": 53.4, "high": 54.22, "low": 52.56, "close": 54.17 },
            { "time": "2026-02-03", "open": 55.13, "high": 55.76, "low": 54.42, "close": 54.92 },
            { "time": "2026-02-04", "open": 55.16, "high": 55.46, "low": 54.81, "close": 55.33 },
            { "time": "2026-02-05", "open": 55.55, "high": 56.08, "low": 53.68, "close": 54.24 },
            { "time": "2026-02-06", "open": 54.5, "high": 56.5, "low": 53.99, "close": 55.69 },
            { "time": "2026-02-09", "open": 55.96, "high": 56.83, "low": 54.49, "close": 54.98 },
            { "time": "2026-02-10", "open": 54.92, "high": 56.95, "low": 54.15, "close": 55.86 },
            { "time": "2026-02-11", "open": 56.0, "high": 56.23, "low": 54.68, "close": 55.51 },
            { "time": "2026-02-12", "open": 56.03, "high": 57.9, "low": 55.93, "close": 57.1 },
            { "time": "2026-02-13", "open": 57.14, "high": 58.18, "low": 56.36, "close": 58.11 },
            { "time": "2026-02-17", "open": 57.97, "high": 63.24, "low": 57.52, "close": 62.22 },
            { "time": "2026-02-18", "open": 62.22, "high": 62.68, "low": 61.68, "close": 61.72 },
            { "time": "2026-02-19", "open": 62.08, "high": 62.9, "low": 61.19, "close": 62.08 },
            { "time": "2026-02-20", "open": 61.42, "high": 62.86, "low": 60.34, "close": 62.26 },
            { "time": "2026-02-23", "open": 62.26, "high": 62.36, "low": 61.18, "close": 61.2 },
            { "time": "2026-02-24", "open": 61.83, "high": 62.11, "low": 61.54, "close": 62.09 },
            { "time": "2026-02-25", "open": 61.65, "high": 61.95, "low": 60.93, "close": 61.52 },
            { "time": "2026-02-26", "open": 61.87, "high": 62.31, "low": 61.38, "close": 61.38 },
            { "time": "2026-02-27", "open": 60.97, "high": 62.03, "low": 60.62, "close": 61.17 },
            { "time": "2026-03-02", "open": 60.85, "high": 61.28, "low": 59.55, "close": 60.39 },
            { "time": "2026-03-03", "open": 60.52, "high": 61.82, "low": 59.33, "close": 59.51 },
            { "time": "2026-03-04", "open": 59.76, "high": 59.92, "low": 56.84, "close": 58.07 },
            { "time": "2026-03-05", "open": 57.91, "high": 58.65, "low": 57.49, "close": 58.22 },
            { "time": "2026-03-06", "open": 58.68, "high": 59.39, "low": 58.44, "close": 59.03 },
            { "time": "2026-03-09", "open": 59.49, "high": 60.51, "low": 59.23, "close": 60.34 },
            { "time": "2026-03-10", "open": 60.51, "high": 61.84, "low": 58.47, "close": 58.98 },
            { "time": "2026-03-11", "open": 58.93, "high": 60.99, "low": 58.44, "close": 60.68 },
            { "time": "2026-03-12", "open": 60.78, "high": 61.24, "low": 60.73, "close": 60.75 },
            { "time": "2026-03-13", "open": 60.63, "high": 61.12, "low": 59.71, "close": 59.76 },
            { "time": "2026-03-16", "open": 60.7, "high": 61.32, "low": 59.64, "close": 59.99 },
            { "time": "2026-03-17", "open": 60.16, "high": 61.69, "low": 59.92, "close": 60.77 },
            { "time": "2026-03-18", "open": 60.09, "high": 61.17, "low": 59.91, "close": 60.61 },
            { "time": "2026-03-19", "open": 61.24, "high": 63.25, "low": 60.87, "close": 62.48 },
            { "time": "2026-03-20", "open": 62.34, "high": 63.09, "low": 61.18, "close": 62.56 },
            { "time": "2026-03-23", "open": 62.09, "high": 63.02, "low": 60.52, "close": 61.06 },
            { "time": "2026-03-24", "open": 60.76, "high": 61.68, "low": 59.57, "close": 61.54 },
            { "time": "2026-03-25", "open": 61.72, "high": 62.12, "low": 61.65, "close": 61.72 },
            { "time": "2026-03-26", "open": 61.94, "high": 62.44, "low": 61.76, "close": 62.33 },
            { "time": "2026-03-27", "open": 62.04, "high": 62.48, "low": 62.04, "close": 62.13 },
            { "time": "2026-03-30", "open": 62.13, "high": 62.42, "low": 62.06, "close": 62.33 },
            { "time": "2026-03-31", "open": 62.69, "high": 63.36, "low": 62.59, "close": 63.12 },
            { "time": "2026-04-01", "open": 62.46, "high": 62.49, "low": 61.13, "close": 61.64 },
            { "time": "2026-04-02", "open": 60.72, "high": 61.29, "low": 58.93, "close": 59.8 },
            { "time": "2026-04-03", "open": 59.53, "high": 59.81, "low": 58.07, "close": 58.35 },
            { "time": "2026-04-06", "open": 58.59, "high": 59.99, "low": 58.26, "close": 59.98 },
            { "time": "2026-04-07", "open": 60.34, "high": 61.86, "low": 60.25, "close": 61.26 },
            { "time": "2026-04-08", "open": 61.63, "high": 61.96, "low": 60.92, "close": 61.42 },
            { "time": "2026-04-09", "open": 61.85, "high": 64.31, "low": 61.8, "close": 64.19 }
          ]
        },
        {
          "mark": "line",
          "name": "20-day average",
          "points": [
            { "time": "2026-01-07", "value": 49.59 },
            { "time": "2026-01-08", "value": 49.73 },
            { "time": "2026-01-09", "value": 49.86 },
            { "time": "2026-01-12", "value": 50.02 },
            { "time": "2026-01-13", "value": 50.2 },
            { "time": "2026-01-14", "value": 50.35 },
            { "time": "2026-01-15", "value": 50.5 },
            { "time": "2026-01-16", "value": 50.72 },
            { "time": "2026-01-20", "value": 50.94 },
            { "time": "2026-01-21", "value": 51.18 },
            { "time": "2026-01-22", "value": 51.42 },
            { "time": "2026-01-23", "value": 51.64 },
            { "time": "2026-01-26", "value": 51.78 },
            { "time": "2026-01-27", "value": 51.94 },
            { "time": "2026-01-28", "value": 52.13 },
            { "time": "2026-01-29", "value": 52.24 },
            { "time": "2026-01-30", "value": 52.35 },
            { "time": "2026-02-02", "value": 52.48 },
            { "time": "2026-02-03", "value": 52.64 },
            { "time": "2026-02-04", "value": 52.92 },
            { "time": "2026-02-05", "value": 53.12 },
            { "time": "2026-02-06", "value": 53.37 },
            { "time": "2026-02-09", "value": 53.58 },
            { "time": "2026-02-10", "value": 53.77 },
            { "time": "2026-02-11", "value": 53.93 },
            { "time": "2026-02-12", "value": 54.19 },
            { "time": "2026-02-13", "value": 54.49 },
            { "time": "2026-02-17", "value": 54.97 },
            { "time": "2026-02-18", "value": 55.41 },
            { "time": "2026-02-19", "value": 55.88 },
            { "time": "2026-02-20", "value": 56.34 },
            { "time": "2026-02-23", "value": 56.73 },
            { "time": "2026-02-24", "value": 57.18 },
            { "time": "2026-02-25", "value": 57.57 },
            { "time": "2026-02-26", "value": 57.92 },
            { "time": "2026-02-27", "value": 58.25 },
            { "time": "2026-03-02", "value": 58.6 },
            { "time": "2026-03-03", "value": 58.86 },
            { "time": "2026-03-04", "value": 59.02 },
            { "time": "2026-03-05", "value": 59.17 },
            { "time": "2026-03-06", "value": 59.41 },
            { "time": "2026-03-09", "value": 59.64 },
            { "time": "2026-03-10", "value": 59.84 },
            { "time": "2026-03-11", "value": 60.08 },
            { "time": "2026-03-12", "value": 60.34 },
            { "time": "2026-03-13", "value": 60.47 },
            { "time": "2026-03-16", "value": 60.57 },
            { "time": "2026-03-17", "value": 60.5 },
            { "time": "2026-03-18", "value": 60.44 },
            { "time": "2026-03-19", "value": 60.46 },
            { "time": "2026-03-20", "value": 60.48 },
            { "time": "2026-03-23", "value": 60.47 },
            { "time": "2026-03-24", "value": 60.44 },
            { "time": "2026-03-25", "value": 60.45 },
            { "time": "2026-03-26", "value": 60.5 },
            { "time": "2026-03-27", "value": 60.55 },
            { "time": "2026-03-30", "value": 60.64 },
            { "time": "2026-03-31", "value": 60.82 },
            { "time": "2026-04-01", "value": 61.0 },
            { "time": "2026-04-02", "value": 61.08 },
            { "time": "2026-04-03", "value": 61.05 },
            { "time": "2026-04-06", "value": 61.03 },
            { "time": "2026-04-07", "value": 61.14 },
            { "time": "2026-04-08", "value": 61.18 },
            { "time": "2026-04-09", "value": 61.35 }
          ]
        },
        {
          "mark": "annotation",
          "label": "Quarterly results",
          "time": "2026-02-17",
          "value": 64.44,
          "shape": "triangle-down"
        }
      ]
    },
    {
      "heightRatio": 1,
      "valueAxis": {
        "title": "Volume (million shares)",
        "decimals": 1
      },
      "layers": [
        {
          "mark": "area",
          "name": "Volume",
          "stroke": "thin",
          "points": [
            { "time": "2026-01-07", "value": 2.26 },
            { "time": "2026-01-08", "value": 1.88 },
            { "time": "2026-01-09", "value": 2.62 },
            { "time": "2026-01-12", "value": 2.36 },
            { "time": "2026-01-13", "value": 1.6 },
            { "time": "2026-01-14", "value": 2.43 },
            { "time": "2026-01-15", "value": 2.26 },
            { "time": "2026-01-16", "value": 3.13 },
            { "time": "2026-01-20", "value": 2.59 },
            { "time": "2026-01-21", "value": 1.67 },
            { "time": "2026-01-22", "value": 2.45 },
            { "time": "2026-01-23", "value": 1.91 },
            { "time": "2026-01-26", "value": 1.9 },
            { "time": "2026-01-27", "value": 2.71 },
            { "time": "2026-01-28", "value": 2.72 },
            { "time": "2026-01-29", "value": 2.65 },
            { "time": "2026-01-30", "value": 2.52 },
            { "time": "2026-02-02", "value": 2.75 },
            { "time": "2026-02-03", "value": 2.05 },
            { "time": "2026-02-04", "value": 1.44 },
            { "time": "2026-02-05", "value": 1.78 },
            { "time": "2026-02-06", "value": 2.39 },
            { "time": "2026-02-09", "value": 3.06 },
            { "time": "2026-02-10", "value": 2.28 },
            { "time": "2026-02-11", "value": 1.78 },
            { "time": "2026-02-12", "value": 2.02 },
            { "time": "2026-02-13", "value": 2.21 },
            { "time": "2026-02-17", "value": 6.79 },
            { "time": "2026-02-18", "value": 4.03 },
            { "time": "2026-02-19", "value": 1.81 },
            { "time": "2026-02-20", "value": 2.78 },
            { "time": "2026-02-23", "value": 2.11 },
            { "time": "2026-02-24", "value": 2.6 },
            { "time": "2026-02-25", "value": 1.4 },
            { "time": "2026-02-26", "value": 2.6 },
            { "time": "2026-02-27", "value": 2.55 },
            { "time": "2026-03-02", "value": 2.17 },
            { "time": "2026-03-03", "value": 2.08 },
            { "time": "2026-03-04", "value": 2.14 },
            { "time": "2026-03-05", "value": 2.47 },
            { "time": "2026-03-06", "value": 1.24 },
            { "time": "2026-03-09", "value": 3.17 },
            { "time": "2026-03-10", "value": 2.81 },
            { "time": "2026-03-11", "value": 2.12 },
            { "time": "2026-03-12", "value": 2.03 },
            { "time": "2026-03-13", "value": 1.94 },
            { "time": "2026-03-16", "value": 1.12 },
            { "time": "2026-03-17", "value": 2.21 },
            { "time": "2026-03-18", "value": 1.9 },
            { "time": "2026-03-19", "value": 2.53 },
            { "time": "2026-03-20", "value": 2.61 },
            { "time": "2026-03-23", "value": 3.19 },
            { "time": "2026-03-24", "value": 1.95 },
            { "time": "2026-03-25", "value": 2.32 },
            { "time": "2026-03-26", "value": 2.54 },
            { "time": "2026-03-27", "value": 2.06 },
            { "time": "2026-03-30", "value": 1.57 },
            { "time": "2026-03-31", "value": 2.4 },
            { "time": "2026-04-01", "value": 2.65 },
            { "time": "2026-04-02", "value": 2.17 },
            { "time": "2026-04-03", "value": 2.49 },
            { "time": "2026-04-06", "value": 3.18 },
            { "time": "2026-04-07", "value": 2.65 },
            { "time": "2026-04-08", "value": 2.07 },
            { "time": "2026-04-09", "value": 3.84 }
          ]
        }
      ]
    }
  ]
}