backtest-kit 1.5.26 → 1.5.27
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/index.cjs +190 -115
- package/build/index.mjs +190 -115
- package/package.json +1 -1
- package/types.d.ts +38 -26
package/package.json
CHANGED
package/types.d.ts
CHANGED
|
@@ -431,6 +431,8 @@ interface IRiskSchema {
|
|
|
431
431
|
interface IRiskParams extends IRiskSchema {
|
|
432
432
|
/** Logger service for debug output */
|
|
433
433
|
logger: ILogger;
|
|
434
|
+
/** True if backtest mode, false if live mode */
|
|
435
|
+
backtest: boolean;
|
|
434
436
|
/**
|
|
435
437
|
* Callback invoked when a signal is rejected due to risk limits.
|
|
436
438
|
* Called before emitting to riskSubject.
|
|
@@ -4803,7 +4805,7 @@ type PartialData = Record<string, IPartialData>;
|
|
|
4803
4805
|
* Utility class for managing partial profit/loss levels persistence.
|
|
4804
4806
|
*
|
|
4805
4807
|
* Features:
|
|
4806
|
-
* - Memoized storage instances per symbol
|
|
4808
|
+
* - Memoized storage instances per symbol:strategyName
|
|
4807
4809
|
* - Custom adapter support
|
|
4808
4810
|
* - Atomic read/write operations for partial data
|
|
4809
4811
|
* - Crash-safe partial state management
|
|
@@ -4829,15 +4831,16 @@ declare class PersistPartialUtils {
|
|
|
4829
4831
|
*/
|
|
4830
4832
|
usePersistPartialAdapter(Ctor: TPersistBaseCtor<string, PartialData>): void;
|
|
4831
4833
|
/**
|
|
4832
|
-
* Reads persisted partial data for a symbol.
|
|
4834
|
+
* Reads persisted partial data for a symbol and strategy.
|
|
4833
4835
|
*
|
|
4834
4836
|
* Called by ClientPartial.waitForInit() to restore state.
|
|
4835
4837
|
* Returns empty object if no partial data exists.
|
|
4836
4838
|
*
|
|
4837
4839
|
* @param symbol - Trading pair symbol
|
|
4840
|
+
* @param strategyName - Strategy identifier
|
|
4838
4841
|
* @returns Promise resolving to partial data record
|
|
4839
4842
|
*/
|
|
4840
|
-
readPartialData: (symbol: string) => Promise<PartialData>;
|
|
4843
|
+
readPartialData: (symbol: string, strategyName: StrategyName) => Promise<PartialData>;
|
|
4841
4844
|
/**
|
|
4842
4845
|
* Writes partial data to disk with atomic file writes.
|
|
4843
4846
|
*
|
|
@@ -4846,9 +4849,10 @@ declare class PersistPartialUtils {
|
|
|
4846
4849
|
*
|
|
4847
4850
|
* @param partialData - Record of signal IDs to partial data
|
|
4848
4851
|
* @param symbol - Trading pair symbol
|
|
4852
|
+
* @param strategyName - Strategy identifier
|
|
4849
4853
|
* @returns Promise that resolves when write is complete
|
|
4850
4854
|
*/
|
|
4851
|
-
writePartialData: (partialData: PartialData, symbol: string) => Promise<void>;
|
|
4855
|
+
writePartialData: (partialData: PartialData, symbol: string, strategyName: StrategyName) => Promise<void>;
|
|
4852
4856
|
}
|
|
4853
4857
|
/**
|
|
4854
4858
|
* Global singleton instance of PersistPartialUtils.
|
|
@@ -4860,10 +4864,10 @@ declare class PersistPartialUtils {
|
|
|
4860
4864
|
* PersistPartialAdapter.usePersistPartialAdapter(RedisPersist);
|
|
4861
4865
|
*
|
|
4862
4866
|
* // Read partial data
|
|
4863
|
-
* const partialData = await PersistPartialAdapter.readPartialData("BTCUSDT");
|
|
4867
|
+
* const partialData = await PersistPartialAdapter.readPartialData("BTCUSDT", "my-strategy");
|
|
4864
4868
|
*
|
|
4865
4869
|
* // Write partial data
|
|
4866
|
-
* await PersistPartialAdapter.writePartialData(partialData, "BTCUSDT");
|
|
4870
|
+
* await PersistPartialAdapter.writePartialData(partialData, "BTCUSDT", "my-strategy");
|
|
4867
4871
|
* ```
|
|
4868
4872
|
*/
|
|
4869
4873
|
declare const PersistPartialAdapter: PersistPartialUtils;
|
|
@@ -8107,6 +8111,7 @@ declare class ClientRisk implements IRisk {
|
|
|
8107
8111
|
private waitForInit;
|
|
8108
8112
|
/**
|
|
8109
8113
|
* Persists current active positions to disk.
|
|
8114
|
+
* Skips in backtest mode.
|
|
8110
8115
|
*/
|
|
8111
8116
|
private _updatePositions;
|
|
8112
8117
|
/**
|
|
@@ -8177,15 +8182,16 @@ declare class RiskConnectionService {
|
|
|
8177
8182
|
private readonly loggerService;
|
|
8178
8183
|
private readonly riskSchemaService;
|
|
8179
8184
|
/**
|
|
8180
|
-
* Retrieves memoized ClientRisk instance for given risk name.
|
|
8185
|
+
* Retrieves memoized ClientRisk instance for given risk name and backtest mode.
|
|
8181
8186
|
*
|
|
8182
8187
|
* Creates ClientRisk on first call, returns cached instance on subsequent calls.
|
|
8183
|
-
* Cache key is riskName string.
|
|
8188
|
+
* Cache key is "riskName:backtest" string to separate live and backtest instances.
|
|
8184
8189
|
*
|
|
8185
8190
|
* @param riskName - Name of registered risk schema
|
|
8191
|
+
* @param backtest - True if backtest mode, false if live mode
|
|
8186
8192
|
* @returns Configured ClientRisk instance
|
|
8187
8193
|
*/
|
|
8188
|
-
getRisk: ((riskName: RiskName) => ClientRisk) & functools_kit.IClearableMemoize<string> & functools_kit.IControlMemoize<string, ClientRisk>;
|
|
8194
|
+
getRisk: ((riskName: RiskName, backtest: boolean) => ClientRisk) & functools_kit.IClearableMemoize<string> & functools_kit.IControlMemoize<string, ClientRisk>;
|
|
8189
8195
|
/**
|
|
8190
8196
|
* Checks if a signal should be allowed based on risk limits.
|
|
8191
8197
|
*
|
|
@@ -8194,40 +8200,43 @@ declare class RiskConnectionService {
|
|
|
8194
8200
|
* ClientRisk will emit riskSubject event via onRejected callback when signal is rejected.
|
|
8195
8201
|
*
|
|
8196
8202
|
* @param params - Risk check arguments (portfolio state, position details)
|
|
8197
|
-
* @param context - Execution context with risk name
|
|
8203
|
+
* @param context - Execution context with risk name and backtest mode
|
|
8198
8204
|
* @returns Promise resolving to risk check result
|
|
8199
8205
|
*/
|
|
8200
8206
|
checkSignal: (params: IRiskCheckArgs, context: {
|
|
8201
8207
|
riskName: RiskName;
|
|
8208
|
+
backtest: boolean;
|
|
8202
8209
|
}) => Promise<boolean>;
|
|
8203
8210
|
/**
|
|
8204
8211
|
* Registers an opened signal with the risk management system.
|
|
8205
8212
|
* Routes to appropriate ClientRisk instance.
|
|
8206
8213
|
*
|
|
8207
8214
|
* @param symbol - Trading pair symbol
|
|
8208
|
-
* @param context - Context information (strategyName, riskName)
|
|
8215
|
+
* @param context - Context information (strategyName, riskName, backtest)
|
|
8209
8216
|
*/
|
|
8210
8217
|
addSignal: (symbol: string, context: {
|
|
8211
8218
|
strategyName: string;
|
|
8212
8219
|
riskName: RiskName;
|
|
8220
|
+
backtest: boolean;
|
|
8213
8221
|
}) => Promise<void>;
|
|
8214
8222
|
/**
|
|
8215
8223
|
* Removes a closed signal from the risk management system.
|
|
8216
8224
|
* Routes to appropriate ClientRisk instance.
|
|
8217
8225
|
*
|
|
8218
8226
|
* @param symbol - Trading pair symbol
|
|
8219
|
-
* @param context - Context information (strategyName, riskName)
|
|
8227
|
+
* @param context - Context information (strategyName, riskName, backtest)
|
|
8220
8228
|
*/
|
|
8221
8229
|
removeSignal: (symbol: string, context: {
|
|
8222
8230
|
strategyName: string;
|
|
8223
8231
|
riskName: RiskName;
|
|
8232
|
+
backtest: boolean;
|
|
8224
8233
|
}) => Promise<void>;
|
|
8225
8234
|
/**
|
|
8226
8235
|
* Clears the cached ClientRisk instance for the given risk name.
|
|
8227
8236
|
*
|
|
8228
8237
|
* @param riskName - Name of the risk schema to clear from cache
|
|
8229
8238
|
*/
|
|
8230
|
-
clear: (riskName?: RiskName) => Promise<void>;
|
|
8239
|
+
clear: (backtest: boolean, riskName?: RiskName) => Promise<void>;
|
|
8231
8240
|
}
|
|
8232
8241
|
|
|
8233
8242
|
/**
|
|
@@ -8270,10 +8279,10 @@ declare class PartialConnectionService implements IPartial {
|
|
|
8270
8279
|
/**
|
|
8271
8280
|
* Memoized factory function for ClientPartial instances.
|
|
8272
8281
|
*
|
|
8273
|
-
* Creates one ClientPartial per signal ID with configured callbacks.
|
|
8282
|
+
* Creates one ClientPartial per signal ID and backtest mode with configured callbacks.
|
|
8274
8283
|
* Instances are cached until clear() is called.
|
|
8275
8284
|
*
|
|
8276
|
-
* Key format: signalId
|
|
8285
|
+
* Key format: "signalId:backtest" or "signalId:live"
|
|
8277
8286
|
* Value: ClientPartial instance with logger and event emitters
|
|
8278
8287
|
*/
|
|
8279
8288
|
private getPartial;
|
|
@@ -8380,7 +8389,7 @@ declare class StrategyConnectionService {
|
|
|
8380
8389
|
*
|
|
8381
8390
|
* @returns Promise resolving to pending signal or null
|
|
8382
8391
|
*/
|
|
8383
|
-
getPendingSignal: (symbol: string, strategyName: StrategyName) => Promise<ISignalRow | null>;
|
|
8392
|
+
getPendingSignal: (backtest: boolean, symbol: string, strategyName: StrategyName) => Promise<ISignalRow | null>;
|
|
8384
8393
|
/**
|
|
8385
8394
|
* Retrieves the stopped state of the strategy.
|
|
8386
8395
|
*
|
|
@@ -8391,7 +8400,7 @@ declare class StrategyConnectionService {
|
|
|
8391
8400
|
* @param strategyName - Name of the strategy
|
|
8392
8401
|
* @returns Promise resolving to true if strategy is stopped, false otherwise
|
|
8393
8402
|
*/
|
|
8394
|
-
getStopped: (symbol: string, strategyName: StrategyName) => Promise<boolean>;
|
|
8403
|
+
getStopped: (backtest: boolean, symbol: string, strategyName: StrategyName) => Promise<boolean>;
|
|
8395
8404
|
/**
|
|
8396
8405
|
* Executes live trading tick for current strategy.
|
|
8397
8406
|
*
|
|
@@ -8425,10 +8434,10 @@ declare class StrategyConnectionService {
|
|
|
8425
8434
|
* @param strategyName - Name of strategy to stop
|
|
8426
8435
|
* @returns Promise that resolves when stop flag is set
|
|
8427
8436
|
*/
|
|
8428
|
-
stop: (ctx: {
|
|
8437
|
+
stop: (backtest: boolean, ctx: {
|
|
8429
8438
|
symbol: string;
|
|
8430
8439
|
strategyName: StrategyName;
|
|
8431
|
-
}
|
|
8440
|
+
}) => Promise<void>;
|
|
8432
8441
|
/**
|
|
8433
8442
|
* Clears the memoized ClientStrategy instance from cache.
|
|
8434
8443
|
*
|
|
@@ -8437,7 +8446,7 @@ declare class StrategyConnectionService {
|
|
|
8437
8446
|
*
|
|
8438
8447
|
* @param ctx - Optional context with symbol and strategyName (clears all if not provided)
|
|
8439
8448
|
*/
|
|
8440
|
-
clear: (ctx?: {
|
|
8449
|
+
clear: (backtest: boolean, ctx?: {
|
|
8441
8450
|
symbol: string;
|
|
8442
8451
|
strategyName: StrategyName;
|
|
8443
8452
|
}) => Promise<void>;
|
|
@@ -8705,7 +8714,7 @@ declare class StrategyCoreService {
|
|
|
8705
8714
|
* @param strategyName - Name of the strategy
|
|
8706
8715
|
* @returns Promise resolving to pending signal or null
|
|
8707
8716
|
*/
|
|
8708
|
-
getPendingSignal: (symbol: string, strategyName: StrategyName) => Promise<ISignalRow | null>;
|
|
8717
|
+
getPendingSignal: (backtest: boolean, symbol: string, strategyName: StrategyName) => Promise<ISignalRow | null>;
|
|
8709
8718
|
/**
|
|
8710
8719
|
* Checks if the strategy has been stopped.
|
|
8711
8720
|
*
|
|
@@ -8716,7 +8725,7 @@ declare class StrategyCoreService {
|
|
|
8716
8725
|
* @param strategyName - Name of the strategy
|
|
8717
8726
|
* @returns Promise resolving to true if strategy is stopped, false otherwise
|
|
8718
8727
|
*/
|
|
8719
|
-
getStopped: (symbol: string, strategyName: StrategyName) => Promise<boolean>;
|
|
8728
|
+
getStopped: (backtest: boolean, symbol: string, strategyName: StrategyName) => Promise<boolean>;
|
|
8720
8729
|
/**
|
|
8721
8730
|
* Checks signal status at a specific timestamp.
|
|
8722
8731
|
*
|
|
@@ -8752,10 +8761,10 @@ declare class StrategyCoreService {
|
|
|
8752
8761
|
* @param strategyName - Name of strategy to stop
|
|
8753
8762
|
* @returns Promise that resolves when stop flag is set
|
|
8754
8763
|
*/
|
|
8755
|
-
stop: (ctx: {
|
|
8764
|
+
stop: (backtest: boolean, ctx: {
|
|
8756
8765
|
symbol: string;
|
|
8757
8766
|
strategyName: StrategyName;
|
|
8758
|
-
}
|
|
8767
|
+
}) => Promise<void>;
|
|
8759
8768
|
/**
|
|
8760
8769
|
* Clears the memoized ClientStrategy instance from cache.
|
|
8761
8770
|
*
|
|
@@ -8764,7 +8773,7 @@ declare class StrategyCoreService {
|
|
|
8764
8773
|
*
|
|
8765
8774
|
* @param ctx - Optional context with symbol and strategyName (clears all if not provided)
|
|
8766
8775
|
*/
|
|
8767
|
-
clear: (ctx?: {
|
|
8776
|
+
clear: (backtest: boolean, ctx?: {
|
|
8768
8777
|
symbol: string;
|
|
8769
8778
|
strategyName: StrategyName;
|
|
8770
8779
|
}) => Promise<void>;
|
|
@@ -8838,6 +8847,7 @@ declare class RiskGlobalService {
|
|
|
8838
8847
|
*/
|
|
8839
8848
|
checkSignal: (params: IRiskCheckArgs, context: {
|
|
8840
8849
|
riskName: RiskName;
|
|
8850
|
+
backtest: boolean;
|
|
8841
8851
|
}) => Promise<boolean>;
|
|
8842
8852
|
/**
|
|
8843
8853
|
* Registers an opened signal with the risk management system.
|
|
@@ -8848,6 +8858,7 @@ declare class RiskGlobalService {
|
|
|
8848
8858
|
addSignal: (symbol: string, context: {
|
|
8849
8859
|
strategyName: string;
|
|
8850
8860
|
riskName: RiskName;
|
|
8861
|
+
backtest: boolean;
|
|
8851
8862
|
}) => Promise<void>;
|
|
8852
8863
|
/**
|
|
8853
8864
|
* Removes a closed signal from the risk management system.
|
|
@@ -8858,6 +8869,7 @@ declare class RiskGlobalService {
|
|
|
8858
8869
|
removeSignal: (symbol: string, context: {
|
|
8859
8870
|
strategyName: string;
|
|
8860
8871
|
riskName: RiskName;
|
|
8872
|
+
backtest: boolean;
|
|
8861
8873
|
}) => Promise<void>;
|
|
8862
8874
|
/**
|
|
8863
8875
|
* Clears risk data.
|
|
@@ -8865,7 +8877,7 @@ declare class RiskGlobalService {
|
|
|
8865
8877
|
* If no riskName is provided, clears all risk data.
|
|
8866
8878
|
* @param riskName - Optional name of the risk instance to clear
|
|
8867
8879
|
*/
|
|
8868
|
-
clear: (riskName?: RiskName) => Promise<void>;
|
|
8880
|
+
clear: (backtest: boolean, riskName?: RiskName) => Promise<void>;
|
|
8869
8881
|
}
|
|
8870
8882
|
|
|
8871
8883
|
/**
|