diff --git a/ibflex/enums.py b/ibflex/enums.py index 64a3120..7b4a8ad 100644 --- a/ibflex/enums.py +++ b/ibflex/enums.py @@ -77,6 +77,7 @@ class Code(str, enum.Enum): INVESTOR = "INV" # Investment Transfer from Investor MARGINLOW = "L" # Ordered by IB (Margin Violation) WASHSALE = "LD" # Adjusted by Loss Disallowed from Wash Sale + LIQUIDATION_FORCED = "LF" # Forced Liquidation LIFO = "LI" # Last In, First Out (LIFO) tax lot-matching method LTCG = "LT" # Long-term P/L LOAN = "Lo" # Direct Loan diff --git a/tests/test_types.py b/tests/test_types.py index 34279ea..f1161ab 100644 --- a/tests/test_types.py +++ b/tests/test_types.py @@ -757,6 +757,35 @@ def testParse(self): self.assertEqual(instance.assetCategory, enums.AssetClass.CASH) +class TradeLiquidationForcedTestCase(unittest.TestCase): + """Test parsing of Trade with LF (Forced Liquidation) notes code.""" + data = ET.fromstring( + ('') + ) + + def testParse(self): + instance = parser.parse_data_element(self.data) + self.assertIsInstance(instance, Types.Trade) + self.assertEqual(instance.currency, "USD") + self.assertEqual(instance.symbol, "AAPL") + self.assertEqual(instance.description, "APPLE INC") + self.assertEqual(instance.dateTime, datetime.datetime(2025, 1, 15, 14, 30, 45)) + self.assertEqual(instance.tradeDate, datetime.date(2025, 1, 15)) + self.assertEqual(instance.quantity, decimal.Decimal("10.0")) + self.assertEqual(instance.tradePrice, decimal.Decimal("150.0")) + self.assertEqual(instance.proceeds, decimal.Decimal("1500.0")) + self.assertEqual(instance.notes, (enums.Code.LIQUIDATION_FORCED, )) + self.assertEqual(instance.buySell, enums.BuySell.SELL) + self.assertEqual(instance.levelOfDetail, "EXECUTION") + self.assertEqual(instance.assetCategory, enums.AssetClass.STOCK) + + class OptionEAETestCase(unittest.TestCase): data = ET.fromstring( ('