Methodology & Data Sources

We don't guess. We measure, model, and verify. Here's exactly how our predictions work and how accurate they are.

Accuracy Summary

78%
24h Temp Within ±1.5°C
65%
Rain Timing Within ±2h
1h
Update Frequency

Data Sources

Primary: Open-Meteo API

Our primary data source is the Open-Meteo API, a free, open-source weather API that aggregates data from multiple meteorological models. Open-Meteo is developed and maintained by independent developers and is not affiliated with Nippon Predict. We access their API directly from your browser, not through our servers, which means your IP address is not exposed to us during data retrieval.

Open-Meteo provides access to the following meteorological models relevant to our forecasts: JMA MSM (Meso-Scale Model) — the Japan Meteorological Agency's high-resolution model, providing forecasts at approximately 5km horizontal resolution; ECMWF IFS (Integrated Forecasting System) — the European Centre for Medium-Range Weather Forecasts' global model, providing ensemble forecasts at approximately 9km resolution; GFS (Global Forecast System) — NOAA's global model at approximately 13km resolution; and ICON-DWD — the German Weather Service's global and regional models.

We use the JMA MSM as our primary model for short-range forecasts (0-24 hours) because it has the highest resolution for the Tokyo region and is specifically tuned for Japanese topography and climate patterns. For rain probability, we supplement with ECMWF ensemble data, which provides a measure of forecast uncertainty through its 51-member ensemble.

Secondary: JMA AMeDAS Observations

For model verification and bias correction, we use historical observation data from the JMA's Automated Meteorological Data Acquisition System (AMeDAS). AMeDAS operates approximately 1,300 automated weather stations across Japan, with roughly 50 stations within the Tokyo metropolitan area. We use these observations to: verify our forecast accuracy against ground truth; calibrate our district-specific correction factors; and validate our microclimate models against measured temperature, humidity, and wind differences.

Tertiary: Our Own Field Observations

Since 2020, our team has conducted systematic field observations across Tokyo's 23 wards. These include: surface temperature measurements at 50+ locations using calibrated infrared thermometers; wind speed and direction logging at street level using handheld anemometers; and photographic documentation of cloud formation, fog extent, and precipitation patterns. These observations are not used directly in our automated forecasts (they're not available in real-time at sufficient density), but they inform our correction algorithms and validate our spatial models.

Forecast Methodology

Step 1: Model Retrieval

Every hour, our system fetches the latest available model output from the Open-Meteo API. The JMA MSM runs four times daily (00, 06, 12, 18 UTC), with hourly output to 15 hours and 3-hourly output to 84 hours. We always use the most recent run available. If the 12 UTC run is the latest, we use that. If a new run becomes available while you're viewing the page, the next refresh will pick it up.

Step 2: Spatial Disaggregation

The JMA MSM runs at approximately 5km resolution. This means each grid cell covers roughly 25 square kilometers — large enough to encompass multiple Tokyo wards. Our six observation points sit within a single grid cell for most model configurations. To create district-specific forecasts, we apply spatial correction factors based on Local Climate Zone (LCZ) classification.

Each of our six districts is classified into an LCZ type following Stewart and Oke (2012): Akihabara (LCZ 2 — compact midrise), Ginza (LCZ 5 — open midrise, bayfront), Roppongi (LCZ 4 — open highrise, hilltop), Ueno (LCZ 6 — open lowrise, park-influenced), Shimbashi (LCZ 5 — open midrise, bayfront), and Ikebukuro (LCZ 2 — compact midrise, northwestern exposure).

For each LCZ, we apply corrections derived from our validation against AMeDAS observations. Compact midrise areas run 1-3°C warmer than model output at night due to UHI effects. Open bayfront areas have 5-10% higher humidity. Hilltop locations are 10-25% windier. These corrections are applied as additive or multiplicative adjustments to the raw model output.

Step 3: Temporal Interpolation

Where the model provides 3-hourly output (beyond the 15-hour hourly window), we apply linear interpolation to produce hourly values. This is a standard meteorological practice — the underlying model physics operates on 3-hourly timesteps, but linear interpolation provides reasonable hourly estimates for temperature, humidity, and wind speed. We do not interpolate precipitation, which we report at its native 3-hourly resolution.

Step 4: SVG Band Generation

