Module:Sandbox/Skratata69

local p = {} -- Define a variable to hold externally accessible functions

-- Function to calculate CAGR function p.calculate_cagr(frame) local start_date = frame.args[1] -- Start date in YYYY-MM-DD format local end_date = frame.args[2]  -- End date in YYYY-MM-DD format local initial_value = tonumber(frame.args[3]) -- Initial value local final_value = tonumber(frame.args[4])  -- Final value

-- Convert dates to timestamps local start_timestamp = os.time{year=tonumber(start_date:sub(1,4)), month=tonumber(start_date:sub(6,7)), day=tonumber(start_date:sub(9,10))} local end_timestamp = os.time{year=tonumber(end_date:sub(1,4)), month=tonumber(end_date:sub(6,7)), day=tonumber(end_date:sub(9,10))} -- Calculate duration in years local duration_years = (end_timestamp - start_timestamp) / (60 * 60 * 24 * 365) -- If duration is less than one year, return error message if duration_years < 1 then return "Error: Duration less than one year" end -- Calculate CAGR local cagr = (final_value / initial_value)^(1 / duration_years) - 1 return string.format("CAGR: %.2f%%", cagr * 100) end

return p -- Return the variable containing the functions