Nyt olisi IB-trade-parser-and-ultimate-veroilmoitus-summary-maker python scripti lähes tulkoon valmis

- lopputulosta ei ole tosin vielä verifioitu, mutta ainakin sinnepäin näyttäisi menevän. Inputtina Suomen pankin valuuttakurssi XML ja IB:n custom html (defaultti rapsassa ei mielestäni ole niitä closed-slotteja) rapsa jossa trades valittuna (muut extra valinnat ei ehkä haittaa kun row-summaryä ja closet slotteja ei taida muualla olla).
Jos/kun saan tuon johonkin nippuun lähiaikoina niin onko kiinnostusta /tarvetta scriptille?
Pari varmistusta lähinnä liittyen hankintamenoon:
1) sen _harkitseminen_ on järkevää vain jos myynti-kulut > osto+kulut? Ja sitä kannattaa käyttää vain jos myynti*0,2 tai myynti*0,4 > osto+kulut+myynti_kulu
2) yli 10 vuotta tarkoittanee että 1.1-2010 -> 1.1.2020 == yli -> 31.12.2019 == tasan 10 eikä täten yli?
Muita epäselvyyksiä:
3) jos myynti tai ostopäivälle ei löydy valuuttakurssia (nähdäkseni tämä on on mahdollista, koska pörssit erilailla auki kun Suomen byrokratian työpäivät) niin mennään päivissä _taaksepäin_
Skriptin toimintaperiaate
1. Etsi IB:n html:stä "row summary" -> tämä on myynti -> tallenna Firman ticker, päivä, määrä (QTY, miinusta rapsasta), yksikköhinta (ja kulut)
2. Sen jälkeen ota jemmaan kaikki sitä seuraavat "closed_slotit" -> nämä on ostoja ko. myyntiin -> tallenna (Firma), päivä, määrä (QTY, plussana rapsassa, yksikköhinta (ja kulut) // firmaa ei ole se pitää "muistaa" yltä
3. Nyt kasaan nämä peräkkäin linkitettyyn listaan (näistä voisi tehdä 1:n linkitetyn listan) joka lisättäisiin kooste listaan yhtenä iteminä
4. Jatka kunnes kaikki kaupat on käyty läpi -> 1 iso lista jossa -QTY (myynti) ja sen perässä +QTY (osto):tä kasa ja sitten taas -QTY merkiten seuraavan kaupan alkua jne.
-> käydään lista läpi
5. Lasketaan -QTY:sta myyntihinta EUR (haetaan ko. päivän kurssi XML:stä)
- Pistetään muistiin 1 QTY:n hinta (tarvitaan kohdassa 6)
6. Käydään läpi +QTY:t ja lasketaan jokaiselle ostohinta EUR ((haetaan ko. päivän kurssi XML:stä) -> lasketaan vuosiero myyntiin -> saadaan hankmeno %*QTY*kohdan 5 yksikköhinta == hankmeno hinta-> ostohinnaksi joko hankmeno tai ostohinta
- Summataan jokaisen oston hinta nippuun (hävitetään yksittäisen tapahtuman päivämäärät, kappalemäät jne)
--> 1 myynti on käyty kokonaan läp
7. Lopputuloksena 1 myyntihinta & 1 ostohinta eli -> Firma, myyntipäivä, (QTY), myyntihinta, ostohinta (joka on siis summa "closed slot"-riveistä)
- näitä rivejä on listalla niin monta kuin oli myyntejä
8. Käydään tuo lista läpi sum(myynti), sum(osto) -> saadaan vaikkapa 10ke ja 9ke jotka syötetään verottajan himmeliin eli tehdään verotuksessa vain 1 kauppa jossa tuli 1ke voittoa, myyntipäiväksi joku ja ostopäiväksi vaikkapa edeltävä päivä -> jos voittoa on jostain syystä niin satumaisesti että systeemi ehdottaa vielä tässä vaiheessa hank-menon käyttöä niin kieltäydytään siitä kohteliaasti koska hank.meno on jo laskettu sisään yllä.
Pari mutkaa matkassa:
a) IB:n html:stä ei tunnu olevan tietoa kaupassa käytetystä valuutasta -> En keksi muuta kuin että defaultti on EUR-USD ja sitten joku dicti jossa Firman_ticker:valuuttapari jotka käyttäjä määrittelee. Eli jos ei dictistä löydy firmaa niin EUR-USD:llä mennään
- "exchangeja" on miljoona nyse, bats etc etc etc, joten tuosta on vaikea päätellä.
b) Mitenköhän kulut menee rapsassa ja missä valuutassa? Onko se sama valuutta aina kun millä itse kauppa on tehty - toivottavasti tai sitten aina EUR-USD
c) miten helvetissä tämän kokonaisuuden testaa

? Luomalla jonkun oman keksityn XML:n jossa on hank.menoa tms. sisällä
d) oliskohan sittenkin pitänyt mennä IB:n .csv:llä...
Jotain mitä vielä uupuu - on ihan eka scratchistä tehty python softa, joskus aiemmin jotain pieniä muutoksia tehnyt valmiisiin skripteihin

. Eli saman homman varmaan pystyy tekemään ½ tai 1/4 (tai 1/10

) osa rivimäärällä.
- namedtuple noihin data koosteisiin niin tietää huomennakin missä kohdassa tuplea on mikäkin arvo
- 1 myynti == 1 lista -> jotka sitten lisätään "päälistaan" eli päälistalla on itemeitä == myyntitoimeksiantojen määrä ja kun päälistan yhtä indeksiä tutkii niin ko. listasata näkee sitten myynnin ja siihen liittyvät ostot
- kulut mukaan (nyt en huomioi niitä mitenkään 96 erillistä riviä omassa *~0,35usd==~30e josta 30% on 10e valtiolta pois eli pitäähän ne lisätä

)
- hankintamenon oikea laskenta (nyt on joku drafti aiheesta)
Voisin ehkä pistää joko yleiseen jakoon (kaikkien naurettavaksi) tai sitten priva-viestillä... Tietysti ihan mielenkiinnosta voisin ottaa myös kritiikkiä vastaan, että kuinka päin helvettiä tuo on koodattu ja miten tuon olisi tehnyt paljon helpomminkin, sillä epäilemättä kumpikin osa-alue tullee kysymykseen

.
Olen hämmästynyt kuinka pieneen rivimäärään tuo meni, valuttakurssin haku XML:stä käytännössä muutama rivi koodia ja html:n parsinta muutama kymmentä riviä. Eikä tähän mennyt aikaakaan kuin jokunen tunti josta ½ xml namespacen kanssa ihmettelyyn kun stack overflow esimerkit oli lähes kaikki ilman namespacea niin tovi kesti tajuta miksi mitään ei löydy - toinen samanlainen pätkä tietysti vielä "hieromiseen"

..