---
title: /screening の filters にしきい値の単位を書けるようにしました
type: changelog
date: 2026-08-24
changelog:
  category: API
---

`GET /screening` の `filters` を `field:op:value:unit` の 4 セグメントで書けるようにしました。`unit` を書くと、その単位で書かれたしきい値をサーバがフィールドの単位へ換算します。

```
# 「時価総額 1,000 億円以上」
GET /v1/screening?filters=marketCap:gte:1000:hundred_million_jpy

# 「自己資本比率 70% 以上」（equityRatio の unit は ratio だが percent で書ける）
GET /v1/screening?filters=equityRatio:gte:70:percent
```

これまではしきい値の単位を書く場所が無く、フィールドの単位と違うスケールで書いても値としては妥当なため受理され、意図と違う結果が黙って返っていました（`equityRatio:gte:70` が 0 件になる、時価総額のしきい値が意図と違う桁で解釈される、など）。単位を書けば、意図した意味のまま解釈されます。

換算は同じ種類の単位のあいだだけで行います。金額（`jpy`・`million_jpy`・`hundred_million_jpy`）と比率（`ratio`・`percent`）が対象で、`times`（倍）のように換算相手を持たない単位はそのフィールドの単位しか受け付けません。フィールドと換算できない単位を書いた場合は、受け付ける単位を添えた 400 が返ります → [単位とスケール](/guides/units)。

`unit` を省略した 3 セグメント（`field:op:value`）の書き方はこれまでどおりで、フィールドの単位でしきい値を書いたものとして扱います。既存のリクエストの解釈は変わりません。

金額のしきい値については、旧単位（億円）とみられる値を 400 で弾く移行ガードがありますが、**換算が起きる単位を明示した指定はガードの対象外**です。`marketCap:gte:1000:hundred_million_jpy` はそのまま「1,000 億円」として通ります。フィールド自身の単位をそのまま書いた `marketCap:gte:1000:jpy` は、数値が単位を省略した場合と同じなのでガードが効きます。

MCP ツール `screen_securities` でも `metric_filters[].unit` で同じ指定ができます。MCP の金額フィールドは公開済み契約のため単位が億円で、外部 REST（円）とは異なります。どちらの面でも指標カタログの `unit` が正です。
