> ## Documentation Index
> Fetch the complete documentation index at: https://docs.coinversa.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Wallet monthly PnL Sharpe

> Annualized gross realized-PnL Sharpe proxy: sqrt(365) * mean daily PnL / sample standard deviation, with risk-free return zero. Not equity-normalized portfolio Sharpe; excludes fees, funding and unrealized PnL. Days without fills count as zero. Only completed UTC days are included; today is excluded. No equity eligibility filter applies to wallet routes. Returns exactly three buckets, newest first. useCalendarMonths defaults to false: the last 30 completed days, the previous 30, and the previous 30 (90 days total). True uses the current partial UTC month and two preceding full UTC months, capped at 93 days and excluding all earlier months. On the first of a month the current bucket is empty with a null score. Each bucket exposes its actual dates, day count and asOf.



## OpenAPI

````yaml /api-reference/openapi.json get /api/public/v1/pulse/trader/{address}/sharpe/monthly
openapi: 3.1.0
info:
  title: coinversa-api
  version: 0.1.0
servers:
  - url: https://api.coinversa.ai
    description: Production
security: []
paths:
  /api/public/v1/pulse/trader/{address}/sharpe/monthly:
    get:
      summary: Wallet monthly PnL Sharpe
      description: >-
        Annualized gross realized-PnL Sharpe proxy: sqrt(365) * mean daily PnL /
        sample standard deviation, with risk-free return zero. Not
        equity-normalized portfolio Sharpe; excludes fees, funding and
        unrealized PnL. Days without fills count as zero. Only completed UTC
        days are included; today is excluded. No equity eligibility filter
        applies to wallet routes. Returns exactly three buckets, newest first.
        useCalendarMonths defaults to false: the last 30 completed days, the
        previous 30, and the previous 30 (90 days total). True uses the current
        partial UTC month and two preceding full UTC months, capped at 93 days
        and excluding all earlier months. On the first of a month the current
        bucket is empty with a null score. Each bucket exposes its actual dates,
        day count and asOf.
      operationId: get-api-public-v1-pulse-trader-by-address-sharpe-monthly
      parameters:
        - description: Hyperliquid wallet address.
          in: path
          name: address
          required: true
          schema:
            description: Hyperliquid wallet address.
            type: string
        - description: >-
            False: three consecutive 30-day UTC buckets, newest first. True:
            completed days of the current UTC month plus the two preceding full
            calendar months, newest first; at most 93 days, with no earlier
            months included. Today is always excluded.
          explode: false
          in: query
          name: useCalendarMonths
          schema:
            default: false
            description: >-
              False: three consecutive 30-day UTC buckets, newest first. True:
              completed days of the current UTC month plus the two preceding
              full calendar months, newest first; at most 93 days, with no
              earlier months included. Today is always excluded.
            type: boolean
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TraderSharpeMonthlyBody'
          description: OK
          headers:
            X-Billing-Grace-Expires:
              $ref: '#/components/headers/X-Billing-Grace-Expires'
            X-Billing-State:
              $ref: '#/components/headers/X-Billing-State'
            X-RateLimit-Daily:
              $ref: '#/components/headers/X-RateLimit-Daily'
            X-RateLimit-Daily-Reset:
              $ref: '#/components/headers/X-RateLimit-Daily-Reset'
            X-RateLimit-Monthly:
              $ref: '#/components/headers/X-RateLimit-Monthly'
            X-RateLimit-Monthly-Reset:
              $ref: '#/components/headers/X-RateLimit-Monthly-Reset'
            X-RateLimit-Next:
              $ref: '#/components/headers/X-RateLimit-Next'
            X-RateLimit-Remaining:
              $ref: '#/components/headers/X-RateLimit-Remaining'
            X-RateLimit-Reset:
              $ref: '#/components/headers/X-RateLimit-Reset'
            X-RateLimit-Route:
              $ref: '#/components/headers/X-RateLimit-Route'
            X-RateLimit-Scope:
              $ref: '#/components/headers/X-RateLimit-Scope'
            X-RateLimit-Tier:
              $ref: '#/components/headers/X-RateLimit-Tier'
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
        '400':
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/APIError'
          description: Bad Request
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
        '403':
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/APIError'
          description: Forbidden
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
        '404':
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/APIError'
          description: Not Found
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
        '422':
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/APIError'
          description: Unprocessable Entity
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
        '429':
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/APIError'
          description: Too Many Requests
          headers:
            Retry-After:
              $ref: '#/components/headers/Retry-After'
            X-Billing-Grace-Expires:
              $ref: '#/components/headers/X-Billing-Grace-Expires'
            X-Billing-State:
              $ref: '#/components/headers/X-Billing-State'
            X-RateLimit-Daily:
              $ref: '#/components/headers/X-RateLimit-Daily'
            X-RateLimit-Daily-Reset:
              $ref: '#/components/headers/X-RateLimit-Daily-Reset'
            X-RateLimit-Monthly:
              $ref: '#/components/headers/X-RateLimit-Monthly'
            X-RateLimit-Monthly-Reset:
              $ref: '#/components/headers/X-RateLimit-Monthly-Reset'
            X-RateLimit-Next:
              $ref: '#/components/headers/X-RateLimit-Next'
            X-RateLimit-Remaining:
              $ref: '#/components/headers/X-RateLimit-Remaining'
            X-RateLimit-Reset:
              $ref: '#/components/headers/X-RateLimit-Reset'
            X-RateLimit-Route:
              $ref: '#/components/headers/X-RateLimit-Route'
            X-RateLimit-Scope:
              $ref: '#/components/headers/X-RateLimit-Scope'
            X-RateLimit-Tier:
              $ref: '#/components/headers/X-RateLimit-Tier'
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
        '500':
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/APIError'
          description: Internal Server Error
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
        '504':
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/APIError'
          description: Gateway Timeout
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
      security:
        - apiKey: []
