11from datetime import datetime
2- from typing import Dict , List , Optional
2+ from typing import Dict , List , Optional , cast
33
44import pandas as pd
55
@@ -64,9 +64,9 @@ def __init__(
6464 self ._open_orders : List [Order ] = []
6565
6666 self ._current_bar : pd .DataFrame = pd .DataFrame ()
67- self ._current_datetime = None
67+ self ._current_datetime : Optional [ datetime ] = None
6868 self ._previous_bar : pd .DataFrame = pd .DataFrame ()
69- self ._previous_datetime = None
69+ self ._previous_datetime : Optional [ datetime ] = None
7070
7171 self ._long_only = long_only
7272 self ._short_fee_rate = short_fee_rate
@@ -384,7 +384,7 @@ def update(
384384 self ._execute_order (
385385 Order (ticker , - self ._open_positions [ticker ].size , OrderType .CLOSE ),
386386 self ._previous_bar ,
387- self ._previous_datetime ,
387+ cast ( datetime , self ._previous_datetime ) ,
388388 )
389389
390390 # buy and sell assets
@@ -405,7 +405,9 @@ def update(
405405 continue
406406 if (
407407 not self ._execute_order (
408- open_order , self ._current_bar , self ._current_datetime
408+ open_order ,
409+ self ._current_bar ,
410+ cast (datetime , self ._current_datetime ),
409411 )
410412 and open_order .good_till_cancel
411413 ):
@@ -578,13 +580,14 @@ def cash(self) -> float:
578580 return self ._cash
579581
580582 @property
581- def benchmark (self ) -> str :
583+ def benchmark (self ) -> Optional [ str ] :
582584 """Gets the benchmark symbol used for performance comparison.
583585
584586 The benchmark tracks a reference asset (e.g., market index) to evaluate relative
585587 strategy performance. Returns None if no benchmark was specified.
586588
587589 Returns:
588- str: Ticker symbol of the benchmark instrument.
590+ Optional[str]: Ticker symbol of the benchmark instrument, or None if not
591+ set.
589592 """
590593 return self ._benchmark
0 commit comments