algo_engine.apps¶
Application-layer tools including web dashboards, backtest UI, and simulated input.
Web Apps¶
- class algo_engine.apps.backtest.WebApp(start_date: date, end_date: date, name: str = 'WebApp.Backtest', address: str = '0.0.0.0', port: int = 8080, **kwargs)[source]¶
Bokeh Server¶
- class algo_engine.apps.DocServer(theme: DocTheme = None, max_size: int = None, update_interval: float = 0.0, lock: lock = None, **kwargs)[source]¶
- __init__(theme: DocTheme = None, max_size: int = None, update_interval: float = 0.0, lock: lock = None, **kwargs)[source]¶
Candlestick Charts¶
- class algo_engine.apps.backtest.CandleStick(ticker: str, start_date: date, end_date: date, interval: float = 60.0, x_axis: list[float] = None, theme: DocTheme = None, **kwargs)[source]¶
- class ActiveBarData[source]¶
-
- volume: NotRequired[float]¶
- __init__(ticker: str, start_date: date, end_date: date, interval: float = 60.0, x_axis: list[float] = None, theme: DocTheme = None, **kwargs)[source]¶
- class algo_engine.apps.backtest.StickTheme(style: ColorStyle = None)[source]¶
- stick_padding = 0.1¶
- range_padding = 0.01¶
- ws_style = {'down': 'red', 'up': 'green'}¶
- cn_style = {'down': 'green', 'up': 'red'}¶
- __init__(style: ColorStyle = None)[source]¶
Strategy Tester¶
- class algo_engine.apps.Tester(start_date: date, end_date: date, dtype: list[str] = None, **kwargs)[source]¶
-
- abstractmethod load_data(ticker: str, market_date: date, dtype: Literal['TickData', 'TradeData', 'TransactionData', 'OrderBook']) list[MarketData][source]¶
- abstractmethod on_market_data(market_data: MarketData, **kwargs)[source]¶
- abstractmethod on_report(report: TradeReport, **kwargs)[source]¶
- abstractmethod on_order(order: TradeInstruction, **kwargs)[source]¶
- class algo_engine.apps.StrategyTester(start_date: date, end_date: date, data_loader, strategy: StrategyEngine, **kwargs)[source]¶
- class StrategyEngine(position_tracker: PositionManagementService, **kwargs)¶
- __init__(position_tracker: PositionManagementService, **kwargs)¶
- add_handler(**kwargs)¶
- add_handler_safe(**kwargs)¶
- property algos¶
- cancel(ticker: str, side: TransactionSide = None, algo_id: str = None, order_id: str = None, **kwargs)¶
- on_market_data(market_data: MarketData, **kwargs)¶
- on_order(order: TradeInstruction, **kwargs)¶
- on_report(report: TradeReport, **kwargs)¶
- open_pos(ticker: str, volume: float, side: TransactionSide = None, limit_price: float = None, algo: str = None, **kwargs)¶
a method to open position :param ticker: the given ticker :param volume: the target open volume :param side: trade side :param limit_price: Optional limit :param algo: Optional the specified algo :param kwargs: other keyword used in algo :return:
- register(event_engine=None, topic_set=None, auto_register: bool = True)¶
Register a virtual subclass of an ABC.
Returns the subclass, to allow usage as a class decorator.
- remove_handler(**kwargs)¶
- remove_handler_safe(**kwargs)¶
- reset()¶
- stop()¶
- unwind_pos(ticker: str, volume: float, side: TransactionSide = None, limit_price: float = None, algo: str = None, safe=True, **kwargs) tuple[float, float]¶
unwind method provide a safe way to unwind position of given ticker.
- Parameters:
ticker – the given exposure
volume – the target unwinding volume, should be a positive number
side – the trade action side, e.g. if strategy wishes to sell (in order to unwind long position), then side = TransactionSide.Sell_to_Unwind
limit_price – Optional, a limit price
algo – Optional the algo to be used to execute unwinding action
safe – True -> unwind volume should not exceed the exposed volume; False -> can flip position. Default is safe=True
kwargs – other kwargs passing to algo.launch
- Returns:
executed volume, remaining volume
- __init__(start_date: date, end_date: date, data_loader, strategy: StrategyEngine, **kwargs)[source]¶
- register()[source]¶
Register a virtual subclass of an ABC.
Returns the subclass, to allow usage as a class decorator.
- load_data(ticker: str, market_date: date, dtype: Literal['TickData', 'TradeData', 'TransactionData', 'OrderBook']) list[MarketData][source]¶
- on_market_data(market_data: MarketData, **kwargs)[source]¶
- on_report(report: TradeReport, **kwargs)[source]¶
- on_order(order: TradeInstruction, **kwargs)[source]¶