Skip to content

account ¤

BackTestAccount ¤

BackTestAccount(
    risk: float = 0.02,
    balance: float = 10000,
    commission: float = 0.2,
    margin: float = 1,
    leverage: float = 1,
    **kwargs
)

Bases: Account

Parameters:

  • risk (float, default: 0.02 ) –

    description. Defaults to 0.02.

  • balance (float, default: 10000 ) –

    description. Defaults to 10_000.

  • commission (float, default: 0.2 ) –

    Commission fee is percent of size. Defaults to 0.2.

  • margin (float, default: 1 ) –

    description. Defaults to 1.

  • leverage (float, default: 1 ) –

    description. Defaults to 1.

  • **kwargs (dict, default: {} ) –
Source code in lettrade/exchange/backtest/account.py
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
def __init__(
    self,
    risk: float = 0.02,
    balance: float = 10_000,
    commission: float = 0.2,
    margin: float = 1,
    leverage: float = 1,
    **kwargs,
) -> None:
    """Account for backtest

    Args:
        risk (float, optional): _description_. Defaults to 0.02.
        balance (float, optional): _description_. Defaults to 10_000.
        commission (float, optional): Commission fee is percent of size. Defaults to 0.2.
        margin (float, optional): _description_. Defaults to 1.
        leverage (float, optional): _description_. Defaults to 1.
        **kwargs (dict, optional): Mirror of [lettrade.account.Account()](site:/reference/account/account/#lettrade.account.account.Account).
    """
    super().__init__(
        risk=risk,
        balance=balance,
        margin=margin,
        leverage=leverage,
        **kwargs,
    )
    self._commission = commission

balance property ¤

balance: float

Balance of account

Returns:

  • float ( float ) –

    description

next ¤

next()

Next account

Source code in lettrade/account/account.py
73
74
def next(self):
    """Next account"""

next_next ¤

next_next()

Call after strategy.next()

Source code in lettrade/account/account.py
76
77
78
def next_next(self):
    """Call after strategy.next()"""
    self._equity_snapshot()

risk ¤

risk(side: TradeSide, size: float, **kwargs) -> float

Risk calculation

Source code in lettrade/account/account.py
87
88
89
90
91
def risk(self, side: "TradeSide", size: float, **kwargs) -> float:
    """Risk calculation"""
    if size is None:
        return side * abs(self._risk)
    return side * abs(size)

start ¤

start()

Start account

Source code in lettrade/account/account.py
70
71
def start(self):
    """Start account"""

stop ¤

stop()

Stop account

Source code in lettrade/account/account.py
80
81
82
83
84
85
def stop(self):
    """Stop account"""
    try:
        self._equity_snapshot()
    except LetAccountInsufficientException:
        pass

ForexBackTestAccount ¤

ForexBackTestAccount(
    risk: float = 0.02,
    balance: float = 10000,
    commission: float = 0.2,
    margin: float = 1,
    leverage: float = 1,
    **kwargs
)

Bases: BackTestAccount

Forex backtest account helps to handle lot size

Parameters:

  • risk (float, default: 0.02 ) –

    description. Defaults to 0.02.

  • balance (float, default: 10000 ) –

    description. Defaults to 10_000.

  • commission (float, default: 0.2 ) –

    Commission fee is percent of size. Defaults to 0.2.

  • margin (float, default: 1 ) –

    description. Defaults to 1.

  • leverage (float, default: 1 ) –

    description. Defaults to 1.

  • **kwargs (dict, default: {} ) –
Source code in lettrade/exchange/backtest/account.py
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
def __init__(
    self,
    risk: float = 0.02,
    balance: float = 10_000,
    commission: float = 0.2,
    margin: float = 1,
    leverage: float = 1,
    **kwargs,
) -> None:
    """Account for backtest

    Args:
        risk (float, optional): _description_. Defaults to 0.02.
        balance (float, optional): _description_. Defaults to 10_000.
        commission (float, optional): Commission fee is percent of size. Defaults to 0.2.
        margin (float, optional): _description_. Defaults to 1.
        leverage (float, optional): _description_. Defaults to 1.
        **kwargs (dict, optional): Mirror of [lettrade.account.Account()](site:/reference/account/account/#lettrade.account.account.Account).
    """
    super().__init__(
        risk=risk,
        balance=balance,
        margin=margin,
        leverage=leverage,
        **kwargs,
    )
    self._commission = commission

balance property ¤

balance: float

Balance of account

Returns:

  • float ( float ) –

    description

next ¤

next()

Next account

Source code in lettrade/account/account.py
73
74
def next(self):
    """Next account"""

next_next ¤

next_next()

Call after strategy.next()

Source code in lettrade/account/account.py
76
77
78
def next_next(self):
    """Call after strategy.next()"""
    self._equity_snapshot()

risk ¤

risk(side: TradeSide, size: float, **kwargs) -> float

Risk calculation

Source code in lettrade/account/account.py
87
88
89
90
91
def risk(self, side: "TradeSide", size: float, **kwargs) -> float:
    """Risk calculation"""
    if size is None:
        return side * abs(self._risk)
    return side * abs(size)

start ¤

start()

Start account

Source code in lettrade/account/account.py
70
71
def start(self):
    """Start account"""

stop ¤

stop()

Stop account

Source code in lettrade/account/account.py
80
81
82
83
84
85
def stop(self):
    """Stop account"""
    try:
        self._equity_snapshot()
    except LetAccountInsufficientException:
        pass