@@ -623,6 +623,112 @@ def testParse(self):
623
623
self .assertEqual (instance .weight , "0.0 ()" )
624
624
625
625
626
+ class TradeLotTestCase (unittest .TestCase ):
627
+ data = ET .fromstring (
628
+ ('<Lot accountId="U123456" acctAlias="ibflex test" model="" currency="USD" '
629
+ 'fxRateToBase="1" assetCategory="STK" symbol="VXX 110917C00005000" '
630
+ 'description="VXX 17SEP11 5.0 C" conid="83615386" securityID="" '
631
+ 'securityIDType="" cusip="" isin="" underlyingConid="80789235" '
632
+ 'underlyingSymbol="VXX" issuer="" multiplier="100" strike="5" '
633
+ 'expiry="2011-09-17" putCall="C" principalAdjustFactor="" tradeID="594763148" '
634
+ 'reportDate="2011-08-12" tradeDate="2011-08-11" tradeTime="162000" '
635
+ 'settleDateTarget="2011-08-12" transactionType="BookTrade" exchange="--" '
636
+ 'quantity="3" tradePrice="0" tradeMoney="0" proceeds="-0" taxes="0" '
637
+ 'ibCommission="0" ibCommissionCurrency="USD" netCash="0" '
638
+ 'closePrice="29.130974" openCloseIndicator="C" notes="A" cost="8398.81122" '
639
+ 'fifoPnlRealized="0" fxPnl="0" mtmPnl="8739.2922" origTradePrice="0" '
640
+ 'origTradeDate="" origTradeID="" origOrderID="0" clearingFirmID="" '
641
+ 'transactionID="2381339439" buySell="BUY" ibOrderID="2381339439" ibExecID="" '
642
+ 'brokerageOrderID="" orderReference="" volatilityOrderLink="" '
643
+ 'exchOrderId="N/A" extExecID="N/A" orderTime="" openDateTime="" '
644
+ 'holdingPeriodDateTime="" whenRealized="" whenReopened="" '
645
+ 'levelOfDetail="EXECUTION" changeInPrice="0" changeInQuantity="0" '
646
+ 'orderType="" traderID="" isAPIOrder="N" accruedInt="0" serialNumber="" '
647
+ 'deliveryType="" commodityType="" fineness="0.0" weight="0.0 ()" '
648
+ 'origTransactionID="1234" relatedTransactionID="3456"/>' )
649
+ )
650
+
651
+ def testParse (self ):
652
+ instance = parser .parse_data_element (self .data )
653
+ self .assertIsInstance (instance , Types .Lot )
654
+ self .assertEqual (instance .accountId , "U123456" )
655
+ self .assertEqual (instance .acctAlias , "ibflex test" )
656
+ self .assertEqual (instance .model , None )
657
+ self .assertEqual (instance .currency , "USD" )
658
+ self .assertEqual (instance .fxRateToBase , decimal .Decimal ('1' ))
659
+ self .assertEqual (instance .assetCategory , enums .AssetClass .STOCK )
660
+ self .assertEqual (instance .symbol , "VXX 110917C00005000" )
661
+ self .assertEqual (instance .description , "VXX 17SEP11 5.0 C" )
662
+ self .assertEqual (instance .conid , "83615386" )
663
+ self .assertEqual (instance .securityID , None )
664
+ self .assertEqual (instance .securityIDType , None )
665
+ self .assertEqual (instance .cusip , None )
666
+ self .assertEqual (instance .isin , None )
667
+ self .assertEqual (instance .underlyingConid , "80789235" )
668
+ self .assertEqual (instance .underlyingSymbol , "VXX" )
669
+ self .assertEqual (instance .issuer , None )
670
+ self .assertEqual (instance .multiplier , decimal .Decimal ('100' ))
671
+ self .assertEqual (instance .strike , decimal .Decimal ('5' ))
672
+ self .assertEqual (instance .expiry , datetime .date (2011 , 9 , 17 ))
673
+ self .assertEqual (instance .putCall , enums .PutCall .CALL )
674
+ self .assertEqual (instance .principalAdjustFactor , None )
675
+ self .assertEqual (instance .tradeID , "594763148" )
676
+ self .assertEqual (instance .reportDate , datetime .date (2011 , 8 , 12 ))
677
+ self .assertEqual (instance .tradeDate , datetime .date (2011 , 8 , 11 ))
678
+ self .assertEqual (instance .tradeTime , datetime .time (16 , 20 , 0 ))
679
+ self .assertEqual (instance .settleDateTarget , datetime .date (2011 , 8 , 12 ))
680
+ self .assertEqual (instance .transactionType , enums .TradeType .BOOKTRADE )
681
+ self .assertEqual (instance .exchange , None )
682
+ self .assertEqual (instance .quantity , decimal .Decimal ("3" ))
683
+ self .assertEqual (instance .tradePrice , decimal .Decimal ("0" ))
684
+ self .assertEqual (instance .tradeMoney , decimal .Decimal ("0" ))
685
+ self .assertEqual (instance .proceeds , decimal .Decimal ("-0" ))
686
+ self .assertEqual (instance .taxes , decimal .Decimal ("0" ))
687
+ self .assertEqual (instance .ibCommission , decimal .Decimal ("0" ))
688
+ self .assertEqual (instance .ibCommissionCurrency , "USD" )
689
+ self .assertEqual (instance .netCash , decimal .Decimal ("0" ))
690
+ self .assertEqual (instance .closePrice , decimal .Decimal ("29.130974" ))
691
+ self .assertEqual (instance .openCloseIndicator , enums .OpenClose .CLOSE )
692
+ self .assertEqual (instance .notes , (enums .Code .ASSIGNMENT , ))
693
+ self .assertEqual (instance .cost , decimal .Decimal ("8398.81122" ))
694
+ self .assertEqual (instance .fifoPnlRealized , decimal .Decimal ("0" ))
695
+ self .assertEqual (instance .fxPnl , decimal .Decimal ("0" ))
696
+ self .assertEqual (instance .mtmPnl , decimal .Decimal ("8739.2922" ))
697
+ self .assertEqual (instance .origTradePrice , decimal .Decimal ("0" ))
698
+ self .assertEqual (instance .origTradeDate , None )
699
+ self .assertEqual (instance .origTradeID , None )
700
+ self .assertEqual (instance .origOrderID , "0" )
701
+ self .assertEqual (instance .clearingFirmID , None )
702
+ self .assertEqual (instance .transactionID , "2381339439" )
703
+ self .assertEqual (instance .buySell , enums .BuySell .BUY )
704
+ self .assertEqual (instance .ibOrderID , "2381339439" )
705
+ self .assertEqual (instance .ibExecID , None )
706
+ self .assertEqual (instance .brokerageOrderID , None )
707
+ self .assertEqual (instance .orderReference , None )
708
+ self .assertEqual (instance .volatilityOrderLink , None )
709
+ self .assertEqual (instance .exchOrderId , None )
710
+ self .assertEqual (instance .extExecID , None )
711
+ self .assertEqual (instance .orderTime , None )
712
+ self .assertEqual (instance .openDateTime , None )
713
+ self .assertEqual (instance .holdingPeriodDateTime , None )
714
+ self .assertEqual (instance .whenRealized , None )
715
+ self .assertEqual (instance .whenReopened , None )
716
+ self .assertEqual (instance .levelOfDetail , "EXECUTION" )
717
+ self .assertEqual (instance .changeInPrice , decimal .Decimal ("0" ))
718
+ self .assertEqual (instance .changeInQuantity , decimal .Decimal ("0" ))
719
+ self .assertEqual (instance .orderType , None )
720
+ self .assertEqual (instance .traderID , None )
721
+ self .assertEqual (instance .isAPIOrder , False )
722
+ self .assertEqual (instance .accruedInt , decimal .Decimal ("0" ))
723
+ self .assertEqual (instance .serialNumber , None )
724
+ self .assertEqual (instance .deliveryType , None )
725
+ self .assertEqual (instance .commodityType , None )
726
+ self .assertEqual (instance .fineness , decimal .Decimal ("0" ))
727
+ self .assertEqual (instance .weight , "0.0 ()" )
728
+ self .assertEqual (instance .origTransactionID , "1234" )
729
+ self .assertEqual (instance .relatedTransactionID , "3456" )
730
+
731
+
626
732
class OptionEAETestCase (unittest .TestCase ):
627
733
data = ET .fromstring (
628
734
('<OptionEAE accountId="U123456" acctAlias="ibflex test" model="" '
@@ -1004,6 +1110,49 @@ def testParse(self):
1004
1110
self .assertEqual (instance .clientReference , None )
1005
1111
1006
1112
1113
+ class TransferLotTestCase (unittest .TestCase ):
1114
+ data = ET .fromstring (
1115
+ ('<TransferLot accountId="U123456" currency="USD" fxRateToBase="1" '
1116
+ 'assetCategory="STK" symbol="FMTIF" description="FMI HOLDINGS LTD" '
1117
+ 'conid="86544467" securityID="" securityIDType="" cusip="02K123K" '
1118
+ 'isin="" listingExchange="NYSE" multiplier="1" reportDate="20110718" '
1119
+ 'date="20110718" dateTime="20110718" type="FOP" direction="IN" '
1120
+ 'company="HOOLI" account="12345678" deliveringBroker="12345" '
1121
+ 'quantity="701.5" transferPrice="0" pnlAmount="0" pnlAmountInBase="0"'
1122
+ ' code="ST" />' )
1123
+ )
1124
+
1125
+ def testParse (self ):
1126
+ instance = parser .parse_data_element (self .data )
1127
+ self .assertIsInstance (instance , Types .TransferLot )
1128
+ self .assertEqual (instance .accountId , "U123456" )
1129
+ self .assertEqual (instance .currency , "USD" )
1130
+ self .assertEqual (instance .fxRateToBase , decimal .Decimal ("1" ))
1131
+ self .assertEqual (instance .assetCategory , enums .AssetClass .STOCK )
1132
+ self .assertEqual (instance .symbol , "FMTIF" )
1133
+ self .assertEqual (instance .description , "FMI HOLDINGS LTD" )
1134
+ self .assertEqual (instance .conid , "86544467" )
1135
+ self .assertEqual (instance .securityID , None )
1136
+ self .assertEqual (instance .securityIDType , None )
1137
+ self .assertEqual (instance .cusip , "02K123K" )
1138
+ self .assertEqual (instance .isin , None )
1139
+ self .assertEqual (instance .listingExchange , "NYSE" )
1140
+ self .assertEqual (instance .multiplier , decimal .Decimal ("1" ))
1141
+ self .assertEqual (instance .reportDate , datetime .date (2011 , 7 , 18 ))
1142
+ self .assertEqual (instance .date , datetime .date (2011 , 7 , 18 ))
1143
+ self .assertEqual (instance .dateTime , datetime .datetime (2011 , 7 , 18 , 0 , 0 , 0 ))
1144
+ self .assertEqual (instance .type , enums .TransferType .FOP )
1145
+ self .assertEqual (instance .direction , enums .InOut .IN )
1146
+ self .assertEqual (instance .company , 'HOOLI' )
1147
+ self .assertEqual (instance .account , "12345678" )
1148
+ self .assertEqual (instance .deliveringBroker , "12345" )
1149
+ self .assertEqual (instance .quantity , decimal .Decimal ("701.5" ))
1150
+ self .assertEqual (instance .transferPrice , decimal .Decimal ("0" ))
1151
+ self .assertEqual (instance .pnlAmount , decimal .Decimal ("0" ))
1152
+ self .assertEqual (instance .pnlAmountInBase , decimal .Decimal ("0" ))
1153
+ self .assertEqual (instance .code , (enums .Code .STCG , ))
1154
+
1155
+
1007
1156
class CorporateActionTestCase (unittest .TestCase ):
1008
1157
data = ET .fromstring (
1009
1158
('<CorporateAction accountId="U123456" acctAlias="ibflex test" model="" '
0 commit comments