Files
IB-Dashboard/backend/__pycache__/flex_lots.cpython-313.pyc

66 lines
9.9 KiB
Plaintext
Raw Normal View History

2026-04-01 22:51:21 -05:00
<EFBFBD>
<00><><EFBFBD>i"<00><01><><00>SrSSKJr SSKJrJr SSKJr SSKJs J r
SSjr SSjr SSjr SS jrSS
jrSS jrSS jrSS jrSSjrSSjrg)z6Parse lot-level open positions from IB Flex XML files.<2E>)<01> annotations)<02>datetime<6D>timezone)<01>PathNc<01>N<00>US;aU$[U5$![a Us$f=f)N)N<>)<02>float<61> Exception)<02>value<75>defaults <20>backend\flex_lots.py<70> _as_floatr s2<00><00><17> <10>J<EFBFBD> <1E><1A>N<EFBFBD><14>U<EFBFBD>|<7C><1B><> <14><17><16><0E><17>s<00><00>
<00> $<03>$c<01><><00>U=(d SR5n[U5S:Xa(UR5(aUSSSUSSSUSS3$U=(d S$)Nr<00>r<00><00>-<2D>)<03>strip<69>len<65>isdigit)<01>expirys r <00>_normalize_expiryrs_<00><00><14>l<EFBFBD><02> !<21> !<21> #<23>F<EFBFBD>
<EFBFBD>6<EFBFBD>{<7B>a<EFBFBD><17>F<EFBFBD>N<EFBFBD>N<EFBFBD>,<2C>,<2C><18><11>1<EFBFBD>+<2B><1D>a<EFBFBD><06>q<EFBFBD><11> <0B>}<7D>A<EFBFBD>f<EFBFBD>Q<EFBFBD>q<EFBFBD>k<EFBFBD>]<5D>;<3B>;<3B> <11>><3E>T<EFBFBD><19>c <01><00>U=(d SR5nU(aSU;a U=(d S$URSS5up[U5S:Xa4[U5S:Xa%USSSUSSSUSSS USS
S US
SS USS3 $U$) Nr<00>;<3B>rrrrr<00> <20><00>:)r<00>splitr)<03>open_dt<64> date_part<72> time_parts r <00>_normalize_buy_timer$s<><00><00><16>}<7D>"<22>#<23>#<23>%<25>G<EFBFBD> <12>c<EFBFBD><17>(<28><16><EFBFBD>$<24><1E>"<22>=<3D>=<3D><13>a<EFBFBD>0<><18>I<EFBFBD>
<EFBFBD>9<EFBFBD>~<7E><11><1A>s<EFBFBD>9<EFBFBD>~<7E><11>2<><1B>A<EFBFBD>a<EFBFBD>.<2E>!<21><11>9<EFBFBD>Q<EFBFBD>q<EFBFBD>><3E>"2<>!<21>I<EFBFBD>a<EFBFBD><01>N<EFBFBD>3C<33>1<EFBFBD>Y<EFBFBD>q<EFBFBD>QR<51>^<5E>DT<44>TU<54>V_<56>`a<>bc<62>Vd<56>Ue<55>ef<65>gp<67>qr<71>st<73>gu<67>fv<66>w<>w<> <12>Nrc<01><><00>US;d
UbU(dg[R"U5R[RS9n[R
"[R5n[ XT-
R5S- S5n[U5[[U55- S-nUS:aU$[[U55n[U5S:aTUb[[U55O[[U5[U5-5n US::dU S::agX<>- SU- -S-
S-$U[U5-n
US::dU
S::agX<>- SU- -S-
S-$![a gf=f)N<>Nr<00><01>tzinfog~~Ag<41><67>&<26> .><3E>Y@<40><00>?r) r<00> fromisoformat<61>replacer<00>utc<74>now<6F>max<61> total_secondsr <00>absr
) <0B>
cost_basis<EFBFBD> gain_dollars<72> market_value<75>buy_time<6D>startr.<00>years<72> gain_percent<6E> start_value<75> end_liability<74> end_values r <00>_compute_cagr_percentr<#sl<00><00><11>Y<EFBFBD><1E>,<2C>"6<>h<EFBFBD><13><14><18>&<26>&<26>x<EFBFBD>0<>8<>8<><08> <0C> <0C>8<>M<><05><16>l<EFBFBD>l<EFBFBD>8<EFBFBD><<3C><<3C>(<28><03><13>S<EFBFBD>[<5B>/<2F>/<2F>1<>5G<35>H<>$<24>O<><05><1D>l<EFBFBD>+<2B>c<EFBFBD>%<25>
<EFBFBD>2C<EFBFBD>.D<>D<><05>M<> <0C> <10>3<EFBFBD>;<3B><1F> <1F><19>%<25>
<EFBFBD>+<2B>,<2C> <0B> <10><1A> <1C>q<EFBFBD> <20>8D<38>8P<38>C<EFBFBD><05>l<EFBFBD> 3<>4<>VY<56>Z_<5A>`j<>Zk<5A>ns<6E>uA<02>oB<02>[B<02>WC<02>M<EFBFBD><1A>a<EFBFBD><1F>=<3D>A<EFBFBD>#5<><1B>!<21>1<>s<EFBFBD>U<EFBFBD>{<7B>C<>s<EFBFBD>J<>e<EFBFBD>S<> S<><1F>%<25> <0C>"5<>5<> <09> <16>!<21> <1B>y<EFBFBD>A<EFBFBD>~<7E><17><1A>(<28>c<EFBFBD>E<EFBFBD>k<EFBFBD>:<3A>S<EFBFBD>@<40>E<EFBFBD>I<>I<><49> <14><14><13><14>s+<00>BE<00>2A&E<00>E<00>)E<00>E<00>
E!<03> E!c<01><00>U(dg[R"U5R[RS9n[R
"[R5n[ X!-
RS5$![a gf=f)Nr'r) rr+r,rr-r.r/<00>daysr
)r5r6r.s r <00>_compute_days_since_buyr?;sh<00><00> <13><13><14><18>&<26>&<26>x<EFBFBD>0<>8<>8<><08> <0C> <0C>8<>M<><05><16>l<EFBFBD>l<EFBFBD>8<EFBFBD><<3C><<3C>(<28><03><12>C<EFBFBD>K<EFBFBD>%<25>%<25>q<EFBFBD>)<29>)<29><> <14><14><13><14>s<00>A,A7<00>7
B<03>Bc<01><><00>URS5=(d SR5nU(aU$URS5=(d URS5=(d SR5$)N<> descriptionr<00>underlyingSymbol<6F>symbol<6F><02>getr)<02>attrsrAs r <00>_display_symbolrGFsS<00><00><18>9<EFBFBD>9<EFBFBD>]<5D>+<2B>1<>r<EFBFBD>8<>8<>:<3A>K<EFBFBD><12><1A><1A> <11>I<EFBFBD>I<EFBFBD>(<28> )<29> F<>U<EFBFBD>Y<EFBFBD>Y<EFBFBD>x<EFBFBD>-@<40> F<>B<EFBFBD> M<> M<> O<>Orc<01><><00>URS5=(d SR5nU(aSU3$URS5=(d SR5$)N<>conidrzCONID:rCrD)rFrIs r <00>_instrument_keyrJMsK<00><00> <12>Y<EFBFBD>Y<EFBFBD>w<EFBFBD> <1F> %<25>2<EFBFBD> ,<2C> ,<2C> .<2E>E<EFBFBD> <0C><17><05>w<EFBFBD><1F><1F> <11>I<EFBFBD>I<EFBFBD>h<EFBFBD> <1F> %<25>2<EFBFBD> ,<2C> ,<2C> .<2E>.rc<01><00>[U=(d S5nUS:XagU=(d SR5R5nUS:XdU=(d SS:aU*$Ub[U5S:aU*$Ub[U5S:aU*$U$)N<>rr<00>short)r1r<00>lowerr )<06> raw_position<6F>sider2r4<00>quantity<74>normalized_sides r <00>_signed_quantityrSTs<><00><00><12><<3C>&<26>3<EFBFBD>'<27>H<EFBFBD><0F>1<EFBFBD>}<7D><12><1B>z<EFBFBD>r<EFBFBD>(<28>(<28>*<2A>0<>0<>2<>O<EFBFBD><16>'<27>!<21>l<EFBFBD>&9<>c<EFBFBD>Q<EFBFBD>%><3E><18>y<EFBFBD><18><11><1D>%<25>
<EFBFBD>"3<>a<EFBFBD>"7<><18>y<EFBFBD><18><13><1F>E<EFBFBD>,<2C>$7<>!<21>$;<3B><18>y<EFBFBD><18> <13>Orc
<01>r<00>[R"U5R5n/nURS5GH<>nURnUR S5=(d SR 5S:waM>UR S5=(d SR 5=(d Sn[UR S5S5=(d Sn[UR S 5S5=(d Sn[UR S
5S 5=(d S nUR S 5=(d SR5R5n [UR S 55n
U
n [UR S55n [UR S55n [UR S55n[UR S55n[X<>X<EFBFBD>5nU nU bUbU(aX<>U- -
nSnU(a9US:Xa[U5U-O
[U5nUbU(a[UU- 5OSnUc[UR S55nUc[UR S55n[UR S55nUb U(aX<>- nSnUS;aUbU[U5- S-n[UX<>U5n[U5nUbUS:<3A>aSOSnUR0S[!U5_S[UR S55_SUR S5_S[#U5_SUR S5=(d S_S U_S!UR S"5=(d UR S5_S#[%UR S#55_S$[UR S$55_S%UR S&5=(d SR 5=(d S_S['U5R)5(a[+[-U55O
[+U5_S'U_S(U_S)U_S*U _S+U _S,U_UUUUUS-.E5 GM<> U$).Nz.//OpenPosition<6F> levelOfDetailr<00>LOT<4F> assetCategory<72>STK<54>
multiplierr*<00> fxRateToBase<73>positionrLrP<00> markPrice<63> positionValue<75>costBasisMoney<65>unrealizedCapitalGainsPnl<6E>fifoPnlUnrealized<65>OPT<50>costBasisPrice<63> openPrice<63> openDateTimer&r)im<00>X<>instrument_key<65>con_idrIrC<00>display_symbol<6F>currency<63> security_type<70>underlying_symbolrBr<00>strike<6B> option_type<70>putCall<6C>qty<74> avg_pricer2<00> market_pricer4r3)r8<00> cagr_percent<6E>days_since_buy<75>ltcgr5)<17>ET<45>parse<73>getroot<6F>findall<6C>attribrE<00>upperrrrNrSr1r$r<r?<00>appendrJrGrr <00>
is_integer<EFBFBD>str<74>int)<19>xml_path<74>root<6F>lots<74>noderFrjrY<00>fx_rate_to_baserOrP<00>
mark_pricerqr4<00>cost_basis_base<73>capital_gain_baser3ror2rp<00>divisorr5r8rrrsrts r <00>parse_flex_lotsr<73>bs <00><00> <0A>8<EFBFBD>8<EFBFBD>H<EFBFBD> <1D> %<25> %<25> '<27>D<EFBFBD><19>D<EFBFBD><14> <0C> <0C>.<2E>/<2F><04><14> <0B> <0B><05> <11>I<EFBFBD>I<EFBFBD>o<EFBFBD> &<26> ,<2C>"<22> 3<> 3<> 5<><15> ><3E> <14><1E><19><19>?<3F>3<>9<>r<EFBFBD>@<40>@<40>B<>K<>e<EFBFBD> <0A><1E>u<EFBFBD>y<EFBFBD>y<EFBFBD><1C>6<><03><<3C>C<><03>
<EFBFBD>#<23>E<EFBFBD>I<EFBFBD>I<EFBFBD>n<EFBFBD>$=<3D>s<EFBFBD>C<>J<>s<EFBFBD><0F> <20><15><19><19>:<3A>!6<><03><<3C>C<><03> <0C><15> <09> <09>&<26>!<21>'<27>R<EFBFBD>.<2E>.<2E>0<>6<>6<>8<><04><1E>u<EFBFBD>y<EFBFBD>y<EFBFBD><1B>5<>6<>
<EFBFBD>!<21> <0C> <20><15><19><19>?<3F>!;<3B><<3C> <0C>#<23>E<EFBFBD>I<EFBFBD>I<EFBFBD>.><3E>$?<3F>@<40><0F>%<25>e<EFBFBD>i<EFBFBD>i<EFBFBD>0K<30>&L<>M<><19> <20><15><19><19>+><3E>!?<3F>@<40> <0C><1E>|<7C>?<3F>Q<><03>
%<25>
<EFBFBD> <17> #<23>(9<>(E<>/<2F>%<25>_<EFBFBD>)L<>M<>J<EFBFBD><18> <09> <0E>/<<3C><05>/E<>c<EFBFBD>#<23>h<EFBFBD><1A>+<2B>3<EFBFBD>s<EFBFBD>8<EFBFBD>G<EFBFBD>5?<3F>5K<35>PW<50><03>J<EFBFBD><17>0<>1<>]a<>I<EFBFBD> <14> <1C>!<21>%<25>)<29>)<29>,<<3C>"=<3D>><3E>I<EFBFBD> <14> <1C>!<21>%<25>)<29>)<29>K<EFBFBD>"8<>9<>I<EFBFBD>&<26>u<EFBFBD>y<EFBFBD>y<EFBFBD><1E>'@<40>A<><08> <1D> (<28>_<EFBFBD>,<2C>><3E>L<EFBFBD><1B> <0C> <15>Y<EFBFBD> &<26><<3C>+C<>(<28>3<EFBFBD>z<EFBFBD>?<3F>:<3A>e<EFBFBD>C<>L<EFBFBD>,<2C>Z<EFBFBD><1C>U]<5D>^<5E> <0C>0<><18>:<3A><0E>$<24>0<>^<5E>s<EFBFBD>5J<35>s<EFBFBD>PR<50><04> <0C> <0B> <0B>
<EFBFBD> <1C>o<EFBFBD>e<EFBFBD>4<>
<EFBFBD> <14>i<EFBFBD><05> <09> <09>'<27> 2<>3<>
<EFBFBD> <15>e<EFBFBD>i<EFBFBD>i<EFBFBD><08>)<29>
<EFBFBD> <1D>o<EFBFBD>e<EFBFBD>4<> 
<EFBFBD>
<17><05> <09> <09>*<2A>-<2D>5<><14> 
<EFBFBD> <1C>]<5D> 
<EFBFBD> <20><15><19><19>+=<3D>!><3E>!U<>%<25>)<29>)<29>H<EFBFBD>BU<42>
<EFBFBD> <15>'<27><05> <09> <09>(<28>(;<3B><<3C>
<EFBFBD> <15>i<EFBFBD><05> <09> <09>(<28> 3<>4<>
<EFBFBD> <1A>E<EFBFBD>I<EFBFBD>I<EFBFBD>i<EFBFBD>0<>6<>B<EFBFBD>=<3D>=<3D>?<3F>G<>4<EFBFBD>
<EFBFBD> <19>%<25>
<EFBFBD>2C<EFBFBD>2N<EFBFBD>2N<EFBFBD>2P<EFBFBD>2P<EFBFBD>#<23>c<EFBFBD>*<2A>o<EFBFBD>.<2E>VY<56>Zd<5A>Ve<56>
<EFBFBD> <12>3<EFBFBD>
<EFBFBD> <18><19>
<EFBFBD> <19>*<2A>
<EFBFBD> <1B>L<EFBFBD>
<EFBFBD> <1B>L<EFBFBD>!
<EFBFBD>" <1B>L<EFBFBD>#
<EFBFBD>$)<29>(<28>,<2C><18> <20>-
<EFBFBD> <0B>_0<>N <10>Krc<01><><00>[U5nUR5(dS/4$[URS55nU(dS/4$USn[ U5[ U54$)Nz
flex_*.xml<6D><6C><EFBFBD><EFBFBD><EFBFBD>)r<00>exists<74>sorted<65>globr}r<>)<04>data_dir<69> data_path<74> xml_files<65>latests r <00>load_latest_flex_lotsr<73><00>s_<00><00><14>X<EFBFBD><0E>I<EFBFBD> <14> <1B> <1B> <1D> <1D><13>R<EFBFBD>x<EFBFBD><0F><16>y<EFBFBD>~<7E>~<7E>l<EFBFBD>3<>4<>I<EFBFBD> <14><13>R<EFBFBD>x<EFBFBD><0F> <16>r<EFBFBD>]<5D>F<EFBFBD> <0E>v<EFBFBD>;<3B><0F><06>/<2F> /<2F>/r)N)r<00>
str | None<6E>returnr<6E>)r!r<>r<>r<>)r5r<>)rF<00>dictr<74>r})rPr})r<00>
str | Pathr<68>z
list[dict])r<>r<>r<>ztuple[str | None, list[dict]])<15>__doc__<5F>
__future__rrr<00>pathlibr<00>xml.etree.ElementTree<65>etree<65> ElementTreerurrr$r<r?rGrJrSr<>r<><00>rr <00><module>r<>sL<00><01><<3C>"<22>'<27><18>"<22>"<22><17><1A><13><14>0<14>P<01>/<2F> <14>J<10>Z0r