Google Sheetsで金のポートフォリオを作る
Google Sheetsに金のポートフォリオテンプレートを取り込み、基準価格を更新して、保有品ごとの参考評価額、購入費用、差額を計算します。
読む →APIキーなしで24K、22K、18Kの1グラム当たり金価格をPythonで取得し、Decimalで安全に計算する方法。
アプリで1グラム当たりの金価格が必要なら、公開/v1/caratエンドポイントから純度別の値を直接取得できます。1回のリクエストで24K、22K、21K、20K、18K、16K、14K、10Kが返り、試用時はAPIキーも不要です。
標準ライブラリだけを使い、金額をDecimalとして読み取ります。これにより浮動小数点の誤差を避けられます。
import json
from decimal import Decimal
from urllib.parse import urlencode
from urllib.request import Request, urlopen
url = "https://api.goldprice.dev/v1/carat?" + urlencode({"currency": "JPY"})
with urlopen(Request(url, headers={"Accept": "application/json"}), timeout=10) as response:
payload = json.load(response)
prices = {
"currency": payload["currency"],
"timestamp": payload["timestamp"],
"24k": Decimal(payload["price_gram_24k"]),
"22k": Decimal(payload["price_gram_22k"]),
"18k": Decimal(payload["price_gram_18k"]),
}
JPYはUSD、EUR、GBP、INR、IDR、AEDなどに変更できます。価格の観測時点を示すtimestampも保存してください。
12.5グラムの18K製品なら、18Kのグラム単価に重量を掛け、最後に一度だけ丸めます。
from decimal import Decimal, ROUND_HALF_UP
weight = Decimal("12.5")
value = (weight * prices["18k"]).quantize(Decimal("0.01"), rounding=ROUND_HALF_UP)
エンドポイントのグラム単価は、指定通貨の最小単位の精度で返ります。この結果は金含有量の参考価値であり、小売価格や買取価格ではありません。加工費、宝石、税、プレミアム、精錬費、買取控除は別です。
APIはXAU価格を指定通貨へ換算し、トロイオンス価格を31.1034768で割り、22 / 24や18 / 24などの純度比を掛けます。
Decimalのまま扱う。timestampを一緒に保存する。全フィールドはcarat APIドキュメント、日次OHLCは履歴APIを参照してください。
関連ガイド
Google Sheetsに金のポートフォリオテンプレートを取り込み、基準価格を更新して、保有品ごとの参考評価額、購入費用、差額を計算します。
読む →現物価格、OHLCバー、UTCタイムスタンプ、制御されたポーリングを組み合わせる仕組みを、TypeScriptとSVGの実例で解説します。
読む →確定済みのXAU/USD日次バーと過去のFX観測値を組み合わせ、当時は入手できなかったレートを誤って使うことなく、現地通貨建てのゴールド戦略をテストする方法。
読む →goldprice.dev
リアルタイムの金価格、ヒストリカルOHLC、マルチソース集計 — REST・SSE経由で提供。