jamsix / ib-edavki

Skripta, ki prevede XML poročilo trgovalnih poslov v platformi InteractiveBrokers v XML format primeren za uvoz v obrazce Doh-KDVP, D-IFI, Doh-Div in Doh-Obr v eDavkih Finančne uprave.
MIT License
173 stars 57 forks source link

Reverse split + menjava conid #106

Open RokLenarcic opened 7 months ago

RokLenarcic commented 7 months ago

Evo tukaj imam primer, kjer je reverse split in hkrati menjava ISIN in conid:

<CorporateAction accountId="U9464672" acctAlias="" model="" currency="USD" fxRateToBase="1" assetCategory="STK" symbol="AMTD" description="AMTD(US00180G2057) SPLIT 1 FOR 3 (AMTD, AMTD IDEA GROUP, US00180G3048)" conid="665145378" securityID="US00180G3048" securityIDType="ISIN" cusip="00180G304" isin="US00180G3048" listingExchange="NYSE" underlyingConid="" underlyingSymbol="" underlyingSecurityID="" underlyingListingExchange="" issuer="" multiplier="1" strike="" expiry="" putCall="" principalAdjustFactor="" reportDate="20231117" dateTime="20231116;202500" actionDescription="AMTD(US00180G2057) SPLIT 1 FOR 3 (AMTD, AMTD IDEA GROUP, US00180G3048)" amount="0" proceeds="0" value="0" quantity="333.3333" fifoPnlRealized="0" mtmPnl="0" code="" type="RS" transactionID="618176630" actionID="129946303" levelOfDetail="DETAIL" serialNumber="" deliveryType="" commodityType="" fineness="0.0" weight="0.0 ()" />
<CorporateAction accountId="U9464672" acctAlias="" model="" currency="USD" fxRateToBase="1" assetCategory="STK" symbol="AMTD.OLD" description="AMTD(US00180G2057) SPLIT 1 FOR 3 (AMTD.OLD, AMTD IDEA GROUP, US00180G2057)" conid="597279242" securityID="US00180G2057" securityIDType="ISIN" cusip="00180G205" isin="US00180G2057" listingExchange="NYSE" underlyingConid="" underlyingSymbol="" underlyingSecurityID="" underlyingListingExchange="" issuer="" multiplier="1" strike="" expiry="" putCall="" principalAdjustFactor="" reportDate="20231117" dateTime="20231116;202500" actionDescription="AMTD(US00180G2057) SPLIT 1 FOR 3 (AMTD.OLD, AMTD IDEA GROUP, US00180G2057)" amount="0" proceeds="0" value="0" quantity="-1000" fifoPnlRealized="0" mtmPnl="0" code="" type="RS" transactionID="618176629" actionID="129946303" levelOfDetail="DETAIL" serialNumber="" deliveryType="" commodityType="" fineness="0.0" weight="0.0 ()" />

Jasno tradei so vsi na simbol "AMTD"

jamsix commented 5 months ago

Hvala! Tole bi bilo dobro enkrat pravilno upoštevat, ampak v naslednjem mesecu bo bolj težka.

nejcr commented 5 months ago

+1 Mam podobn primer za Acquisition. (niso tocne zneski, prepisani sam za muštr)

<CorporateAction accountId="U7612655" acctAlias="U3******  Nejc Ravnik" model="" currency="USD" fxRateToBase="0.95153" assetCategory="STK" subCategory="COMMON" symbol="ATVI" description="ATVI(US00507V1098) MERGED(Acquisition) FOR USD 95.00 PER SHARE (ATVI, ACTIVISION BLIZZARD INC, US00507V1098)" conid="52424577" securityID="US00507V1098" securityIDType="ISIN" cusip="00507V109" isin="US00507V1098" figi="BBG000CVWGS6" listingExchange="NASDAQ" underlyingConid="" underlyingSymbol="" underlyingSecurityID="" underlyingListingExchange="" issuer="" issuerCountryCode="US" multiplier="1" strike="" expiry="" putCall="" principalAdjustFactor="" reportDate="20231013" dateTime="20231012;202500" actionDescription="ATVI(US00507V1098) MERGED(Acquisition) FOR USD 95.00 PER SHARE (ATVI, ACTIVISION BLIZZARD INC, US00507V1098)" amount="-9999" proceeds="9999" value="-9800" quantity="-30" fifoPnlRealized="1000" mtmPnl="17.4" code="" type="TC" transactionID="2204800490" actionID="128952887" levelOfDetail="DETAIL" serialNumber="" deliveryType="" commodityType="" fineness="0.0" weight="0.0" />
RokLenarcic commented 5 months ago

To ni ista stvar @nejcr . To je prevzem, in ISIN neha obstajat. Verjetno so dobil denar za svoje delnice, torej se steje kot prodaja?

pronebird commented 4 months ago

Menjava ISIN in menjava naziva podjetja, dva zapisa v XMLju, naprimer:

CA45690A1075 -> CA45250Q1046

ILI(CA45690A1075) CUSIP/ISIN CHANGE TO (CA45250Q1046) (ILI, IMAGINE LITHIUM INC, CA45250Q1046) ILI(CA45690A1075) CUSIP/ISIN CHANGE TO (CA45250Q1046) (ILI.OLD, INFINITE ORE CORP, CA45690A1075)

Regex ki ga trenutno uporabljam:

^([a-zA-Z0-9.]+)((\w+)) CUSIP/ISIN CHANGE TO ((\w+)) (([a-zA-Z0-9.]+), (.*?), (\w+))

Oz. če drugi in tretji ISIN sta enaka, potem gre za zamenjavo/preimenovanje inštrumenta. Ignoriramo če prvi and zadnji ISIN sta enaka.

Izgleda tako da IBKR pogosto zamenja ISIN tudi pri splitu, naprimer:

UAN(US1266331065) SPLIT 1 FOR 10 (UAN, CVR PARTNERS LP, US1266332055) UAN(US1266331065) SPLIT 1 FOR 10 (UAN.OLD, CVR PARTNERS LP, US1266331065)

Regex:

([a-zA-Z0-9.]+)((\w+)) SPLIT (\d+) FOR (\d+) (([a-zA-Z0-9. ]+), (.*?), (\w{0,}))

Enako pravilo kot za "CUSIP/ISIN CHANGE TO". Tega "OLD" ignoriramo, drugega pa upostevamo in migriramo inventar na novi ISIN, pa prilagodimo stevilo delnic.

Tudi obstaja forward split za opcije, v tem primeru zadnij ISIN lahko prazen, naprimer:

GME(US36467W1099) SPLIT 4 FOR 1 (GME 230120P00005000, GME 20JAN23 5 P, )