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

62 lines
8.4 KiB
Plaintext
Raw Normal View History

2026-04-01 21:44:21 -05:00
<EFBFBD>
n<><6E>i<EFBFBD><00><01><><00>SrSSKJr SSKJrJr SSKJr SSKJs J r
SSjr SSjr SSjr SS jrSS
jrSS jrSS jrSS jrSSjrg)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[ XC-
R5S- S5n[[U55nU[U5-nUS::dUS::agXv- SU- -S-
S-$![a gf=f)N<>Nr<00><01>tzinfog~~Ag<41><67>&<26> .>r<00><00>?<3F>Y@) r<00> fromisoformat<61>replacer<00>utc<74>now<6F>max<61> total_seconds<64>absr r
)<08>
cost_basis<EFBFBD> gain_dollars<72>buy_time<6D>startr.<00>years<72> start_value<75> end_values r <00>_compute_cagr_percentr9#s<><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><19>%<25>
<EFBFBD>+<2B>,<2C> <0B><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>B"C<00>6C<00>
C<03>Cc<01><00>U(dg[R"U5R[RS9n[R
"[R5n[ X!-
RS5$![a gf=f)Nr'r) rr+r,rr-r.r/<00>daysr
)r4r5r.s r <00>_compute_days_since_buyr<3sh<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>attrsr>s r <00>_display_symbolrD>sS<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:r@rA)rCrFs r <00>_instrument_keyrGEsK<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>[R"U5R5n/nURS5GH<>nURnUR S5=(d SR 5S:waM>UR S5=(d SR 5=(d Sn[UR S5S5=(d Sn[UR S 5S
5=(d S
nUR S 5=(d SR5R5nUS :XdUS :a [U5*O
[U5n [UR S55n
U
n [UR S55n [UR S55n [UR S55nUc[UR S55nUnUc-U (a&US:XaX<>-OU nU bU(a[U U- 5OSn[UR S55n[UR S55nSnU S;aUbU[U 5- S-n[U UU5n[U5nUbUS:<3A>aSOSnUR0S[U5_S[UR S55_SUR S5_S[!U5_SU_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_S,U_UUUUS-.E5 GM<> U$).Nz.//OpenPosition<6F> levelOfDetailr<00>LOT<4F> assetCategory<72>STK<54>
multiplierr)<00>positiong<00>side<64>shortr<00> markPrice<63> positionValue<75>costBasisMoney<65>costBasisPrice<63> openPrice<63>OPT<50> openDateTime<6D>fifoPnlUnrealizedr&r*im<00>X<>instrument_key<65>con_idrFr@<00>display_symbol<6F> security_type<70>underlying_symbolr?r<00>strike<6B> option_type<70>putCall<6C>qty<74> avg_pricer2<00> market_price<63> market_valuer3<00> gain_percent)<04> cagr_percent<6E>days_since_buy<75>ltcgr4)<16>ET<45>parse<73>getroot<6F>findall<6C>attribrB<00>upperrr<00>lowerr1r$r9r<<00>appendrGrDrr <00>
is_integer<EFBFBD>str<74>int)<17>xml_path<74>root<6F>lots<74>noderCr]rM<00> raw_positionrOrb<00>
mark_pricerdrer2rc<00>
open_price<EFBFBD>divisorr4r3rfrgrhris r <00>parse_flex_lotsr}Ls<><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> <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>$(<28>G<EFBFBD>O<EFBFBD>|<7C>a<EFBFBD>7G<37>s<EFBFBD><<3C> <20> <20>S<EFBFBD>Q]<5D>M^<5E><03><1E>u<EFBFBD>y<EFBFBD>y<EFBFBD><1B>5<>6<>
<EFBFBD>!<21> <0C> <20><15><19><19>?<3F>!;<3B><<3C> <0C><1E>u<EFBFBD>y<EFBFBD>y<EFBFBD>)9<>:<3A>;<3B>
<EFBFBD><1D>e<EFBFBD>i<EFBFBD>i<EFBFBD>(8<>9<>:<3A> <09> <14> <1C>"<22>5<EFBFBD>9<EFBFBD>9<EFBFBD>[<5B>#9<>:<3A>J<EFBFBD>"<22>I<EFBFBD> <14> <1C><13>*7<>5<EFBFBD>*@<40>c<EFBFBD>&<26>c<EFBFBD>G<EFBFBD>5?<3F>5K<35>PW<50><03>J<EFBFBD><17>0<>1<>]a<>I<EFBFBD>&<26>u<EFBFBD>y<EFBFBD>y<EFBFBD><1E>'@<40>A<><08> <20><15><19><19>+><3E>!?<3F>@<40> <0C><1B> <0C> <15>Y<EFBFBD> &<26><<3C>+C<>(<28>3<EFBFBD>z<EFBFBD>?<3F>:<3A>e<EFBFBD>C<>L<EFBFBD>,<2C>Z<EFBFBD><1C>x<EFBFBD>P<> <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>
<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>" <1B>L<EFBFBD>#
<EFBFBD>$)<29>,<2C><18> <20>+
<EFBFBD> <0B>?0<>l <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>globrsr})<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<>)r4r<>)rC<00>dictr<74>rs)ru<00>
str | Pathr<68>z
list[dict])r<>r<>r<>ztuple[str | None, list[dict]])<14>__doc__<5F>
__future__rrr<00>pathlibr<00>xml.etree.ElementTree<65>etree<65> ElementTreerjrrr$r9r<rDrGr}r<><00>rr <00><module>r<>sF<00><01><<3C>"<22>'<27><18>"<22>"<22><17><1A><13> <14> <14>P<01>/<2F>9<10>x0r