{"name":"Monte Carlo — prosteOKI","description":"Edukacyjna symulacja GBM, bez podatków, kosztów i reguł OKI. To nie prognoza.","version":"1.0.0","fields":{"initial":{"type":"number","default":100000,"minimum":0,"maximum":100000000,"unit":"PLN","label":"Kapitał początkowy"},"monthly":{"type":"number","default":2000,"minimum":0,"maximum":1000000,"unit":"PLN","label":"Miesięczna wpłata"},"years":{"type":"integer","default":5,"minimum":5,"maximum":40,"unit":"lat","label":"Okres inwestycji"},"return":{"type":"number","default":0.07,"minimum":-0.5,"maximum":0.5,"unit":"ułamek roczny","label":"Oczekiwany roczny zwrot"},"volatility":{"type":"number","default":0.18,"minimum":0,"maximum":1,"unit":"ułamek roczny","label":"Roczna zmienność"},"inflation":{"type":"number","default":0.03,"minimum":-0.1,"maximum":0.3,"unit":"ułamek roczny","label":"Inflacja roczna"},"simulations":{"type":"integer","default":200,"minimum":20,"maximum":200,"unit":"scenariuszy","label":"Liczba symulacji"},"goal":{"type":"number","default":1000000,"minimum":0,"maximum":10000000000,"unit":"PLN nominalnie","label":"Cel na koniec okresu"}},"limits":{"maxMonthlySteps":12000,"note":"simulations × years × 12 ≤ limit; dla 40 lat najwyżej 25 scenariuszy."},"calculationEndpoint":"https://prosteoki-monte-carlo.marcin-649.workers.dev/api/calculate","responseSchema":{"type":"object","additionalProperties":false,"required":["version","calculationId","timestamp","computationMs","simulationsExecuted","parameters","results","resultSignature","resultToken"],"properties":{"version":{"type":"string"},"calculationId":{"type":"string","format":"uuid"},"timestamp":{"type":"string","format":"date-time"},"computationMs":{"type":"number","minimum":0},"simulationsExecuted":{"type":"integer","minimum":20},"parameters":{"type":"object","additionalProperties":false,"required":["initial","monthly","years","return","volatility","inflation","simulations","goal"],"properties":{"initial":{"type":"number","default":100000,"minimum":0,"maximum":100000000,"description":"Kapitał początkowy (PLN)"},"monthly":{"type":"number","default":2000,"minimum":0,"maximum":1000000,"description":"Miesięczna wpłata (PLN)"},"years":{"type":"integer","default":5,"minimum":5,"maximum":40,"description":"Okres inwestycji (lat)"},"return":{"type":"number","default":0.07,"minimum":-0.5,"maximum":0.5,"description":"Oczekiwany roczny zwrot (ułamek roczny)"},"volatility":{"type":"number","default":0.18,"minimum":0,"maximum":1,"description":"Roczna zmienność (ułamek roczny)"},"inflation":{"type":"number","default":0.03,"minimum":-0.1,"maximum":0.3,"description":"Inflacja roczna (ułamek roczny)"},"simulations":{"type":"integer","default":200,"minimum":20,"maximum":200,"description":"Liczba symulacji (scenariuszy)"},"goal":{"type":"number","default":1000000,"minimum":0,"maximum":10000000000,"description":"Cel na koniec okresu (PLN nominalnie)"}}},"results":{"type":"object","additionalProperties":false,"required":["totalContributions","nominal","real","probabilityBelowContributions","probabilityGoal","annual","histogram"],"properties":{"totalContributions":{"type":"number"},"nominal":{"type":"object","additionalProperties":false,"required":["p5","p25","p50","p75","p95"],"properties":{"p5":{"type":"number","minimum":0},"p25":{"type":"number","minimum":0},"p50":{"type":"number","minimum":0},"p75":{"type":"number","minimum":0},"p95":{"type":"number","minimum":0}}},"real":{"type":"object","additionalProperties":false,"required":["p5","p25","p50","p75","p95"],"properties":{"p5":{"type":"number","minimum":0},"p25":{"type":"number","minimum":0},"p50":{"type":"number","minimum":0},"p75":{"type":"number","minimum":0},"p95":{"type":"number","minimum":0}}},"probabilityBelowContributions":{"type":"number","minimum":0,"maximum":1},"probabilityGoal":{"type":"number","minimum":0,"maximum":1},"annual":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["year","nominal","real"],"properties":{"year":{"type":"integer"},"nominal":{"type":"object","additionalProperties":false,"required":["p5","p25","p50","p75","p95"],"properties":{"p5":{"type":"number","minimum":0},"p25":{"type":"number","minimum":0},"p50":{"type":"number","minimum":0},"p75":{"type":"number","minimum":0},"p95":{"type":"number","minimum":0}}},"real":{"type":"object","additionalProperties":false,"required":["p5","p25","p50","p75","p95"],"properties":{"p5":{"type":"number","minimum":0},"p25":{"type":"number","minimum":0},"p50":{"type":"number","minimum":0},"p75":{"type":"number","minimum":0},"p95":{"type":"number","minimum":0}}}}}},"histogram":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["lower","upper","count"],"properties":{"lower":{"type":"number"},"upper":{"type":"number"},"count":{"type":"integer","minimum":0}}}}}},"resultSignature":{"type":"string"},"resultToken":{"type":"string"}}},"verification":{"endpoint":"https://prosteoki-monte-carlo.marcin-649.workers.dev/api/verify","parameter":"token","algorithm":"HMAC-SHA256","format":"base64url(gzip(JSON payload)).base64url(HMAC of encoded payload)","coverage":"Wszystkie pola odpowiedzi poza resultSignature i resultToken. Token nie jest szyfrowany i nie wygasa; rotacja sekretu unieważnia stare podpisy."},"exampleUrl":"https://prosteoki-monte-carlo.marcin-649.workers.dev/api/calculate?initial=100000&monthly=2000&years=5&return=0.07&volatility=0.18&inflation=0.03&simulations=200&goal=1000000","model":"return = oczekiwany efektywny zwrot roczny. Miesięczny log-zwrot: (ln(1+return)−volatility²/2)/12 + volatility/√12 × Z; Z~N(0,1). Wpłaty na koniec miesiąca. Cel nominalny na końcu okresu. Realne wartości dzielone przez (1+inflation)^years. Percentyle: interpolacja liniowa po (n−1)p."}