The 24-hour prediction bands you see on our dashboard are generated client-side in your browser. For each hour, we create an SVG rect element with: height proportional to the temperature relative to the 24-hour range; and fill color determined by a temperature-to-color mapping (violet #7C3AED for temperatures below 10°C, transitioning through pink #EC4899 for mild temperatures, to amber #F59E0B for temperatures above 28°C).

The band is 200 pixels wide with 24 bars, each approximately 8 pixels wide. The color gradient is calculated using a piecewise linear interpolation between the temperature thresholds. This visualization was designed by Sarah Kim to provide an immediate, intuitive sense of temperature trends over the next 24 hours.

Accuracy Verification

Temperature Accuracy

We verify our temperature predictions against JMA AMeDAS observations at the end of each forecast period. Over the 24 months from January 2023 to December 2024, our predictions (after applying LCZ corrections) were within ±1.5°C of observed temperatures 78.3% of the time for the 24-hour forecast horizon. The mean absolute error (MAE) was 1.2°C.

Accuracy varies by district and season. Our best accuracy is in Ginza and Shimbashi (MAE 1.0°C), where the bay moderation makes temperatures more predictable. Our worst accuracy is in Ikebukuro (MAE 1.5°C), where cold air drainage in winter and UHI variability in summer create larger deviations. Summer afternoons are our least accurate period (MAE 1.6°C) due to convective variability. Winter nights are our most accurate (MAE 0.9°C) because radiative cooling follows deterministic physics.

Rain Timing Accuracy

Rain timing is harder. Over the same 24-month period, our rain start-time predictions were within ±2 hours of observed rain onset 64.7% of the time. This is for rain events where we predicted at least 1mm of precipitation. The accuracy drops for light drizzle (trace amounts are genuinely hard to time) and increases for heavy rain events (>10mm in 3 hours), where the timing is driven by large-scale features that models capture well.

Our rain timing accuracy is best for frontal systems (75% within ±2 hours) and worst for isolated convective cells (45% within ±2 hours). This is a fundamental limitation of current meteorological models — convective initiation is a sub-grid-scale process that operational models cannot reliably predict. We don't claim otherwise.

Wind Accuracy

Wind speed predictions are our weakest area. Our 24-hour wind speed predictions have a MAE of 2.8 m/s, which is comparable to the underlying model performance. The problem is that street-level wind in dense urban areas is dominated by building effects that no operational model resolves. Our wind channel analysis provides qualitative guidance ("expect acceleration on Meiji-dori") but quantitative wind predictions at street level remain challenging.

Update Frequency

Our dashboard updates every hour on the hour, based on a client-side timer that fetches fresh data from the Open-Meteo API. The API itself updates when new model runs become available — typically within 30-60 minutes of the synoptic time (00, 06, 12, 18 UTC). The JMA MSM data is usually available 2-3 hours after the synoptic time due to model computation and quality control procedures.

In practice, this means: at 9am JST, you're likely seeing the 00 UTC model run (9 hours old); at 3pm JST, you may be seeing the 06 UTC run (6 hours old); and at 9pm JST, the 12 UTC run (6 hours old). The freshest data is typically available in the afternoon and evening Japan time, when the 06 and 12 UTC runs have both been processed.

Known Limitations

We'll be straight about what our model can't do: we cannot predict convective initiation (thunderstorm formation) with useful skill more than 1-2 hours ahead. We cannot resolve building-scale wind patterns, which require computational fluid dynamics models and detailed building geometry. We cannot predict micro-variations caused by temporary factors (construction barriers, street closures, special events). And we cannot forecast beyond 48 hours with microclimate-specific skill — the ensemble spread becomes too large.

We're working on the first two. Real-time radar assimilation for convective nowcasting is on our roadmap for 2025. A simplified CFD model for major wind corridors is in early development. The temporary factors and long-range limits are fundamental constraints we'll always be transparent about.

Corrections and Updates

When we identify systematic errors in our forecasts, we log them in our public correction log along with the corrective action taken. This might involve adjusting a correction factor, adding a new data source, or modifying our spatial model. We believe in transparency about our mistakes — it's how we improve.

If you notice a forecast that seems systematically wrong for your area, please contact us. We investigate every report and use them to refine our models. Our accuracy has improved by approximately 15% since launch, largely thanks to user-reported discrepancies that helped us identify and fix biases in our correction factors.

← Back to Dashboard