{"abstract":"USDJPY forward points are a hundred times too large.","category":"Currency rounding and FX conversion","checks":6,"contract":"solve(pair, spot, base_pct, quote_pct, days): covered-interest-parity outright F = S*(1 + rq*days/Bq)/(1 + rb*days/Bb) with money-market bases GBP, AUD, CAD 365 and USD, EUR, JPY, CHF 360; rates are given in percent. The pip exponent is 2 for JPY-quoted pairs, else 4. Return [F rounded half-even to pip exponent + 1 decimals, forward points = (F - S)*10**pip_exp rounded half-even to 2 decimals] as strings, both computed from the exact F.","evaluation_group":"w2-currency_rounding_and_fx_conversion-interest-parity-forward","failed_approach":"Switching on JPY in the base position leaves every JPY-quoted pair wrong.","family":"w2-currency_rounding_and_fx_conversion-interest-parity-forward-jpy-pip-exponent","id":"FA-62336","implementations":{"attempt":{"sha256":"7f942e95633253d391d279d18abe935a81bc1390e02b932ea6f5478fc60dae99","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nfrom decimal import Decimal, ROUND_HALF_EVEN, ROUND_HALF_UP, ROUND_FLOOR, ROUND_CEILING, ROUND_DOWN, ROUND_UP, ROUND_HALF_DOWN\nN = 1\nobservations = []\ndef solve(pair, spot, base_pct, quote_pct, days):\n    basis = {'USD': 360, 'EUR': 360, 'JPY': 360, 'CHF': 360, 'GBP': 365, 'AUD': 365, 'CAD': 365}\n    base, quote = pair[:3], pair[3:]\n    S = Decimal(spot)\n    rb, rq = Decimal(base_pct) / 100, Decimal(quote_pct) / 100\n    F = S * (1 + rq * days / basis[quote]) / (1 + rb * days / basis[base])\n    pe = 2 if base == 'JPY' else 4\n    pts = ((F - S) * Decimal(10) ** pe).quantize(Decimal('0.01'), rounding=ROUND_HALF_EVEN)\n    return [format(F.quantize(Decimal(1).scaleb(-(pe + 1)), rounding=ROUND_HALF_EVEN), 'f'), format(pts, 'f')]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncases = [[('regression jpy-pip-exponent 1', ('USDJPY', '150.00', '5.00', '0.00', 180), ['146.341', '-365.85']),\n  ('regression jpy-pip-exponent 2', ('AUDJPY', '98.765', '4.35', '0.10', 30), ['98.421', '-34.37']),\n  ('control: euro dollar year', ('EURUSD', '1.0800', '3.60', '5.40', 360), ['1.09876', '187.64']),\n  ('control: sterling dollar', ('GBPUSD', '1.2650', '5.25', '5.30', 91), ['1.26538', '3.85']),\n  ('control: dollar cad', ('USDCAD', '1.3577', '5.30', '4.75', 182), ['1.35359', '-41.12']),\n  ('control: euro franc', ('EURCHF', '0.9512', '3.75', '1.50', 7), ['0.95078', '-4.16'])],\n [('regression jpy-pip-exponent 1', ('AUDJPY', '54.4548', '0.49', '4.06', 91), ['54.947', '49.17']),\n  ('regression jpy-pip-exponent 2', ('AUDJPY', '5.9212', '0.74', '1.63', 182), ['5.948', '2.68']),\n  ('control: aussie yen', ('AUDJPY', '98.765', '4.35', '0.10', 30), ['98.421', '-34.37']),\n  ('control: dollar cad', ('USDCAD', '1.3577', '5.30', '4.75', 182), ['1.35359', '-41.12']),\n  ('control: euro franc', ('EURCHF', '0.9512', '3.75', '1.50', 7), ['0.95078', '-4.16']),\n  ('control: euro dollar year', ('EURUSD', '1.0800', '3.60', '5.40', 360), ['1.09876', '187.64'])],\n [('regression jpy-pip-exponent 1', ('GBPJPY', '137.7426', '3.56', '5.48', 1), ['137.750', '0.75']),\n  ('regression jpy-pip-exponent 2', ('GBPJPY', '5.4304', '2.54', '5.76', 365), ['5.605', '17.48']),\n  ('control: euro dollar year', ('EURUSD', '1.0800', '3.60', '5.40', 360), ['1.09876', '187.64']),\n  ('control: dollar yen half year', ('USDJPY', '150.00', '5.00', '0.00', 180), ['146.341', '-365.85']),\n  ('control: sterling dollar', ('GBPUSD', '1.2650', '5.25', '5.30', 91), ['1.26538', '3.85']),\n  ('control: aussie yen', ('AUDJPY', '98.765', '4.35', '0.10', 30), ['98.421', '-34.37'])],\n [('regression jpy-pip-exponent 1', ('USDJPY', '99.9582', '4.97', '2.67', 91), ['99.384', '-57.39']),\n  ('regression jpy-pip-exponent 2', ('GBPJPY', '63.7106', '6.59', '7.11', 91), ['63.807', '9.67']),\n  ('control: aussie yen', ('AUDJPY', '98.765', '4.35', '0.10', 30), ['98.421', '-34.37']),\n  ('control: dollar cad', ('USDCAD', '1.3577', '5.30', '4.75', 182), ['1.35359', '-41.12']),\n  ('control: euro franc', ('EURCHF', '0.9512', '3.75', '1.50', 7), ['0.95078', '-4.16']),\n  ('control: euro dollar year', ('EURUSD', '1.0800', '3.60', '5.40', 360), ['1.09876', '187.64'])],\n [('regression jpy-pip-exponent 1', ('AUDJPY', '25.5690', '7.90', '3.42', 182), ['25.025', '-54.37']),\n  ('regression jpy-pip-exponent 2', ('GBPJPY', '111.1109', '0.75', '7.67', 30), ['111.752', '64.13']),\n  ('control: euro dollar year', ('EURUSD', '1.0800', '3.60', '5.40', 360), ['1.09876', '187.64']),\n  ('control: dollar yen half year', ('USDJPY', '150.00', '5.00', '0.00', 180), ['146.341', '-365.85']),\n  ('control: sterling dollar', ('GBPUSD', '1.2650', '5.25', '5.30', 91), ['1.26538', '3.85']),\n  ('control: aussie yen', ('AUDJPY', '98.765', '4.35', '0.10', 30), ['98.421', '-34.37'])]]\nfor label, args, expected in cases[N - 1]:\n    check(label, solve(*args), expected)\nprint(json.dumps({\"observations\": observations, \"passed\": all(x[\"passed\"] for x in observations)}, ensure_ascii=False))\nraise SystemExit(0 if all(x[\"passed\"] for x in observations) else 1)\n"},"broken":{"sha256":"0472dd7b0d660368a947096f89df665af5f6a749ae5271afe83661d82ad509d1","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nfrom decimal import Decimal, ROUND_HALF_EVEN, ROUND_HALF_UP, ROUND_FLOOR, ROUND_CEILING, ROUND_DOWN, ROUND_UP, ROUND_HALF_DOWN\nN = 1\nobservations = []\ndef solve(pair, spot, base_pct, quote_pct, days):\n    basis = {'USD': 360, 'EUR': 360, 'JPY': 360, 'CHF': 360, 'GBP': 365, 'AUD': 365, 'CAD': 365}\n    base, quote = pair[:3], pair[3:]\n    S = Decimal(spot)\n    rb, rq = Decimal(base_pct) / 100, Decimal(quote_pct) / 100\n    F = S * (1 + rq * days / basis[quote]) / (1 + rb * days / basis[base])\n    pe = 4\n    pts = ((F - S) * Decimal(10) ** pe).quantize(Decimal('0.01'), rounding=ROUND_HALF_EVEN)\n    return [format(F.quantize(Decimal(1).scaleb(-(pe + 1)), rounding=ROUND_HALF_EVEN), 'f'), format(pts, 'f')]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncases = [[('regression jpy-pip-exponent 1', ('USDJPY', '150.00', '5.00', '0.00', 180), ['146.341', '-365.85']),\n  ('regression jpy-pip-exponent 2', ('AUDJPY', '98.765', '4.35', '0.10', 30), ['98.421', '-34.37']),\n  ('control: euro dollar year', ('EURUSD', '1.0800', '3.60', '5.40', 360), ['1.09876', '187.64']),\n  ('control: sterling dollar', ('GBPUSD', '1.2650', '5.25', '5.30', 91), ['1.26538', '3.85']),\n  ('control: dollar cad', ('USDCAD', '1.3577', '5.30', '4.75', 182), ['1.35359', '-41.12']),\n  ('control: euro franc', ('EURCHF', '0.9512', '3.75', '1.50', 7), ['0.95078', '-4.16'])],\n [('regression jpy-pip-exponent 1', ('AUDJPY', '54.4548', '0.49', '4.06', 91), ['54.947', '49.17']),\n  ('regression jpy-pip-exponent 2', ('AUDJPY', '5.9212', '0.74', '1.63', 182), ['5.948', '2.68']),\n  ('control: aussie yen', ('AUDJPY', '98.765', '4.35', '0.10', 30), ['98.421', '-34.37']),\n  ('control: dollar cad', ('USDCAD', '1.3577', '5.30', '4.75', 182), ['1.35359', '-41.12']),\n  ('control: euro franc', ('EURCHF', '0.9512', '3.75', '1.50', 7), ['0.95078', '-4.16']),\n  ('control: euro dollar year', ('EURUSD', '1.0800', '3.60', '5.40', 360), ['1.09876', '187.64'])],\n [('regression jpy-pip-exponent 1', ('GBPJPY', '137.7426', '3.56', '5.48', 1), ['137.750', '0.75']),\n  ('regression jpy-pip-exponent 2', ('GBPJPY', '5.4304', '2.54', '5.76', 365), ['5.605', '17.48']),\n  ('control: euro dollar year', ('EURUSD', '1.0800', '3.60', '5.40', 360), ['1.09876', '187.64']),\n  ('control: dollar yen half year', ('USDJPY', '150.00', '5.00', '0.00', 180), ['146.341', '-365.85']),\n  ('control: sterling dollar', ('GBPUSD', '1.2650', '5.25', '5.30', 91), ['1.26538', '3.85']),\n  ('control: aussie yen', ('AUDJPY', '98.765', '4.35', '0.10', 30), ['98.421', '-34.37'])],\n [('regression jpy-pip-exponent 1', ('USDJPY', '99.9582', '4.97', '2.67', 91), ['99.384', '-57.39']),\n  ('regression jpy-pip-exponent 2', ('GBPJPY', '63.7106', '6.59', '7.11', 91), ['63.807', '9.67']),\n  ('control: aussie yen', ('AUDJPY', '98.765', '4.35', '0.10', 30), ['98.421', '-34.37']),\n  ('control: dollar cad', ('USDCAD', '1.3577', '5.30', '4.75', 182), ['1.35359', '-41.12']),\n  ('control: euro franc', ('EURCHF', '0.9512', '3.75', '1.50', 7), ['0.95078', '-4.16']),\n  ('control: euro dollar year', ('EURUSD', '1.0800', '3.60', '5.40', 360), ['1.09876', '187.64'])],\n [('regression jpy-pip-exponent 1', ('AUDJPY', '25.5690', '7.90', '3.42', 182), ['25.025', '-54.37']),\n  ('regression jpy-pip-exponent 2', ('GBPJPY', '111.1109', '0.75', '7.67', 30), ['111.752', '64.13']),\n  ('control: euro dollar year', ('EURUSD', '1.0800', '3.60', '5.40', 360), ['1.09876', '187.64']),\n  ('control: dollar yen half year', ('USDJPY', '150.00', '5.00', '0.00', 180), ['146.341', '-365.85']),\n  ('control: sterling dollar', ('GBPUSD', '1.2650', '5.25', '5.30', 91), ['1.26538', '3.85']),\n  ('control: aussie yen', ('AUDJPY', '98.765', '4.35', '0.10', 30), ['98.421', '-34.37'])]]\nfor label, args, expected in cases[N - 1]:\n    check(label, solve(*args), expected)\nprint(json.dumps({\"observations\": observations, \"passed\": all(x[\"passed\"] for x in observations)}, ensure_ascii=False))\nraise SystemExit(0 if all(x[\"passed\"] for x in observations) else 1)\n"},"fixed":{"sha256":"d1b66338abe3f26f5969741952238eebe6b14b8cc984c025a2762c1cf32b0012","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nfrom decimal import Decimal, ROUND_HALF_EVEN, ROUND_HALF_UP, ROUND_FLOOR, ROUND_CEILING, ROUND_DOWN, ROUND_UP, ROUND_HALF_DOWN\nN = 1\nobservations = []\ndef solve(pair, spot, base_pct, quote_pct, days):\n    basis = {'USD': 360, 'EUR': 360, 'JPY': 360, 'CHF': 360, 'GBP': 365, 'AUD': 365, 'CAD': 365}\n    base, quote = pair[:3], pair[3:]\n    S = Decimal(spot)\n    rb, rq = Decimal(base_pct) / 100, Decimal(quote_pct) / 100\n    F = S * (1 + rq * days / basis[quote]) / (1 + rb * days / basis[base])\n    pe = 2 if quote == 'JPY' else 4\n    pts = ((F - S) * Decimal(10) ** pe).quantize(Decimal('0.01'), rounding=ROUND_HALF_EVEN)\n    return [format(F.quantize(Decimal(1).scaleb(-(pe + 1)), rounding=ROUND_HALF_EVEN), 'f'), format(pts, 'f')]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncases = [[('regression jpy-pip-exponent 1', ('USDJPY', '150.00', '5.00', '0.00', 180), ['146.341', '-365.85']),\n  ('regression jpy-pip-exponent 2', ('AUDJPY', '98.765', '4.35', '0.10', 30), ['98.421', '-34.37']),\n  ('control: euro dollar year', ('EURUSD', '1.0800', '3.60', '5.40', 360), ['1.09876', '187.64']),\n  ('control: sterling dollar', ('GBPUSD', '1.2650', '5.25', '5.30', 91), ['1.26538', '3.85']),\n  ('control: dollar cad', ('USDCAD', '1.3577', '5.30', '4.75', 182), ['1.35359', '-41.12']),\n  ('control: euro franc', ('EURCHF', '0.9512', '3.75', '1.50', 7), ['0.95078', '-4.16'])],\n [('regression jpy-pip-exponent 1', ('AUDJPY', '54.4548', '0.49', '4.06', 91), ['54.947', '49.17']),\n  ('regression jpy-pip-exponent 2', ('AUDJPY', '5.9212', '0.74', '1.63', 182), ['5.948', '2.68']),\n  ('control: aussie yen', ('AUDJPY', '98.765', '4.35', '0.10', 30), ['98.421', '-34.37']),\n  ('control: dollar cad', ('USDCAD', '1.3577', '5.30', '4.75', 182), ['1.35359', '-41.12']),\n  ('control: euro franc', ('EURCHF', '0.9512', '3.75', '1.50', 7), ['0.95078', '-4.16']),\n  ('control: euro dollar year', ('EURUSD', '1.0800', '3.60', '5.40', 360), ['1.09876', '187.64'])],\n [('regression jpy-pip-exponent 1', ('GBPJPY', '137.7426', '3.56', '5.48', 1), ['137.750', '0.75']),\n  ('regression jpy-pip-exponent 2', ('GBPJPY', '5.4304', '2.54', '5.76', 365), ['5.605', '17.48']),\n  ('control: euro dollar year', ('EURUSD', '1.0800', '3.60', '5.40', 360), ['1.09876', '187.64']),\n  ('control: dollar yen half year', ('USDJPY', '150.00', '5.00', '0.00', 180), ['146.341', '-365.85']),\n  ('control: sterling dollar', ('GBPUSD', '1.2650', '5.25', '5.30', 91), ['1.26538', '3.85']),\n  ('control: aussie yen', ('AUDJPY', '98.765', '4.35', '0.10', 30), ['98.421', '-34.37'])],\n [('regression jpy-pip-exponent 1', ('USDJPY', '99.9582', '4.97', '2.67', 91), ['99.384', '-57.39']),\n  ('regression jpy-pip-exponent 2', ('GBPJPY', '63.7106', '6.59', '7.11', 91), ['63.807', '9.67']),\n  ('control: aussie yen', ('AUDJPY', '98.765', '4.35', '0.10', 30), ['98.421', '-34.37']),\n  ('control: dollar cad', ('USDCAD', '1.3577', '5.30', '4.75', 182), ['1.35359', '-41.12']),\n  ('control: euro franc', ('EURCHF', '0.9512', '3.75', '1.50', 7), ['0.95078', '-4.16']),\n  ('control: euro dollar year', ('EURUSD', '1.0800', '3.60', '5.40', 360), ['1.09876', '187.64'])],\n [('regression jpy-pip-exponent 1', ('AUDJPY', '25.5690', '7.90', '3.42', 182), ['25.025', '-54.37']),\n  ('regression jpy-pip-exponent 2', ('GBPJPY', '111.1109', '0.75', '7.67', 30), ['111.752', '64.13']),\n  ('control: euro dollar year', ('EURUSD', '1.0800', '3.60', '5.40', 360), ['1.09876', '187.64']),\n  ('control: dollar yen half year', ('USDJPY', '150.00', '5.00', '0.00', 180), ['146.341', '-365.85']),\n  ('control: sterling dollar', ('GBPUSD', '1.2650', '5.25', '5.30', 91), ['1.26538', '3.85']),\n  ('control: aussie yen', ('AUDJPY', '98.765', '4.35', '0.10', 30), ['98.421', '-34.37'])]]\nfor label, args, expected in cases[N - 1]:\n    check(label, solve(*args), expected)\nprint(json.dumps({\"observations\": observations, \"passed\": all(x[\"passed\"] for x in observations)}, ensure_ascii=False))\nraise SystemExit(0 if all(x[\"passed\"] for x in observations) else 1)\n"}},"limitations":"A deterministic, bounded teaching model with a stipulated toy contract; it makes no claim of conformance to any real regulation, standard, or institution's rules. This reproducer isolates one failure mechanism. Results cover the supplied fixtures. Variants within a family share a test contract and should remain grouped when constructing evaluation splits. Related mechanisms with a shared evaluation_group must also remain together; these controlled models are not independent production incidents.","method":"Deterministic executable model with adversarial boundary fixtures.","provenance":{"created_by":"Failure Map","dependencies":"Python standard library","family":"w2-currency_rounding_and_fx_conversion-interest-parity-forward-jpy-pip-exponent","generated_at":"2026-09-29T14:47:03.721728+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Currency amounts must be rounded at the right stage and in the right unit, or ledgers, quotes and settlements drift by minor units.","repair":"Use a 2-decimal pip when the quote currency is JPY.","root_cause":"The pip exponent is fixed at 4 for every pair.","sha256":"35aefa6550eddd5900c1c54f226242638349b02b3914fb71172f4fe5600aef6c","title":"JPY-quoted forwards use a four-decimal pip · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":41.753,"exit_code":1,"observations":[{"actual":["146.34146","-36585.37"],"check":"regression jpy-pip-exponent 1","expected":["146.341","-365.85"],"passed":false},{"actual":["98.42134","-3436.60"],"check":"regression jpy-pip-exponent 2","expected":["98.421","-34.37"],"passed":false},{"actual":["1.09876","187.64"],"check":"control: euro dollar year","expected":["1.09876","187.64"],"passed":true},{"actual":["1.26538","3.85"],"check":"control: sterling dollar","expected":["1.26538","3.85"],"passed":true},{"actual":["1.35359","-41.12"],"check":"control: dollar cad","expected":["1.35359","-41.12"],"passed":true},{"actual":["0.95078","-4.16"],"check":"control: euro franc","expected":["0.95078","-4.16"],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression jpy-pip-exponent 1\", \"actual\": [\"146.34146\", \"-36585.37\"], \"expected\": [\"146.341\", \"-365.85\"], \"passed\": false}, {\"check\": \"regression jpy-pip-exponent 2\", \"actual\": [\"98.42134\", \"-3436.60\"], \"expected\": [\"98.421\", \"-34.37\"], \"passed\": false}, {\"check\": \"control: euro dollar year\", \"actual\": [\"1.09876\", \"187.64\"], \"expected\": [\"1.09876\", \"187.64\"], \"passed\": true}, {\"check\": \"control: sterling dollar\", \"actual\": [\"1.26538\", \"3.85\"], \"expected\": [\"1.26538\", \"3.85\"], \"passed\": true}, {\"check\": \"control: dollar cad\", \"actual\": [\"1.35359\", \"-41.12\"], \"expected\": [\"1.35359\", \"-41.12\"], \"passed\": true}, {\"check\": \"control: euro franc\", \"actual\": [\"0.95078\", \"-4.16\"], \"expected\": [\"0.95078\", \"-4.16\"], \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":45.131,"exit_code":1,"observations":[{"actual":["146.34146","-36585.37"],"check":"regression jpy-pip-exponent 1","expected":["146.341","-365.85"],"passed":false},{"actual":["98.42134","-3436.60"],"check":"regression jpy-pip-exponent 2","expected":["98.421","-34.37"],"passed":false},{"actual":["1.09876","187.64"],"check":"control: euro dollar year","expected":["1.09876","187.64"],"passed":true},{"actual":["1.26538","3.85"],"check":"control: sterling dollar","expected":["1.26538","3.85"],"passed":true},{"actual":["1.35359","-41.12"],"check":"control: dollar cad","expected":["1.35359","-41.12"],"passed":true},{"actual":["0.95078","-4.16"],"check":"control: euro franc","expected":["0.95078","-4.16"],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression jpy-pip-exponent 1\", \"actual\": [\"146.34146\", \"-36585.37\"], \"expected\": [\"146.341\", \"-365.85\"], \"passed\": false}, {\"check\": \"regression jpy-pip-exponent 2\", \"actual\": [\"98.42134\", \"-3436.60\"], \"expected\": [\"98.421\", \"-34.37\"], \"passed\": false}, {\"check\": \"control: euro dollar year\", \"actual\": [\"1.09876\", \"187.64\"], \"expected\": [\"1.09876\", \"187.64\"], \"passed\": true}, {\"check\": \"control: sterling dollar\", \"actual\": [\"1.26538\", \"3.85\"], \"expected\": [\"1.26538\", \"3.85\"], \"passed\": true}, {\"check\": \"control: dollar cad\", \"actual\": [\"1.35359\", \"-41.12\"], \"expected\": [\"1.35359\", \"-41.12\"], \"passed\": true}, {\"check\": \"control: euro franc\", \"actual\": [\"0.95078\", \"-4.16\"], \"expected\": [\"0.95078\", \"-4.16\"], \"passed\": true}], \"passed\": false}\n"},"fixed":{"elapsed_ms":44.612,"exit_code":0,"observations":[{"actual":["146.341","-365.85"],"check":"regression jpy-pip-exponent 1","expected":["146.341","-365.85"],"passed":true},{"actual":["98.421","-34.37"],"check":"regression jpy-pip-exponent 2","expected":["98.421","-34.37"],"passed":true},{"actual":["1.09876","187.64"],"check":"control: euro dollar year","expected":["1.09876","187.64"],"passed":true},{"actual":["1.26538","3.85"],"check":"control: sterling dollar","expected":["1.26538","3.85"],"passed":true},{"actual":["1.35359","-41.12"],"check":"control: dollar cad","expected":["1.35359","-41.12"],"passed":true},{"actual":["0.95078","-4.16"],"check":"control: euro franc","expected":["0.95078","-4.16"],"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression jpy-pip-exponent 1\", \"actual\": [\"146.341\", \"-365.85\"], \"expected\": [\"146.341\", \"-365.85\"], \"passed\": true}, {\"check\": \"regression jpy-pip-exponent 2\", \"actual\": [\"98.421\", \"-34.37\"], \"expected\": [\"98.421\", \"-34.37\"], \"passed\": true}, {\"check\": \"control: euro dollar year\", \"actual\": [\"1.09876\", \"187.64\"], \"expected\": [\"1.09876\", \"187.64\"], \"passed\": true}, {\"check\": \"control: sterling dollar\", \"actual\": [\"1.26538\", \"3.85\"], \"expected\": [\"1.26538\", \"3.85\"], \"passed\": true}, {\"check\": \"control: dollar cad\", \"actual\": [\"1.35359\", \"-41.12\"], \"expected\": [\"1.35359\", \"-41.12\"], \"passed\": true}, {\"check\": \"control: euro franc\", \"actual\": [\"0.95078\", \"-4.16\"], \"expected\": [\"0.95078\", \"-4.16\"], \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}