Skip to content

Commit e1c3493

Browse files
authored
Merge pull request #84 from 5Ub-Z3r0/master
Add AUTOFX Code
2 parents 1e299db + 06abc82 commit e1c3493

File tree

2 files changed

+31
-2
lines changed

2 files changed

+31
-2
lines changed

ibflex/enums.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@ class Code(str, enum.Enum):
5252
"""
5353
ASSIGNMENT = "A"
5454
AUTOEXERCISE = "AEx" # Automatic exercise for dividend-related recommendation
55+
AUTOFX = "AFx" # AutoFX conversion resulting from trading
5556
ADJUSTMENT = "Adj" # Adjustment
5657
ALLOCATION = "Al" # Allocation
5758
AWAY = "Aw" # Away Trade

tests/test_types.py

Lines changed: 30 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -729,6 +729,34 @@ def testParse(self):
729729
self.assertEqual(instance.relatedTransactionID, "3456")
730730

731731

732+
class TradeAutoFXTestCase(unittest.TestCase):
733+
data = ET.fromstring(
734+
('<Trade currency="USD" symbol="USD.EUR" description="USD.EUR" '
735+
'dateTime="2024-08-01;153045" tradeDate="2024-08-01" quantity="1337.0" '
736+
'tradePrice="1.0" proceeds="1337.0" ibCommission="0" ibCommissionCurrency="USD" '
737+
'notes="AFx" cost="0" buySell="BUY" ibOrderID="1234567890" openDateTime="" '
738+
'levelOfDetail="EXECUTION" fxRateToBase="1" assetCategory="CASH" taxes="0" '
739+
'closePrice="0" fifoPnlRealized="0" origTradePrice="0" origTradeDate="" '
740+
'cusip="" isin="" />')
741+
)
742+
743+
def testParse(self):
744+
instance = parser.parse_data_element(self.data)
745+
self.assertIsInstance(instance, Types.Trade)
746+
self.assertEqual(instance.currency, "USD")
747+
self.assertEqual(instance.symbol, "USD.EUR")
748+
self.assertEqual(instance.description, "USD.EUR")
749+
self.assertEqual(instance.dateTime, datetime.datetime(2024, 8, 1, 15, 30, 45))
750+
self.assertEqual(instance.tradeDate, datetime.date(2024, 8, 1))
751+
self.assertEqual(instance.quantity, decimal.Decimal("1337.0"))
752+
self.assertEqual(instance.tradePrice, decimal.Decimal("1.0"))
753+
self.assertEqual(instance.proceeds, decimal.Decimal("1337.0"))
754+
self.assertEqual(instance.notes, (enums.Code.AUTOFX, ))
755+
self.assertEqual(instance.buySell, enums.BuySell.BUY)
756+
self.assertEqual(instance.levelOfDetail, "EXECUTION")
757+
self.assertEqual(instance.assetCategory, enums.AssetClass.CASH)
758+
759+
732760
class OptionEAETestCase(unittest.TestCase):
733761
data = ET.fromstring(
734762
('<OptionEAE accountId="U123456" acctAlias="ibflex test" model="" '
@@ -1878,7 +1906,7 @@ def testParse(self):
18781906
self.assertEqual(instance.cost, decimal.Decimal("876.9314"))
18791907
self.assertEqual(instance.fifoPnlRealized, decimal.Decimal("0"))
18801908
self.assertEqual(instance.fxPnl, decimal.Decimal("0"))
1881-
self.assertEqual(instance.mtmPnl, decimal.Decimal("48"))
1909+
self.assertEqual(instance.mtmPnl, decimal.Decimal("48"))
18821910
self.assertEqual(instance.origTradePrice, None)
18831911
self.assertEqual(instance.origTradeDate, None)
18841912
self.assertEqual(instance.origTradeID, None)
@@ -1892,7 +1920,7 @@ def testParse(self):
18921920
self.assertEqual(instance.exchOrderId, None)
18931921
self.assertEqual(instance.extExecID, None)
18941922
self.assertEqual(instance.orderTime, datetime.datetime(2021, 2, 3, 10, 1, 50))
1895-
self.assertEqual(instance.openDateTime, None)
1923+
self.assertEqual(instance.openDateTime, None)
18961924
self.assertEqual(instance.holdingPeriodDateTime, None)
18971925
self.assertEqual(instance.whenRealized, None)
18981926
self.assertEqual(instance.whenReopened, None)

0 commit comments

Comments
 (0)