/** * Compute simple period returns from a level series. * For each i>0: returns[i] = source[i]/source[i-1] - 1 when both values are finite and previous != 0. * The first element is always NaN. Invalid or non-finite inputs produce NaN at that position. * @param source Input level series (prices/equity) * @returns Float32Array of simple returns (same length as `source`) */ export declare function returns(source: ArrayLike): Float32Array; /** * Compute log returns from a level series. * For each i>0: logreturns[i] = log(source[i]/source[i-1]) when both values are finite and previous>0. * The first element is always NaN. Invalid or non-positive previous values yield NaN. * @param source Input level series (prices/equity) * @returns Float32Array of log returns (same length as `source`) */ export declare function logreturns(source: ArrayLike): Float32Array; /** * Compute cumulative compound returns from a returns series, skipping NaNs. * Cumulative return at i is prod_{j<=i, r_j finite} (1+r_j) - 1; NaN inputs leave an output NaN at that position. * @param returns Simple returns series * @returns Float64Array of cumulative returns */ export declare function cumreturns(returns: ArrayLike): Float64Array; /** * Compute the compound annual growth rate (CAGR) from a returns series. * Ignores NaNs. `freq` is the number of periods per year (default 252). * @param returns Simple returns series * @param freq Periods per year (default 252) * @returns CAGR as a number, or NaN when insufficient data */ export declare function cagr(returns: ArrayLike, freq?: number): number; /** * Aggregate irregular (event-aligned) returns into calendar-day returns. * * The function groups `returnsArr` by calendar day (optionally shifted by `tzOffsetMinutes`), * compounds returns within each day (prod(1+r)-1) and returns a continuous range of days * from the minimum to the maximum observed day. Missing days are filled with zero returns. * * @param tsMs Array of timestamps (ms since epoch) aligned to `returnsArr` * @param returnsArr Array of simple returns aligned to `tsMs` * @param tzOffsetMinutes Optional timezone offset in minutes (default 0, UTC) * @returns Object { days: number[], dailyReturns: Float32Array } */ export declare function dailyreturns(tsMs: ArrayLike, returnsArr: ArrayLike, tzOffsetMinutes?: number): { days: number[]; dailyReturns: Float32Array; };