Class StateLiveAdapter

Live trading state adapter with pluggable storage backend.

Features:

  • Adapter pattern for swappable state instance implementations
  • Default backend: StatePersistInstance (file-system backed, survives restarts)
  • Alternative backends: StateLocalInstance, StateDummyInstance
  • Convenience methods: useLocal(), usePersist(), useDummy(), useStateAdapter()
  • Memoized instances per (signalId, bucketName) pair; cleared via disposeSignal() from StateAdapter

Primary use case — LLM-driven capitulation rule: Profitable trades endure -0.5–2.5% drawdown and still reach peak 2–3%+. SL trades never go positive (Feb25) or show peak < 0.15% (Feb08, Feb13). Rule: if position open >= N minutes and peakPercent < threshold (e.g. 0.3%), the LLM thesis was not confirmed by market — exit immediately. State persists { peakPercent, minutesOpen } per signal across process restarts.

Implements

  • TStateAdapter

Constructors

Properties

clear: () => void

Clears the memoized instance cache. Call this when process.cwd() changes between strategy iterations so new instances are created with the updated base path.

disposeSignal: (signalId: string) => void

Disposes all memoized instances for the given signalId. Called by StateAdapter when a signal is cancelled or closed.

Type declaration

    • (signalId: string): void
    • Parameters

      • signalId: string

        Signal identifier to dispose

      Returns void

getState: <Value extends object = object>(
    dto: { bucketName: string; initialValue: object; signalId: string },
) => Promise<Value>

Read the current state value for a signal.

Type declaration

    • <Value extends object = object>(
          dto: { bucketName: string; initialValue: object; signalId: string },
      ): Promise<Value>
    • Type Parameters

      • Value extends object = object

      Parameters

      • dto: { bucketName: string; initialValue: object; signalId: string }
        • bucketName: string

          Bucket name

        • initialValue: object

          Default value when no persisted state exists

        • signalId: string

          Signal identifier

      Returns Promise<Value>

      Current state value

setState: <Value extends object = object>(
    dispatch: Value | Dispatch<Value>,
    dto: { bucketName: string; initialValue: object; signalId: string },
) => Promise<Value>

Update the state value for a signal.

Type declaration

    • <Value extends object = object>(
          dispatch: Value | Dispatch<Value>,
          dto: { bucketName: string; initialValue: object; signalId: string },
      ): Promise<Value>
    • Type Parameters

      • Value extends object = object

      Parameters

      • dispatch: Value | Dispatch<Value>

        New value or updater function receiving current value

      • dto: { bucketName: string; initialValue: object; signalId: string }
        • bucketName: string

          Bucket name

        • initialValue: object

          Default value when no persisted state exists

        • signalId: string

          Signal identifier

      Returns Promise<Value>

      Updated state value

useDummy: () => void

Switches to dummy adapter that discards all writes.

useLocal: () => void

Switches to in-memory adapter. All data lives in process memory only.

usePersist: () => void

Switches to file-system backed adapter (default). Data is persisted to disk via PersistStateAdapter.

useStateAdapter: (Ctor: TStateInstanceCtor) => void

Switches to a custom state adapter implementation.

Type declaration