Overall Statistics
Total Trades
17
Average Win
0%
Average Loss
-75.52%
Compounding Annual Return
-100.000%
Drawdown
93.300%
Expectancy
-1
Net Profit
-82.562%
Sharpe Ratio
-1.071
Loss Rate
100%
Win Rate
0%
Profit-Loss Ratio
0
Alpha
-5.668
Beta
159.812
Annual Standard Deviation
2.976
Annual Variance
8.858
Information Ratio
-1.076
Tracking Error
2.976
Treynor Ratio
-0.02
Total Fees
$0.00
import numpy as np
from decimal import Decimal

class CustomMarginModelAlgorithm(QCAlgorithm):

    def Initialize(self):

        self.SetStartDate(2013,10, 7)  
        self.SetEndDate(2013,11,20)    
        self.SetCash(200)           
        security = self.AddForex("EURUSD", Resolution.Daily)
        self.Portfolio.SetMarginCallModel(CustomMarginCallModel(self.Portfolio, None))

    def OnData(self, data):
        self.MarketOrder("EURUSD", 1000)
    
    def OnMarginCallWarning(self):
        self.Liquidate("EURUSD")        
        
class CustomMarginCallModel(DefaultMarginCallModel):
    
    def __init__(self, portfolio, defaultOrderProperties):
        self.portfolio = portfolio
        self.defaultOrderProperties = defaultOrderProperties
        super().__init__(portfolio, defaultOrderProperties)
        
    
    def GetMarginCallOrders(self, issueMarginCallWarning):
        issueMarginCallWarning = False
        if self.portfolio.TotalPortfolioValue < Decimal(0.6)*self.portfolio.TotalMarginUsed:
            issueMarginCallWarning = True
        return [], issueMarginCallWarning