components:
  schemas:
    TraderSharpeMonthlyBody:
      additionalProperties: false
      properties:
        $schema:
          description: A URL to the JSON Schema for this object.
          examples:
            - https://api.coinversa.ai/schemas/TraderSharpeMonthlyBody.json
          format: uri
          readOnly: true
          type: string
        asOf:
          description: Midnight UTC today; the current UTC day is excluded.
          format: date-time
          type: string
        buckets:
          description: >-
            Exactly three buckets, newest first. On the first of a UTC month the
            current-month bucket has zero days, zero statistics, and a null
            Sharpe ratio.
          items:
            $ref: '#/components/schemas/TraderSharpeBody'
          type:
            - array
            - 'null'
        calculatedAt:
          format: date-time
          type: string
        useCalendarMonths:
          type: boolean
        wallet:
          type: string
      required:
        - wallet
        - useCalendarMonths
        - calculatedAt
        - asOf
        - buckets
      type: object
    APIError:
      additionalProperties: false
      properties:
        $schema:
          description: A URL to the JSON Schema for this object.
          examples:
            - https://api.coinversa.ai/schemas/APIError.json
          format: uri
          readOnly: true
          type: string
        code:
          description: Machine-readable error code; retained for compatibility.
          type: string
        current_tier:
          description: Caller's effective tier
          type: string
        detail:
          description: >-
            A human-readable explanation specific to this occurrence of the
            problem.
          examples:
            - Property foo is required but is missing.
          type: string
        errors:
          description: Optional list of individual error details
          items:
            $ref: '#/components/schemas/ErrorDetail'
          type:
            - array
            - 'null'
        instance:
          description: >-
            A URI reference that identifies the specific occurrence of the
            problem.
          examples:
            - https://example.com/error-log/abc123
          format: uri
          type: string
        reason:
          description: >-
            More specific recovery reason when available: missing_api_key,
            invalid_api_key, insufficient_tier, invalid_parameters, or
            account_suspended. Account suspensions return 403 with code
            ACCOUNT_SUSPENDED; contact support rather than retrying or
            upgrading.
          type: string
        required_tier:
          description: Minimum tier for this operation
          type: string
        status:
          description: HTTP status code
          examples:
            - 400
          format: int64
          type: integer
        title:
          description: >-
            A short, human-readable summary of the problem type. This value
            should not change between occurrences of the error.
          examples:
            - Bad Request
          type: string
        type:
          default: about:blank
          description: A URI reference to human-readable documentation for the error.
          examples:
            - https://example.com/errors/example
          format: uri
          type: string
        upgrade_url:
          description: Where to upgrade
          type: string
      type: object
    TraderSharpeBody:
      additionalProperties: false
      properties:
        $schema:
          description: A URL to the JSON Schema for this object.
          examples:
            - https://api.coinversa.ai/schemas/TraderSharpeBody.json
          format: uri
          readOnly: true
          type: string
        annualizedPnlSharpe:
          description: Null with fewer than two completed days or zero daily PnL variance.
          format: double
          type:
            - number
            - 'null'
        asOf:
          description: >-
            Midnight UTC at the exclusive end of the data window; not the
            calculation time.
          format: date-time
          type: string
        calculatedAt:
          format: date-time
          type: string
        days:
          format: int32
          type: integer
        endDayExclusive:
          description: Exclusive UTC date.
          type: string
        meanDailyPnl:
          format: double
          type: number
        realizedPnl:
          format: double
          type: number
        startDay:
          description: Inclusive UTC date.
          type: string
        stdDailyPnl:
          format: double
          type: number
        trades:
          format: int64
          type: integer
        wallet:
          type: string
      required:
        - wallet
        - annualizedPnlSharpe
        - realizedPnl
        - trades
        - meanDailyPnl
        - stdDailyPnl
        - days
        - startDay
        - endDayExclusive
        - calculatedAt
        - asOf
      type: object
    ErrorDetail:
      additionalProperties: false
      properties:
        location:
          description: >-
            Where the error occurred, e.g. 'body.items[3].tags' or
            'path.thing-id'
          type: string
        message:
          description: Error message text
          type: string
        value:
          description: The value at the given location
      type: object
  headers:
    X-Billing-Grace-Expires:
      description: RFC3339 time when billing grace expires, when applicable.
      schema:
        type: string
    X-Billing-State:
      description: Billing grace state, when applicable.
      schema:
        type: string
    X-RateLimit-Daily:
      description: >-
        Daily account allowance reported by the existing counter check, clamped
        at zero. Best-effort; present only for a capped tier that reaches the
        quota check.
      schema:
        type: string
    X-RateLimit-Daily-Reset:
      description: >-
        Unix seconds (UTC) after the selected daily quota bucket expires. Not a
        source-data timestamp.
      schema:
        type: string
    X-RateLimit-Monthly:
      description: >-
        Monthly account allowance reported by the existing counter check,
        clamped at zero. Best-effort; present only for a capped tier that
        reaches the quota check.
      schema:
        type: string
    X-RateLimit-Monthly-Reset:
      description: >-
        Unix seconds (UTC) after the selected monthly quota bucket expires.
        Follows the existing billing anchor.
      schema:
        type: string
    X-RateLimit-Next:
      description: >-
        Legacy Go duration string until the next token is available across the
        checked buckets; not the daily/monthly reset.
      schema:
        type: string
    X-RateLimit-Remaining:
      description: >-
        Minimum remaining tokens across the checked minute and per-route token
        buckets (account for keys, IP for anonymous requests). Not a
        fixed-window request allowance.
      schema:
        type: string
    X-RateLimit-Reset:
      description: >-
        Unix seconds (UTC), rounded up, when the checked token buckets next
        permit a request, assuming no competing traffic. Not a full bucket
        refill.
      schema:
        type: string
    X-RateLimit-Route:
      description: Remaining tokens in the account's per-route token bucket.
      schema:
        type: string
    X-RateLimit-Scope:
      description: >-
        account for authenticated requests (shared across keys); ip for
        anonymous requests. Describes the limiter scope, not the key's resolved
        tier.
      schema:
        type: string
    X-RateLimit-Tier:
      description: Effective tier for this request; only present after access checks pass.
      schema:
        type: string
    X-Request-ID:
      description: >-
        Server-generated correlation ID. Include it in a support report; not a
        guarantee that an unauthenticated request appears in account usage logs.
      schema:
        type: string
    Retry-After:
      description: >-
        On HTTP 429, whole seconds to wait before retrying, rounded up. Other
        traffic may still consume the available allowance.
      schema:
        type: string
  securitySchemes:
    apiKey:
      description: >-
        Create an API key at https://developers.coinversa.ai/keys. REST limits
        are shared across keys by account; access uses the effective tier of the
        presented key.
      in: header
      name: X-API-Key
      type: apiKey

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.