From bd0605072f49eeba7fcb35215ab68851edcd3d43 Mon Sep 17 00:00:00 2001 From: Yuxuan Yan Date: Sun, 7 Jun 2026 09:50:08 +0800 Subject: [PATCH] fix: rank-based allocator + momentum signal (reversal->momentum flip) --- portfolio/builder.py | 48 ++++++++++++++++++++++++++++------- reports/ic.png | Bin 34329 -> 33716 bytes reports/pnl.png | Bin 48359 -> 55870 bytes reports/summary.txt | 26 +++++++++---------- run_example.py | 18 +++++-------- signals/momentum.py | 21 +++++++++++++++ strategies/alpha_strategy.py | 48 +++++++++++++++++++++++++++-------- 7 files changed, 117 insertions(+), 44 deletions(-) create mode 100644 signals/momentum.py diff --git a/portfolio/builder.py b/portfolio/builder.py index 22a37d6..12c42cb 100644 --- a/portfolio/builder.py +++ b/portfolio/builder.py @@ -1,5 +1,6 @@ """Map signal values to discrete position actions.""" from dataclasses import dataclass +from typing import Optional @dataclass @@ -24,17 +25,46 @@ class ThresholdBuilder: self.size_pct = size_pct def build(self, signal_value: float, in_position: bool) -> PositionAction: - """Decide what to do given the current signal and position state. - - Args: - signal_value: Latest signal value for the stock. - in_position: Whether the portfolio currently holds the stock. - - Returns: - The action to take ("buy", "sell", or "hold"). - """ if not in_position and signal_value >= self.buy_threshold: return PositionAction("buy", self.size_pct) if in_position and signal_value <= self.sell_threshold: return PositionAction("sell", 0.0) return PositionAction("hold", 0.0) + + +class RankEqualWeightBuilder: + """Rank all stocks by signal. Buy top N at equal weight. Sell if drops out. + + Called once per bar with ALL stock signals. Returns per-stock actions. + """ + + def __init__(self, top_n: int = 5, min_signal: Optional[float] = None): + self.top_n = top_n + self.min_signal = min_signal # optional floor — skip stocks with signal below this + + def build(self, signals: dict[str, float]) -> dict[str, PositionAction]: + """Rank stocks by signal (descending). Top N get 'buy', rest get 'sell' if held. + + Args: + signals: {symbol: signal_value} for all stocks on this bar. + + Returns: + {symbol: PositionAction} + """ + # Filter by min_signal if set + if self.min_signal is not None: + signals = {s: v for s, v in signals.items() if v >= self.min_signal} + + # Sort by signal descending + ranked = sorted(signals.items(), key=lambda x: x[1], reverse=True) + + top_symbols = set(sym for sym, _ in ranked[:self.top_n]) + size_pct = 1.0 / self.top_n if self.top_n > 0 else 0.0 + + actions = {} + for sym in signals: + if sym in top_symbols: + actions[sym] = PositionAction("buy", size_pct) + else: + actions[sym] = PositionAction("sell", 0.0) + return actions diff --git a/reports/ic.png b/reports/ic.png index b4b2e69b05e22755556c883c64d4c33fa2f8f860..77032bfaa6534d38e7c4536c57b9271aac152aa1 100644 GIT binary patch literal 33716 zcmb@u2{@H)*fzS5=1>u3swg2Ona7HRgiOg)B$?-VY$QZhhRhnwQ|6h%5;g>UR~79X@jyg+d)ux-EYX zg`%28p(s`l?uXyxUOK=B|42A1+;`Trd*bZ&$k7a?`pDVd+RoY9!sM*0nWK}1ovjeR z;1z!H%V(cDJKH-+2ng8x=N0^Rj^+XvZ*}XzT@Kmb)^kFkXdfZ}Q>4qLS)foa&ML`Y z*K&_v9QJUh*Y3kC8@t^&QG$9V=YPGfrYZI8!B5HZ*Qw3u>96bUw>MDV7f#`_Z%AG7 zxWUMEE&3~o;H{{7eiI*odYI+K_Cu2_w3gmtP)%vDRy%})_M*x2v%=IE!* zYYk_18xGqDH8N2^TTuS#1&Wf$Hz<_cGaBR{{|oBLRLD0EDd=GY;Ojn$T4L{;Q~zE< z{r}@7c~9D6FT}N-TD-!kROz~iZhO-0)FI8dsP65!RQTcm?JY@qlw8P1xdSMz!;)@G zJ;vm1-QuUeZYU`!Dc`-@7h|57v9*H3hso{+y1G-ebaeFZY^}J=XQc6ni|e`I`+B+4 z;y+pCmfymb*ziWXut~b!DSXn_HCSxbl0ptDab0{cU@g+`=iuOA`TOg~*EFn|Ir^oy zB&CuPy_Uq`BcJ64Mza~8wO-wd`OK`IY(1e17ccT$xS(+Q^l8ua0ds9FE&5kaDNy03 z*cV}x4)$a1YI7ddz2+7a)cAbs?LAB=Yh+SVo|?>-eCdd1Rt<4UlFy**%HX5@Qw1&j z-IauzEZ)4TdnYg6QNMouS&0oc6)sb$_S(>a(KuhzZi)%DSYH@GfAJ-4m$y|;hDu)Z z*TJ6?WS5LO9*}8S))a6d-RJSj_32k^jCi%s>%%mZ(XdKr zjSDtlFuXD{B6f`J68Oua~x?mPx48%%B$9?_FU_d zBvgHd_E*jfd#|)@PXr4TnYBb+x^)m0NYCbQ099XffZbbNF_h((P>0l{PP}BXWv}x4 zi>i(!o5F!>4ioZxh80?A@s2?!PM$1woK{xqiZ=GmIKp2h*WBEksht(Iy+O$9kRi6_ z)INVs*_J4+4->6(?;d)-KQB+lXZvYyrgpAKOiaufN!RS%)ihaT2BH6b7orV58CJS( z4MinLx+$aErB+(6u1ri!Xw~}qlv;SLFZ?pz{mUq9*>n5Nn>P~E5t>C$e|@^zGBYz{ z*_W+n*`4|p#;T{x!PL-mE@iOXDb00pFr}wQOQ~yNpwKYvRY$C_3L4ju%y{b5{8A-B zrzMIn^23Mp)m7(VSFFv?mKGo4}ty;qab2xF6uh=}-ditoWw7)aa2f`Wo; zF7sM0^F2y1BKI5}3;4^%D1At4{W2T6Uy;#Q;#x24zDXOVr3Pwzytvaf-yQe0*7( zI*479jND}MttgMQv>|bW&=1pD@>~ zEj2ZDe%Niax6ENOA|W9s&aOret)->)1%}dMZN3*-=oeLEzr@G0L5kPw{;@o{Po( zLxa1}oih^7>5Xrh(|&zcwEFc)0Y)nX8EMVC;tJ^1$uL>Vh9HJBBGw;bMeTBZi0gCB zTuEA^H9l*jY z=WgD)apU;_EL^KWSV5|bgT-wF=1GgOeJLu8PQMfwJr>Cuqkf|3R@vRhV-y5RvE%a$w-zxpe49&DNO2~T4 zwSaLb2!AZIJLFpVC8H}y*0Ct1!n%!+Hj%KO#-=?`1?LMw!-zW-Q@H*XJlukNr&!xp>XJ1Zo zU^Yb_215bcYAA=S^#0A(MORo*Sa_j%(zLc_brGw}D&cHTGKA$x-oeS9 zx%xQpLDAFk*bxXEZYhz9WV zB2=e&EtM<6`tDxokj-PZExV2kP;S}8;ePYZw}PJ2k-FF1|2#Zx>ilQydcPml{-d4a zbpge&-ITguvOd8&nQdgYTP>@3SiRCNiT=W^nOde=I~}FZnbC?PNjlGtc@`O_!i6@#wlg3*{`&!T zttU@Xv)W*IB4c9awgq^3TWq$Ve}?*{w!N?y)^=7p@F7C&_R?rV$VTVKn-9wDKf=Ha z?=l03a9WUeNf5sBYytV|Yi1W=2Sg3q>SpQW45g-}q-59*S8Q+Ll7>^gJTF%oReRbB z7>TjaNdIl(K#&@6tT*{ORSE<#h+My*5jR8E+9e4+5dBsMt@12-(lsQ!H^1Uv`J+cX z@q7smji;5BmG8lJhbF9b`0aL2R!|MFrG0;KAPX?ZlTf{3fU*2~L%NXymH&nkS%B#G z?|Z)}y-%+FUNI$^`dxy!P+07Qy9)vRHY~B8ZZ+AQ?z@tzYOLn0$L(*U zb1UX~Al&|(^h>OH%8#b>*^uVvZ=ZBF4Z)KMl>`~pn5zmv3rcoL1V4QB#z;4G*ZC)R zT3LxOeS(C`JqXdSkDmV25X`t29bXkammMrnb02u&b}gAGi!9v-#g>t` zLYT%+nO?z8IuDpdTfmZfP~mLRgze1K<^_s^hsiuvP75J$Ol1Ov613?|zK+acU!HLu zOvtMqMN7*}%bxU)i`dfWm{J?8$iSkjuvK5HFdtArfXLq8`KB&YO~;XV8Y^rS)fmQ3 zuQ)G&vaakPHrj_0Kigd|pu*d>ok_I*;>1~6Y2f{8(Lwb^~3!N}a zk+HFvu$i;c({BU2l!>+(C`dtI2Kb70mQI^#+(R}O*{!Mf)AnM>ZHw(jM}&P~Ur0F5 zzQYGEJva!hb)7x$crF&|20mvFw6E}*r7+a(hEfn=pZXwU_c_)cr*xc`?goG`Xt z%6INK7emv{>x@Prdeg#?RMx25)(0NHz5(?0SOSES2Zc}G`fg1#mQK>4)VKc7AUshu zPDB-kp$9Ngde^%b08-d**E`9lzM)|b_C!BEuXbr&^C@wC5yqmWCrypL|8rw4X*~{G zfRGf}0S2;yt_!~fAw*XcTR=Ynz!ojLKi)iG_V{txE`Vwrrv-55!D=tJm`$LRU)J#b zSuiEas;b%s2J!rr3sO1|(HHc{H#Fm*@q+!?QNm zt%%_H#N^}}5E~u=0X15g&EzaYh*~{)#=L4IgYLSvm&i#sjZ=AwWmvWuA!t8#N^nW9dFYR!2`5x*F=ZxUs&|# zCS>RprUJnUorBr%06x8ATUX;lY=yD5Lx|NGQCn+RAgYixwU*-&t)c{sm-0!+M28+i z2zmnX@<~@$*Bt<#HW=;UL0E0AL%zhtRF9RJT-TccG%iG?a#%<)fIl%WU+ybSGTz*F+jWR^= zXLGX#;M?QU17u$@YR`k~OT$?}JryL6BD#n_HNq{nyOVb5R~_kR&!rnymVB8=NQ{p+ z_=tBEW08RP1b}?gQ(^yfz|ei>tvAP}nzx(6i^JKiIAr@2L$f>P#ecT9>wqp{AZ+^e zQs>Pv?`&ytad94MPg~nuz-T@XIUTd9#=#~v>$7UeU%cIc`{c_wKK98+e^!@0Y%|P9 ziL@p8Frt*e*Eh;boqGfF6(#e+C=_^^mbyCKFBw*vfWwCmN5CA;br@(Ve4j}LkPHeA z&hl?U{;Zzz@T%j(5DlO`NE*-YBgsMo#Oe?8!l{$Ww)1^CSw%(H91p>j{*={HV!-rXdIe13IpPhUIE-{2bE0uU8JQ9^~cWab&>3 ziV1Tk)6e!XSledm=J6{H*80^#YSc8j1Q*INU;;jHv~I<$oDsH^7e7%?iE}tHN8o{v zP;_3GI$I7AY&qyyxR9UY|Ffq+29dAJ{*g3y(7 zH(x)6#6DL9iRNrRs~UXwzsfO-SgS(@BmD3i3UE*v?YXg(GhFFr1-bM#1gAAXQOljp zWeCyb6>bEhCG0VH{MizX02ED8_lSMCQ6FG{TX23G!){5O+_JL9@G-(o zv+OE|kwuiGK;B-%4@ZT6p`hAd7PU2(mJ|UwL|^LN1PKIW`+Y~5-$r{PEnfv6Gy9?q&s5-yqi6|?8}Br6vn<)wl3rKv7qB~k!SIh1|NU^GMiY*mMkzQ#P zLiP$GvTcR1A~Vc+*g2xB+{wJ3jA>}d0F4USo>sAia>Ec6kUSgVCJ_8}VtiefhB5#W zo&vL|0FGb$sBS+zwsWn0YiYQ0`0y$kZv$J|iWRnirnh$$gg1tPV|?ah;wX7_#ESrE zY82#p33;f=K59>Di%O688!-+JwtgjBt0(hR-?pWqX#+|hkbFOcmjh3Y#g2-^wb{h3 z6!ri-Ao3$@9VAtZn8WBjre%}5k7U=#-V?Uyl7~zFgWL75MHvKW8MM01c78V>Djjx> z1F2O6nGhhK2sy*yfb+xn&KbWydR9zKwy-H9EW5;RG&e2LQ`tPh zC5jVN!>ZcNG1V(!Wn7$`>5#fUsP-&|pmaW?tkW32y?8f%)@2K#2qKDAY|X?Ob|ZQb z{6Yzh2vrdBbBwA7wcnYWn_GbdRRJ=}(Dv2FSx|vMTK@dAYHSZ`M%0rz9wQV684W{^ z=}1s{WAEL&x2GMyVl?VR(n-)PkoiTDEWm|qB;0MU&Rx&r`mH#Wb|>Z&C}&v!!t=jA z2h6m^;kGY&ra>Z-VbPr$D`XzZY0>pXX&zge$L72F$k6$hg6H@v#?=N!9v8vX&wJ>_I(%_Ep%P^LBp3 zxOQ2x_w@Ai959nUh-7A^SfB!{KaL2@rpDPKVm_jINN>-62G!WOywRnBL3b9eLslY4 z1R1%8m6p>#BW;cUlt6?SSmg4pPj(}WJSee_St^^PK?GeSAJ)mfKfW%$1)Z9k{q?zG zCf3Rs;l#lGk&q0zHFlek@4=p43+cynMFO&1c^Kma8|5Vf@4p8vQ^I9__Rn}7C?BqI z(Q$EENWTDv1T@POo(tZ3_3BknSQxIfnD1i5P{hXa^OGzz0qca(JP42#)nZgu=l*38 z`YEj)aqqu;U-`_cP_OlqrQs?qCc4*YDof|+%e9h&$aDR90zoSniKk!O`w;XZRghi%qS>oCUA`bQ zNTGE)+|#A$w(I0OYuDzP&%f9_op!1gGH=%c*<}q>ntk**Kw8jV*!Olcly7>9t@f&BNFE4lpa(?h&!}m4hhP>CDbyuK}zf`cf$Fb=vO#rT)leL8OnH3F}fg<^g`XODTf*w>pvU3 zr8orSA?wh|i%)?gpubQbIfay_`aUTHBek)si^$#q^%d$n?Q7!GtE;O)M+XWJi3}iH z1@;EiRNfEU_Jbb36gvt7tePOvyS4#&Uph!4Y68`(XwTJIkX`|h+Tz7E(J)+A(z~0J zNZf=pQc5@O$B!F^F1^}_^tA>W{=PNJW}v%}px0h0p+}kgj(h)nH}N=Z6lRkOxeh2w zf?{&bwDD;FwSU+_j&beC<<}4oQxJ_7vh)hTTw#;?gQP_}KTXg$FlK-M{*8!^ z#%)VVO6sGh?8V@}p+N~2NU99TkK<%o1bpg`MUu4oK8HpzlvlF2{l{~<7B{9$*)?1HCyQQ8?IfnoI}3Mds0;=|*8NX1WFn9jbCk|O3%Wp{mEvDP>LRfI z&wzk}Fme*qQ7U$~@le+s^XxAzLW(R<0X0iy7qgcuFE6+4h71NqLhJthbeM;J=gK#o z6px)J{8yLxmO@Y9Xb5x;CI1#ba^vF%2xg#f)8gsPQLL_-u6QOcbL?98#jmXxoVQ@1Zh1o_YH+X^>2I?OeBQw-5%Lj()3Dt;9KKIRNHFh;+mjihlfMmz>v8bJ$F^^QC^ zCf)LO^3NC!-WB^DYlBN`WsP`bthl(ivZqZe+rAfv`Z2<(OskPY~&!V?NP1nYd~#}`)Oacvjl+GhH~(rN_C zr%o7pFE=3b1Y7+Y=(|bzN{)Q8uw;ipUf70^)#6Q4ot!KOi%f&W;(6tjE3^WH7ywK5 zXGw)E=rbZm3&Vc4jN3OoDdZLw?ycLZt0_D@>Tx4~mMt&Qsb2gsL+;Kc6<0?S@kpnT zECZb1bZdB|hlH>4U0%u2dGW&=i8852R-r_3iJ$-O-m0wu)&%u#4+EsEl!*|w$ps+y zy1+O8uB;5#(6=FlTqsbOrAi*@=<1GF$i!BrKdb&YA1%nW{deo4jXz;5%5b6H5lIJN zpQe(Dwd8In5A?#e=QFM`!1w3rg4A-&ZOH)18jw1Ter{`t*DUr);T*{9g}ZBcetRks zK+84fS@k4AadLu`M**^$LC%~-s=7#?Rq1Mj*aUatzdUIz61N~?Ra5v5l69_-m zgNrb#z>m9%EV_|`?mU!1I)O#yB2`GyVdwWyGGo%Y0~|}w?(T%SB*obvlWkUKB_wA? zuB!XI4czfz31JW*lu zdGlMrTd*M!849){>|CBp%AoWxhJD&`2%$LlQ7-HX+yV#_9)xG4s>LxM|(ZT8FiyZ0VF`UoNY{9q|8HoICV%Bl5<|>=eqITfhvL-q$QKW0WE-Ypg4S=NC0H;jVg#S^s}dK+QO|-FJJIb z=D!u_N2xPh={xs8Y#o(+LnE2$*AG=%=@Q3?==)pg7y>&-szn=X^CQ7$i5^zW2-g)J*z3Z8J%VF|oaSB}@IGr1C$D+>0kkl#ANUv{m&QokTl3 zDv)XK0xg>FHDU))r*1-%B9Duv%QcJ{P??;>@m~(wYuJBh$n_W5v=uKP*Ta`T(yw3N zvZ@!Lv6<&{$^L544jwi}bNFm_!nYL-ij=tE7;}5i8ovkP%ni-&)UL( zCTQ(PpOzyY0+Be?o3D>@kD~T+wm%#*M^+J>(@eedt2IUlDFeHJRF71JcS%Ga{!*)c ze&9#ikV@)MDc-y*rvB*1hvzH(3a!&Wsu9SSKExE~^zobSm|fhD z1a^y>KHQKmm!E^eS=Xd3Zi3Irw@xYN`%eFKSWvueI;5}p<+@W{FyC*|T3^J3pGuzS zJ!OpX)tcK=A|XQ_ts2+z4*aS)rC>!e>cjt3OYVQ!wdl?2^}YT?&SViwW6C>^zzZfD z4m#pXK8pl!=vR|nb54jJfSZ9yYm%^osDJm zb2(nhif4si>yKnlX=3XX{^%@Q z6I%VydGMZmzB+fB>mru)4s-rD*9yIbkpMxNrdIk>xY0t16biJ3k3V zC|cJLkMfJ^HIVl)e6F=Q?B@Gr>w$3;G0AuGu&nDSGVPO-Vv#>Bh8e;Mbdwvap&Je# z-#R2t926;exS?BCzEbKvx20#aE35SpLl9T|RmCPxd_bSG=4F(}EBg~Ioosbu&i6kj zUJBFuF!JpM$A2eYo$#xQHEws%YkVzMbHa#oLOe));n9(Y#ww@8qpDPa>O5Fe*Mq?L zh>yLS+7lcnh>Hk-ywaDaZQTATu-jNM2a}j}5V^WbM}6@kivZl}ckhPIbR;2;N)H1y zD7HYV*>a~8yQm?4$y!9er*DxhFg*LrO^^Cha!C}p#wS7KV;67v;c54JpX5YLpd2th z9yn~}`_pT5Q{ryQUp+U4DaoEqQvIn_CLDL@KMNsF(yt{t@t-B%y4f;yDYpN`Q{&)I z#lGzL;sNUd>`qnTltImZErkb(la^nr>Q96d#j;p7YS!J-H=d@1wTW^my}%Le*cW!t z8|PsMByYXxBPlj-p@l;)*mYM~zc8CWNBiR~cj}S<9c##h%AztFbjB0}g4^T85&Hu$ zh2f|?{nA{{$e6w8DW?zw>1_~iZYS&)XIz3CkC2ci$SS=*BY6#tSxP~uQK>1QeAzIX z)r>??le-Yw(1?XCEUZWcafw@Co~Ffe-&OeDzscR{UJ(b%1Yq00 z)1G2K9iQD@lcSU&Au^4tU~C@Vb7GM|s3A{i&WQf@);*HH+kM)?;zB;0xl=)&-df<^8tlPD_r?<4B~ zTKZXkhAZj_erdDq(FXOHKR^6tM`BMb9#n7m4`llk#u)uCYEl9ieT@xrU;Ch&4$=Q| z041y3!i0Gf+(G>fK#bhAKR=+t5$H11Af`bf>06WxrW2_x@_kEBZJ1>G0mi`#|S+3#G`YQ&bKnj%B zIT)m$v;;@Wz-zpr+&UqLP;~G2F0uYBw;!c-V)+-0P}M{#Gt$L_gk-AeR})vI7G&W^ zEx|n`PIs@OJAyJp{KzIpMA!1e1m4M~i@Ey${;_rD+F|GWC%J^w9mGcA4=z9ZhXOQA zQkx_nJ-nLv@;V*-8g)4sibcBDjNgql(4h{pm|jGo08J^9|9<>Ufx=%R2*wDqr)wdt z0s&Sz6O=&hN6a_Xxeu>$CA!}LgCnx$IufOe!7i3(lLU!of=izsRFV>bdZ!_UfJF*a ziv9ItEJOg$edqpWX~tMn7RvSxuYltbXp3E$ z?oqw}BL;^pM)MnHLJi3X7P~fx^{Zg+h13g)9tH-1oXyAupcr%i9@=jAJfhm<<|?e5Z~ z5guYs>o3<%msh8hO*eLLtMD6p`kuw=dv0|tlGctl?;I%bOR$kD<`wVIm;GLJ=wYRI zqGY&?DCOMf=yxIGZai zUW1JfF~Mk(*O?@rwvF$mq0a~W5<`8ATfBmY%e_59HlF=;VbiUzkk0OYWPKIQa`;ay z-5XPm2&;Q%Z78KneGHB3jxV|N)-8|!R4ZG4<)uc)Z`@B|hlxu2?cK1H$F4@A78-5Y z!e1#FTPm(A=Q@Iun78u1;;^qv?GpYVr{A;qNwz53EVfM4cq2nM^)?uIzzqHc!cn=Z z9aKO-+&HDq?nlIqB2^N|1Kn*vqhkT*ab@c&sE(IJMMcY!>p;nH-u(0Ev?-LAi3oI0 z{~~urEOm^Io?ESU_}DWUd)DNVpdk-#(FGU99EKMt2jqFSkVP;1pM$AVH9O7ShxVSn z@=k=pI-20b)rGrdVf1%;N;vu>8-`+rD}7Sn!{$!TC~=#Tc~Y4mDS(UXV4@6bHa~hj zq4fJ@!XxGvtO7&Z8&_nA@q`2%3w0q`ij`OswQ-`-YU?i(fod8rmFw@~bwBMUw?y{f z)q-ZWPNx4hnsVND!;_OTDGM;99lNA+Ll}=>z8(@g&3_-)l`Xt_5DmKoeSNj7*v8{W z28urIv}Z%#9(gg#72&cET`SkVT+kArOB-1mA0PiUDh$}70pk5Lav!J8F|5=9a5TcU zeGt3}#MOb60FpSs9!Lt>;Pz%Xo*4`awC#zerKRP;1COJ6zCPObnR_^?w)W;6)|h={ z#+-p%xa@1uIYeiA(AltI$Z^u3wx6T{%aq8|qDEBT(7q&PlN2q&hBYfE&+!I4+gqhc z$SPG{K?`u@l^^vcO0Bd0S*BZ9CkA(nZdd0Cd=<=Htyyub*$O%L=Yw}6U5^KI>tD7K z!Qab2a{Oo~3p=((JlZv`5Ief_3058g`IS+$Yf^9a8RHzNv$1s&tUuAJw=%X3*Zmv) zZ?iCeGd_B04c-EjMmuh!uobs*okk@s;73ri} z8nb4dQd_!>!IW)3E9DrOYJroDESLA{Xp>K9q*}xG9>f7u6 z0d2SK)cAMF-&cmyBo!>2))!zR9nf+U(CcdiS^r5Pet`!;D zL}X|`JtikMnj5c>F1`Q!Flxhjf%srVf1!Q)rnK7mk5ak9-?OnT`DX7QM<=;ORT-Ms zRm*Gz3w#i%X+pF4N% zI{1E^h|fiFj5QE*TkwvE0J&5{w9PRnzXw`EUZDCTZJq7c&0YETxkZ3^F!XC`nX!-s zx&Gxmh;WJ2JwW>Fb?G-uLu%D~nm5$M%6;ApL75`CmP{f*iWT0~-Hnu>T3hdc6^-*j z++Kj!rV==_N#7k-rqacrYw!`m&MYX{h^@84bulxNSGS@@%ywgG*f#9+&Poy)aizf- znEAdA$OXaRmmPF;uRe>4{vgnK!D6ER4e-uS7!RxdToz;o+s20rA@y_CFl-;4%9%6di0M&<>5i1C z1MkrCL@>Rc#|WyO$@f0WDQ@wGb(p@w8aGdGRWbdf!qC$Z#lk313?Y=P{%%$7&+gX? z9!WkgID-n@%jx}}e)^W>zTkv9rGQW;%-hG)ilG!||1#+xe}MqFzp#T7>xZ8;Nj&)V zR|SUNt4GsU{{eRJ>H#AN(lw??W|}-_qGu-N%UdUcl6wgi&24vsBVT3OHBf=7A)|74 zpjo}&seekYgBRlx?T~3QXXpX&C&1k${nSKk3@%j*r%X&x_}~6?`{gT*WDaksPobHi zlk6z<)Aniyg`3)flW}>)oqhS4$C`tVTjva8Hk{e`_6nZ(?X85mkyt6ztOCPak(Cm4L*p1K z@C0I6L`9x_B{J5o%$|=L)3{IVsi6^Gvo*s^0zJ-b2FlxaM!i?wvd}1sWyzUg6evHA zA=PQQ3-mhAcJus5Dt=on#u4w{sXsA-yk+-qbnR1cKaOX^1QXozFaG_VmVQ|*s)dor z_)DESwDRlWRXDeC3n~#{>okb*SYBR6%EqVo4Vc<_P-i7Fzadp0RNo1mXJCPIMNG~{ zIH-2c4T3r=mW4v$Cknk${`WC1N54kE&0vS{NJ?VyJCHX+TQA3JBYz&KKu?zI{K3RL&LOBzmPcJ(4Aku{Oae+$MugqNFJN!n|@2abIBl=y+2v==;mh~o&l;|ZC@PwB?=ph%2; z&Z*D66W1GpBb~TTeP!2Ra2TQr6b{kXU}SIq@t#Yq4><(}W;|{Vj+>Ctz2}4)gDT?E zfU`z-R1>Ad&p-2A0aGPnQ+e?9;WMPJ2wpx5s7wyl_*6nI^nNM{GDO6lf}}xbu04GR zuG3V+bOcryD0P^s<6T)KFDh0A7&0+(d6|6Dm&{vm9e9tXw9Ps(`hl=HN!!fSVPhjQ zkfkg8OQiNTIy|0)V@%v6ciA{OU0|0DGtbkgtG4kSe-m?IvO~bxi@GU1nu~#<+)c+s z&+Eqf5PC8{ z>St0;(>eWklDs}UCM>7P;r#0#H)3|Y30M&Qt$Q;)2&Ip!Y;A%c|NT3J6)P30RWI4` z9tdTxYkc(haPZK^&1Ux_tOX5NwW76%;7Pnaq5s_bIQ=28nHmO*g|hOttNGU88z56#}dw`+2g{-3oWTz5g!a@ssze?K$7pBs4C^lSaqMU z3TYB>3_DlbWXi_LfKe~7XSFsaKUoH#Yztf6i{AyrUW`+A|TPxt87 zs{-v{Uat|aafgsUeSQ5*;~9&~WYMjys~3oT(znDyaDqPuQtM@$tngB@D(rRbP8{vN zpKPu_yL0^+W{nrR_v6MusB!mDW8yuQ(8-lh_NWGUm{U_ZyK<`7`#Il5L1+xw>cFao*@t{Ee=~Ay3 zRZ<-rESP8k`0#B?%C=i&*dNys$*`pPUg@yoY$o~QA=c{?C8?d~CaaPpWJV*COff$b zH)3J?F-M)k^srN2rI&tD>=<$@2(Q+F7_+cVRso7=xrUj$gPKdD<%;A031VMBBW`5UzR)y*0zUfBvZeYiv?}Rrq?w zR<2itDdusWHeOy|t@zdu)AMm;i5> zQML9ek-&z%=(3Rh-q=$E+|asEI$Set^x*kj*>8${sl(UXRsPoQZdZGNjP`ELXEv;k zRhN8DUpBvQgY_S8(lzG~j-}SizeRG5q>J@x+t=m?I|N9%rb&KF`8heUhKn_%_FmTw z{c?%zaYZ()@;#zoyuh(U0j2HHX;Q>Wn@pY!cEl@pAzJ!ewYZX(@$XM{aZ-c>N|x12 znhj}RZrk0xHxs?KMl8Tpm)LCW5|uYKHI=$*YH76k0%W~xuoG>f5$-!2EC<-U3=Sl@ z|FFWYMjPK-GgMP~fy0-YC;r;?lbR}CR0?LydeXtx756@3ZO(R4KflciD@&Tz>a|Vc zQIc5QVk2#Lxfx+asxu4G1a}Q|M73ke`p^QYp|EjdIISXjSI^T4?O4LrNj~K>S8VgS zcJyOJIL8GgMN#XXrC*<+ZSHujUUt#DaM|wW^jBBuitkp~{kUTF`K=sIC65@z)ycXM z*}Lxn*wTL$O_)fL{k)2VIO?ph6}mLKlQBXmqFfn&T4M%(5%1*L;GL~LU96K-et~Oo zSonZg`mC^nRQqSuR&eFJBZIls{UyT0#GLp06UvlETydBYOyH?C=f5s#jATLgno+?| zTYsYsaYM9W*2^-tu4QIKvHNQ5D4sQ~p9;-gSxE~?{7Fi}5!l~k>8jb-N**V4=!X53 zxuunt>uPN4N~$L2`K?Lcvc}E_ZTOM52gyv~bTDUm)!pW^e}Wi{uqBBDYRknZ!2c8J z(Qo+d?QvKiHKip)c8(Hh{$q&*zmT$wv`k}iJm(fWNA6;7tSDIp9U)BW*u?}|w0sfe znp3|nOY+3pz=$Vo1fmbnM2y6LS;!MA#*LaKg*s(Ac&G{EjdWe(H100S;{E!Ka4_cQ z79$+VR_NzU9Gs-(#nM6H1;;!a=J@^_8DZ6Y)#BWrOy#SO>+&r2jB+ZyQv6$Ny8a-~ z#?bU7ry^M#+KB1s$SK{$SYeYPP?^>*udEPl6SSR+zM1OxGo4d{F3@iHe0e@9U3-7L zB23KJ?yFPh*=h3EZd0t~8oI}l^ad|4w{aX}`p1jiVRYHxSR(sxCI@fwF2N_xam1^` zO26Od<&+qF!; zQO2Z+PPp7Jl#|+xeR+m+)KtE5zl6n*MFWl$_kL$ovC7HBd)13wu;NXYani=|?;*$A zA53nRkgk!12ph+RvohMUor1_rQpU2zzx6S`t1Na+8^_VRqH|A1P3vb=bDzun7MzIo zBk4=~{{9F@^LWL@2k?#~FV|=)IFXtis72jS`2DfS^At*pU`2ZWr1isi?2}S#BsiGB z+wEoW1Z*Tou@_qewdAL-!V+k-#MlIY1)?(JzaCkAD)HaVAc>&T}K}$pBCDFPhV|L{=1P;w+XWkMlbehYW2l2>UobTfO^+(LA2S zZmif`qB_&& zx8!?~h2<5qAmVy-;BZvL)S%t5{Y4t2fauB%JrmXo*wi~rc@m!$=fE$D*l8BXCv)7qn#urnd1W26R~QNxQ$ncamk=t@!P<5n3v13JSxRim7}GR1E! zRlRasYaAOY=S6g@ggc~lb80Uwhbqk3z>%=x4$C6jv5^wzs`e5z`mW@fJoX+@hc~T7 ze)D@+1atfmC_W41Ps24*Hj%>;ed zNxSQSy@w?{=(BZWjlL-Oi|G6AOYls*7;Yri(FCjPn9Bh(pv`4;|FY1nh#{G{wqo`v z`+e7LiFJr4nb!Y2ZH5Va<|I{GJTP_NrxL$o?P?fSK#Kb97b@&lHes_p^?YJlilw$e z^=^nTjQ0D_$z$~%TJyhtpqDG&9#1j7FK&2IraiLqb>WlDan{o4-|P1<#CfbCviBKt zS4MsV6-XSkl4H- zS{gflv`p|z#H?9OI}fx=_xF~}aK8--dqj&%g_`yE4cyO1G%9Gz)uqMaoGF=g&IH#? zV!4Lro!~IHV%4Yp?JG>8jq_i9p+_=(gh?Q`f2md4ao{q3f;K(9Hx zMuyjm_h9hdtP+qeQCXUNqvg%M+LYzRF9Z zMMT`C#q1vi{T-8V$-Mz+)=?@#G&pNdZtMqMM@#&%?)zr>u^e-+Y+fYR8&fG1v?BB{ zbE0o&n868pK@W>C%Vt=pTRW{^i4CKri*<`uq6wHk%9=S6&1iXfL!+Z_czyW5%rY zCuDvYrB%#Vt(0K!>JH{yCSQ9qG+lRi%Y7~kBGXN{sS73)>jg2+zzj@{gW@WR~u>$Kc>TFOtQE~ytUYlkG zr^aH42aUsWqOIdx$t)?uc+%X7Nh#cvX^8z&&^=T6ADhefx>Jp?#FKp-OCZHKN!t-r zbaZsmv;J7XVGGN_q739L9yp%MQ`O*TBfIbBM-l5w#7%2RVUdG!$RT#&ML-DhHLrDR zC`)cRG{YGw&L6El5|4QuC z+^H$4o$@v&e&w{=T4T&gTcdt2;73w&w057D_pNcSSjZ>fH;+E{i!hg|vN5*!KEu^n z+%*5~%Me^t%{ zi+R?%!cbW&MyhA;bh-47X=k{0{|V!>8&=Yql z35DTwFq{7JsP}>6isP5rO8#+x<=%Nz{jdG&A|D@L`Z^kMS(aiZ3JVJn&nO(8eqGcJ zM>+nZ1bpTjg~!gT#hS7q(s7HrB}$*>%k}$eaYGv?6m-{Lh?N z7xd=f&xzKo+a(i6x=X0bX{8$oR>a{M;_rY99&LHG_ocH1(!ICvYL1ui^1f1R#G25K z%NCsmNu+2y8L7(zrOvHGSMu1f?t#s^vJ{P{hL{)wQSIY$C8IeB0Zu8a-lY~bp#(Wc zg6U|KxGR<3$mq6ocA9)#f%soXsY*V^*3AX8r0uG{%^>j)PTiVGGA66VsCTqF z7d%?^27HJAp6u~dS*d0t_)vS@p)RPUdh@GJs+L4NeZZTKAbP8V*c!=h*1VKQM&B4D ze`iY@*``^KWxHfY6!Z7Edv5BR@y;{D0LnMtM@d#^m#OV*Pp$4AnqpaTNg7)m`JqYn zT{62-QFs6C7&$3zk$AejN?2D5sEIc>30t_V&(N$>or13!Em)JswXYBqmZU8mL3!_*!ZdlKoklR^wzBT;`7YPUhjQU6;v zzX|V-LCkPS(HstirR>SZ2NBsAIi_Z~2?1MH%B56V zWLaZ12eebYwNq^TkgO~xDVhseca>{s3|Lwy4N)-N-7?eE~SV|eBh!gKjN^)|>{RqguuCJLN7AVPk6 z#%u;P^gHs0SAlfSrX~6E2$A4$%rAI{3P(O-UOHRgPH{N@wP{IL@a<g+*szsF*rb%E)~CV zwMvXiOYa=xEKL9h+5u$ZpU=-zq5R*;F9?C=jtq?Rx!M;-gRozVVFNFY*4DOG;@dI9 zFskZGf5bgdfn|a8vxVjzec;~kfd4D` zFLK79R3gSq#Jv3H08N_`krq7%Hy|&u1Fi(Keboh4>px zj9>!cxP}#oD&e!pwEYRYu@4mHaK#}fCnv-YT}|F4&JUFr!kMrc5x=FO^6>k};YiS~ zb>MH2Q*N+WBRSy>3Jo@F#_*~T@D>JgQTy{;fJFl@lA?QKOJ}jObIAYcL|hkz{1F8{ zeYx*SKp@uOtsEI(e;)PONI(u7!66-a69yEW#|zv_I}aUy`#IECHe*wv$&wU>FLJfu zXGNr=Sx}g@AdDi`9T0x!;7mck5?2EK8*S9V15|?QF7`E4f%_UyoaH%xFPSh@uE}WV z9L~uNz z<=)@hD?A)VsC}q!$augxt{lkfl+eieNjNNJ@#E#8y~8K9eq^{Sibphv9+h}SM4pkD zq1TsBIi4iPCsNF%0{XYAT7o-^y)%kMSq9*F64C-L5}`O22L3 zTx|;04+tZ``rJl5(h|M@D#3n#3Qa}M4>g9eX2A==?jSbCuaD~J85tQf?n5D`cbW3m zRK6O;|7h*Zsr?uKI^^4oflmcaZx=u13m3p z@dq!jNbk|df|5fuR0FbCYD;`~{Nc7Nh+Mx^KM3{aU6(QXVbpB+23;@;q(&l`*NbaQ zRd3|58n0yVtK?cPeAcoORgIj7Y|TwDZzuJB-#G zFINH%Oc_q-skiEycc}d>@my zQ_;_aGGCB})eje*Ny;xZ!brT2=dGKS!jDIvYn((KjD09|ax2M@r;cu}q8dr8DJv_h zm<+g$ixCQKhLy||o^)kYEIMzs!8LBTS;IazH2Q|mx0Y0VO!v9wsIAw$XNQQMS-+b( zXFy|RkCt6o?B!hj-0wlXE;W+H*rXl^{kv?huIbGIbE{a&dRp1ZHTJnAq6QwMZX4 zqDF5lfS%*){;qKO9=zzuCll&bT$P<`JiSF|T%M+T^J{>SRNRJzc!zl-U+0f|FTeeV z%*K1MYIhI$D2m6~*ElS8bgImtEY1cwWaB zcJHjFh2O|k%3d11 zraWyZ%^70rknFr(#3(FKF|aZbXH6JZDY>y}{=6z5_u`>x$?5oh ztQaJ%J6-a-ebHK!D5sv20tN3;Q;5qO5OL5Om4CQ`OU%#+^*`hMwZ}?#0;q-7&uJTc z_CtRKN+sePtv37RLOaaTuBy}wPptaGP%m((EA9sSe(mWt=Um^4%jB=gS`cvDqUCJv zmDtXSa|3Rln0l%|tz%B{*|A>^7wa_NTPEGtJ_qjqxNF1l?c8}19zjmOFItO%K3!V0 zzV4olyI)v&@YX()9JblrE>@NJ;kD?v0BzoWkz&!}W71>Sue(`clB)X;w^lLba-I0T z&*g$r|F7G+mu_p_x#PlOv}6xp$!<=Mm>Bh?XJ+{$midbu=O?+0Uz>e#*7=Oq6&7E6 zb>sz7CXFoF_`Anw$p$f(EL3ZI^0i}RiCnfC{i8uAppv+SX69CrPUr2g86YQm`S>)L z_o7rhm3zGs8aYdelZ4Z(_jnMxL;9Abc>WAi5-lbc81f&!v3OXfGTpJch}5%&RYQGX z4Ry8N__AzWdMU5b@xYqNhwc81R~+c96$+H?x}9;x@kNI3V11rq*zc=U+IH|BR_UhP zOFQmZ{V~6GMWE&Y*AuMNlNF7}9@SaNObpQ0W8P0~>GNDI+Y{K<%R6-GoxQFaX<+c8 zeo zY27!;cq1va7x@SktE#GkQS~`V7jUdo=xL>fSs2%A{KN`{*+eb8XkU#5gBOJz;)>GVIgRD(USuQ*SVpA{DMjBY6_teJ?^eaOmz0zodU?6XsRLM>){}gOD;c4ZCOTte>$AR@j1^sG z$O}Aa@b>D9?8t3TVK#h>KuGBN{-gK#kH=Eu6>kliw# zsg=QLE9>CqtjhJ#+ofTxdiLOChOE_G$)J{{j2)q}6KBjzzQwZe`SwOnZ~ZZ&sFzQn z#m>7lUIuU&u!LM}9}{UdqHGCX_&tPefZDHv`Hce+o_H|@BcmNJxD=M>s#|4KoJj!|-(og2{_BjnN?L&0@zY>Zn5Q|^(J7ALZ&fGcCmWN4(LF3l6cpWCtqHMaFk zkx=@;c|&P#&N#eS64z*N6uN(+k}~H>Xl1xVXV(648vnqUG+Tr{n47p`!8N9;v*zW_ zQc5v(8|(9YLlYzF&yD7x^J#rm6To&`stbN=ABlTJuiUeP!>0WL%lt`Y)xGMLj4?A< zvLT(Vrh6Q07RrZ)D^W*CpbsjIqjwk;CNb2wKa~Fvgf8wM-KB8}cSX0((J^sAM;_Yv zmD3$q7&G#dJsj0dkF!J`M3*Zs`XdSROH9#|X`Maun&iRS5pNfpG#h|MR(4)uK#5GNra!Fdvg zdRB1CD>u4BvQu2%oh}v=6N3Z1Iq3+*H`G%Oby!*b62-u~M9N|UL3QCB5s8+Bmck0? zHo<=zxAO2@dcMG5=f&7{2eX&R36^f_QlHksx@=u`gUuln4);AM@@eeRVcmckFPr${-kvNCr%-Lc?aX5+b4vigv(o}hZXJjmJiz3 zC*V6UZq~8&DQt$lvU2U*o%i=?+Ok|0@;Y|7d2r5W+Zd<81|9jUW$k9-ygMc}akF-> z?_Lv|+HJEkCoqm9V+==Yzmv-HbFn5m$)c1(nK-_ zRz=n~yz~!!_u#Ovzb!DHfbsmvz9SMfrD?p<%MDz=bnQ9ASSa^Cx+ zwC-2%ZVP%U=q@eQtt{O;c}b~>*_@Yc4$d{=pAV#=^Hr|vYPUyhZ+N#}WPi%St^o7- zPj!p(8?7Z5+&34ftgS3dZTrye(D6-V-7AS$=e>jb7BHKI;Xix?Z;)`aMQefLQ34g9 z%U5D0D;t})w|9N#t4?V7jL<(ret$(r{))#t2@O&jquXMdGU`|`o!`-%DcITXzO9ub zl{ZsF8?|_PZhU;0ilW4x(AeBqp@hnV9K)&yD%6iw`Me9dm05GlKfXPxA*HsyXYMI^ zzd@g%DF53t%7n%zf6dL_BPz~%s$cSicJq;^#&&!*6QU*iIx6LR>z4ZMdHzCoW&T7# z=f=oOosZf=m%rQmK|Z~~_k-Q7uZ_;-Ckrjcot6>_YX5QJN#QLMcXPdVbf!#vosm(w zr6pC+u=Cu-u&}WEK1n(bf#`ll%TGot_0t182DHX5>iiC?VX6FN5(xqnkFP&g0Pz{u z-XnPyg^IwS##R5Z@_m9pSim8OvxE|E2PlyRNHxSDj-nz(F z<2}Br*^kuV{%Ett-K*VWSE{8*UVOA~*?kM&&93!D^)Rh6{_YH6m z&L7Ck@~!?f6fz}a+t@vxo%_rtJ$oI#gEVUd5F}C}P%NPr+2%ZIn8VIa^hU}Su!oLQ z`jp&^7i(mvv8Fn~U@Tq+`XwT;b_p2}nX@^AYw zhBE}&nCBv&=b4!dS*KsBODGoci-=v!-~0lF^!TsgyWTUC3+DXE#dF^>)8;I9J57fP zW6Q+xV%2~C#|xa~Qrn%BOusOEvJTVF%-~|TWz3jO#}}U(`y$3BQ6pot>Fihj{m7*c z#4(E&6Qx%@XSQVRml^9c(p55gCgY=>vr4Ag%hRjW3@gV01Ss~mOD}ysOE%K+ufMeK zF~UL1TFvpjI<82`+jKyit(RfXN+%Wl8YSu5&pLCI#cA$ON1-S<)cOZ2T87aUn$G6& z#FSk<^*k;MH(b_Kr+%c7M|Pz^nDXwC<227{;Y=s-fBr7G=wEn#QQhFfhYnF6CZYum zcxr2mE7wCEocYZRad8>gfs{!gQa+Qo3jPMG6DNJJK0|L6CkI~cj(h>7vj_-8V0vDg z4i92_1m)k=%h*Tk6aZ{vaT-z7UY2=z)}f@Fju?6iMrJbZ#tg#g6B4HnSkSkCc`Cd% zaF>c;6G>H?F4b`rOurh_6l6zQfY*85(OjZig4DG30#WK}VpQ*XIlJj!19%-nf8gaP zoF^gyvD1*4p*kF~=-&c48rwpoi@)`(I8|%(HliHldgptmmSda(M`G22yFv|Ssvi9% zL99-T8`@?~&ej+>Ipu`8_e)iQ5I^l5^|>YG%COzFJNRt2E-WF)$24~9^lt^ZnNBLbAxSNjGyp7ovJy9Y#}aGczt*81Ee&j-+_#p5=+FI z5Y~Q3a#WuGZtraH8JF`{1g-Wor%g3%uwVFbOnLq;xvz?Lc``ob`HK8u?865BlKq-% z+Swg>a)MY~HW}aZUZiLs52NcQ;?Ti$*LmK_d)~ZycTY`?TK}~E_R+7QMr_OF9U8Ko z#a*}Td{wm~+T9$v!UMu5Q&>PzX(md6^}}~i*>1DhpjXfXYV%0H9ihX(gVF*z>@~3M zk}LkD_wv%n5eh#EToVusePWm2dE>H5Lre2ZeZ<1<+cNdMJHFH}of+>u9Je!YF#5Wc zvv6si$L+Y#j)eU=zOsE&G_tNFmFBsNXgr#rej~U|tjW!JGOIC5zH)F*EQfphwoLY_ z*7&~lzFuDJrELgLP6A7Lg-a~^Z~zkFfXVIZ-;rjf3QPz*IVK_^203d_N=hZ~I{7g@ z4WRT^3mc#za0DzDt1?cKuMfWe?zpn{X|;E*YRVPdHIMWK*KwrC4BiReqc14qu^$IP zc6paZiewgFe%)Wo!sT|?oFX>y%&Yp7t{rNtb@7hb$gzA$n`%~X!LKX*>c=@oL)v}B zi~}l+douX2~vhT)jb{p+{_YE%lbVS?3a-E7_w!88mTybx zxfcs$fukVa9`X19JyV7(`VL@Tkw8U1PJe0x;UTEHHxXh9-0AW50XSaWUAixl$}=c% zZ?r>}G7+8A*t{#Q2aHuaF;KXK5xrlMg|Wq>{=>%U**F{4;BcX{!Sb;#k>v?oST;bU zq>t&kNNt+$dJNu{H~3T7!b0H15;X`Z`8R<68XYIk6y0?Csj`X+3a{{2sfCJ)ioT)| zFR{^YKOTffueLpP)+E?#RsF8N4vJYn?c#r!_>m}t>_3V1e;pff=Yw47gOo0hHaz|{ zw?v8K`w#{J&pO zWE7eb@gw)y>0OnqzSk^b@cl_wXJ5WWblPYeB>lkeufm`Iw~zgPA?PbzjMCHp`dGey z3s(?tB4S3-E)hsrwFic~ZUPub2zWsOeZ14Hp4^$ZxXe=y(q?trYyb)(W;UUc2;EI! zGV2v$N8bq0^CpKmeXvWLW+FTyqHevfo`%vJ=7oE4JQ&}H3J49}kirlVA{>%0k;8Lt zr%38|M-Wq6EQmSVj3SpBMp(QFkz=be&6!UQDQJFb4zETm{t833zv7tBAJQHl(*hF! z!8}6tYKs&KM^L6yL-`H9Idy`;Q>RH195dE1FC#Du?Tku?3=N|&fyKB4j9hO|&k%IP z#O9}Uyxu_wW}4ao&`&hl^k{4YFug*t`E~X6%S1$qn9bw-FF>dHWO5;8@l(_F+^e$H zdd`00O^I9EhRE|;r$^`v&H%NI{Vq%ZYr0cIBumj?ROaVK<$nk=%!X-?0gbSL%2gx+ zL&SJ1UnE0^*KQyV)uB35|G(3X7Uaxiz4V+kcln%)02|@8kMzpDlIRgsE*p5)o%8-ueKZ}zKSep?jEY?Om9Y>VLsMlbzDr7M79*aR=|z20Yg5x`k- z->?cKS0n-PPCP3DbnO5 zdbpFD%fJg@Z)8v|bWD@^7JTW6aZ-z-U7xC&!M5GIAJ&bTYzBb;(zREY($8=GxpajZ z1-wod-n`pgjG{h%sn7V8nd32lie(Kzd7!0XK9$#|fBbCCcjlSCnatB;|CmvS{x{$J zpWOH0*Xv=16E@pVw_du;KFa=>N1~~)<6GrmZ6}1{{2Uw{xIMpR2Nk61SBqm zd+K)TTcCkY%=tud2J#8dH%`vx90b$~Md5oLs17$H?c{|ks46TrTug*d*sd^YOD9YW zCL8e40I&N>tYr(1)oLBo)p5}uTeh&JRzl6yV^LoEK-&%)j)42v3! z@_5URC=*RgFyZN-qX!yYI$ujwU)TjA?!HF#*8;)E9qdjTMU=34^JGNsZ-E%<#NKNH zzDybYiYwAORBQ%*d6dDEQFd|&7D;LCUj&nTb(P<(aFC8Nn=g@L> z18axC<2uhBr(mO-D7^>74NXjG_K@fC$UN*Da;Gjm7X3{0JgC==lG!w4Kmj>$ql9PC zZS)V+{|tnchnn@67@VI})<9>etmm2I!g+AFZHEU>6Ovq_HKBxG0s3qz>_VS?3w$OG z{BP+MdLh#yH!pei-g)$xwAkk*PfH1vjg`e@k5^C=FeeW{o8d{MKKk08#E-nfBc(+Z zDohYVsa$jM^gJVhn*p9d^ZGGC1@o1JnZ}VOXAo?f?g`uuj&P@FpVz$#AZY`meUlgT zA=Iu$<1+paiIGOJ>3vZxk{)PKK+1+DypW*6Q>T$i@;dA8Pn^c>v^`awV`OQaz{7RN z4K$z}MCVme0C3{|Y}w za157Vq}M_P@^r9|VXg%+dPxC+;}w-U_4646>qX*G%Ya*~0j91r5Q0X3>eS!GJtx`< zjxODGGK=YCLFO=?)(Ivq5WZV*C_a#sQ7Z}s^mH!Wy~5nQ^xR8xECfv0n>eZ=l^|tk z0vJna-=DGd;ZmaE*z1x20pM+rX2CQRP&kUvBqps(O9}{U`WYbzCa}qrXwrjMQixfb zcK{s!9iDJ+5-|gUIeG+LxgbkNVQaKt5{j!?hj&nhxx8mffEn1G#2cLtc%r-;_oujL ztoJdci16c>F+wGnuW8-;=;nFumMpa@6mO(t8Sxhvqs3mqGmIGOOO`w;6!Q{^*<6~P znERf&ZbHhRFuzs(UGT6eLjXlZQ(uZb>T3i8#N3V~D%mJx&Dm$*irZ`fP;V59oD{2* zXGj?UG%2|^7^-a_GHa*CQO{Et2twdc8XZJdgW#J$CcMF%Gz2OSjf^*i&u&UFNUFd9 z6sRVGX;Kk3sX8+4XYSr-K`yWGJdTCQKqi**{9YgFb&`T(BNbO5BvlFm+>w{|D8C?&86 z9q@j)OZ+gBA1NeuKnNF&C6xE_r5d2up%15eduLQy!z>Z9=xb{GZW~+*QIBZ@E4(H_ z#6+GmvPjlCH7rp(`t-(z!lESfe?GXx@#%UlCQbG(% zm}}s=Oh8~|Hs=G&RxOO$5o&+ELnOtg7sm>M(i1yzp9(N=O7oMbCWk{^gq+Ll2E58m z!%1CBpwUes!yPUNb(cPBoZf5L z4wImM&`Evv&)uxghHI>mV3%a=SP7MH@}RDni3!gcJAlrcfq8zBn=4Qf0c~MJ%;T?S zgEp90)sDtpufw_OTlvkOk6+ui(4V)lS}|~;&{b~lz-}OKxgJ*;e*jwDV5g}ukjHw3 z9vUYAKUoD8kBewSW=eIYg+L!(m7SdHa?mz;wzs>iSzTtLfCR-h?RW#L8`!UBBx`s= zFqosvK-72N**p8Jf5?H*feosp#CNC1)D8Ht`O?;VNDl{JF%k&cWS*)X@DkJ!V}*x> zZ4UaNW^_B!jwKHFdMWq zjo5wnFyCz(h3dz|x0C|l!i4jYI`CADj)}B%u7$v(g*WL7IG@57klV*6UZce>1w%g< zqtS>+h%`cSL9GP)pGK*IGg^F>@71S~AutYy>GvoO?L-0hC00~RsqxT2?~(-zo=SFC znrCwwFo%?&79<8~B;5>u1oidE}>RCm2^r7(96A zT3{#!e_-X_y?Z%QCadS2NUAa{TwgoI9E5Uz%o?0$Q2FsdjgIq*5g(A{#UEuMO=rHu zJFpmJ4%stdOMFDZ#9jLl^^b5IM+0uA&XFz=mkfCZU=k zW&jwE&8Fo=gAPk@N|#_L-2+5_&L1vpcd4W)8R`4YX>d&vHzrVB$JnRN;{n{+N@K4=T<)1LyYD@W=|o1s2GVb134+Z7Ljf20L5~ z#<2m1?CD+oplZ^vx}7i;*j#8pzm5cqInPCV7O8Ex8HU)H4WMY8-c^C(vp9@;0iJ|z z(1Y^(2hNKF6dQfTJlJ$-7<+lo0c#}sKLE5pXyhlqls$?x3x!7`UaZ_PII{;w~QR!mdFq9b$5d}rS zoJJrVZ*XK=u@aaE(QFgNIf4PA0}=Kj`Mx5gm?F%7B<{tb21Ot&F~2m7#8+TV*wN5Y z3-Dv_z?`EHZ)T%0!9$*0;61$J&Qk;1>MDmxq8OnV6ocfJ5fuApabMrSvm{>vycT7s z#=Syg2Y$NgjmzX^h6f%Hd>z9#HX{n8)8EV6I~)dQ8S+Z>@iZ|GX82vJb?aWGkU>@l zb>Y47nX8YN7k4zhdL9-5Kzxy8NowEc=xokzO*;%fG6uHuh#R-KzVu*+syW*80}y=5 z34IZCU@i=4Gxm9s_02HF<^@H0d8-g9$K*_2su*}2vCB@hi4?$F{UbawdfLyZ#VYR= zT0!((MVBC5kcvaH0c=;xbH3IfZ#O_Wyavwk=7eW%R_smTaBltR=|SxffB^J8k_`Tk zI=pe6yCzS^2em?1;wz>iTU|2%Rtzd(C6+#_I&yT!Bs4CWgC#_IpFsa_2 znJl4cH4Yy{-o)r?!{;*7?gF?@6@en)_*_?tg)SnB+&>vL zGCpl%9D;@$Qi71=SF6yfy${DZ&8VVrzOYbenr2ZDG(YcB%}hyPN{;^Kl~!i94e@y0 z*`eOXx2aa&t(9d zZ?V8}xy65Ycee`HAo;W!$S>yZf%vuoyj#lvy|xE_sIRYtM=qM3EVH{kPbk(e!1&RN z)!%t-LI$mMpE4FXe585{LC|TVrD6~j#jKJX$fz*~E z@&_EVtQV^v`nXXK9_tVSz2;Kwlj}TSE$>}1)7^UOgx-;V$?aQc zkx`6+Wj1JUq5%fjodZTEcGv%r=sO`Kv-fiaR_iV-jLLnt9%Co$f@D+oqv4kX=y$FK z1{$ZsTg6x_N?fNPNi4LYNzn14YDI)&@kr7 zi=R3nKwyb>6-CAEA@L4qP9#y5ZHIafLy_3}Ax)b`vLS<}Gl-K$c)PYrFEbTHJ9Dhn zZ>b=U(DFlK5oWeg8NtC%I%iEq@P&ExH$lL+aT(DY}@l`BFWci1{1QMt3mu1kk{(`mn&S< z61{4CA5Q2<%0VNJvy=+)z);=`7cL0MPZ;rua+PT~*RKo`P8Y%Y!^Jzy(uckiYzFR2 z%z0CE45H}i3D1YA_;VZ?gCvW5^TTPT${%xI4RgaJr5foGbyeHwg{lpRH1y2;&>R&_3U}n_(M-!Do z(H$RanAL6B<$oUw^8Z~C3C3CkLLSzRl0!6a2pLyN1XJ6f+^)98f)~dWilhOS@r>Y^ zOf{Hi7+kc^M7YL`mJXcSpJ`+Q&a~A=#eDD#G4dUqLsC?-;Zq<<2zDbtL{YS?X?o8- zyFrUI$eho@81XA0VpqSt`z94s;A`*1+or+KKu!VpMrtcS`u_2UD?u0t%8$Z=BGHYI z-JsZjV9Y4{UMc*OWmJ#wBpL(nHK}rjoR^?Nd`0V7)LuFb< z0~E~7DFpp;*5`<=#N>1`_5_G-MS91x154}}C`8m_h5^Uw2y@UVLMk)>o4+Ry;Mk9b z(~x+iB>Ti!_{=m(=j#t>D}*R5ZLf$zs5+=c*x)PR>TIL)jZzc{s+utW{1p;rn8^Gs zQC7yR&IuVzU2FOUOglTHo^AkFxSq zcr3=Pvu4i3IPki)t#4En)j_$U2|4imqo3(RH&V(JN-AWz-#CnV68s?46iV{Eh1Njf zPS*v)^BPTH2nd6z%7s*aDU}&0672Lq8VmM|NSo9UhxK_2S6~Dk2DwQTu+u0qBC=Do zhtv-Zvvhtv8{J33)-HgjUFE+AMBHc!ipC~WevcwTT81$nD+|vuVHM{{Wu!`=|f_ literal 34329 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 diff --git a/reports/pnl.png b/reports/pnl.png index c9813202201fc696825d29eacf745293e7a11f60..e6cf9118af79ed1216c19b265c1b2b02ed465778 100644 GIT binary patch literal 55870 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 HIN<*STXM#X literal 48359 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 MDcs7s@$kie0h{f9i2wiq diff --git a/reports/summary.txt b/reports/summary.txt index 6e837d8..c0d3f67 100644 --- a/reports/summary.txt +++ b/reports/summary.txt @@ -1,21 +1,21 @@ BACKTEST SUMMARY ======================================== -sharpe: -5.633716896325243 -max_drawdown: 48.659457956769764 -max_drawdown_len: 451 -total_return: -0.48968077055625825 -avg_return: -0.0010117371292484674 -total_trades: 33 -won_trades: 20 -lost_trades: 12 +sharpe: -0.18318054011826762 +max_drawdown: 31.155770933507835 +max_drawdown_len: 403 +total_return: -0.01938978410684507 +avg_return: -4.006153741083692e-05 +total_trades: 470 +won_trades: 172 +lost_trades: 293 SIGNAL IC ======================================== -ic_mean: -0.006912277738865651 +ic_mean: 0.006912277738865651 ic_std: 0.3332983458971776 -ir: -0.020739010030965125 -rank_ic_mean: -0.006980297831283274 +ir: 0.020739010030965125 +rank_ic_mean: 0.006980297831283274 rank_ic_std: 0.32283972442680237 -rank_ir: -0.02162155801513181 -hit_rate: 0.4811715481171548 +rank_ir: 0.02162155801513181 +hit_rate: 0.5188284518828452 n_periods: 478 diff --git a/run_example.py b/run_example.py index ce11b48..8411dd0 100644 --- a/run_example.py +++ b/run_example.py @@ -1,10 +1,6 @@ #!/usr/bin/env python3 -"""End-to-end pipeline: HS300 universe -> reversal signal -> cross-sectional IC --> multi-stock backtest (AlphaStrategy + PercentSizer) -> reports. - -Note: this runs the first 30 HS300 constituents to keep runtime manageable. -Downloading daily bars for the full ~300 names takes roughly 10 minutes. -""" +"""End-to-end pipeline: HS300 universe -> momentum signal -> cross-sectional IC +-> multi-stock backtest (AlphaStrategy + RankEqualWeightBuilder) -> reports.""" import logging import pandas as pd @@ -15,8 +11,8 @@ from backtest.runner import BacktestRunner from data.downloader import download_batch from data.universe import SYMBOLS from eval.metrics import evaluate_cross_sectional -from portfolio.builder import ThresholdBuilder -from signals.reversal import ReversalSignal +from portfolio.builder import RankEqualWeightBuilder +from signals.momentum import MomentumSignal from strategies.alpha_strategy import AlphaStrategy logging.basicConfig(level=logging.INFO, format="%(asctime)s [%(levelname)s] %(message)s") @@ -33,8 +29,8 @@ def main(): data = {s: df for s, df in data.items() if df is not None and not df.empty} logger.info(f"Downloaded {len(data)}/{len(symbols)} symbols") - # 3. Compute the reversal signal per stock. - signal = ReversalSignal(lookback=5) + # 3. Compute the momentum signal per stock. + signal = MomentumSignal(lookback=5) signal_series: dict[str, pd.Series] = {} forward_returns: dict[str, pd.Series] = {} for sym, df in data.items(): @@ -60,7 +56,7 @@ def main(): sizer_percent=0.95, ) runner = BacktestRunner(config) - builder = ThresholdBuilder(buy_threshold=0.02, sell_threshold=-0.02, size_pct=0.95) + builder = RankEqualWeightBuilder(top_n=5) for sym, df in data.items(): df = df.copy() df["signal"] = signal.compute(df).values diff --git a/signals/momentum.py b/signals/momentum.py new file mode 100644 index 0000000..cd8f7af --- /dev/null +++ b/signals/momentum.py @@ -0,0 +1,21 @@ +"""Short-horizon momentum signal.""" +import pandas as pd + +from signals.base import AlphaSignal + + +class MomentumSignal(AlphaSignal): + """Positive trailing return: stocks that rose score high (momentum). + + The signal is ``close.pct_change(lookback)`` — opposite of ReversalSignal. + """ + + def __init__(self, lookback: int = 5): + self.lookback = lookback + + def compute(self, df: pd.DataFrame) -> pd.Series: + return df["close"].pct_change(self.lookback) + + @property + def name(self) -> str: + return f"momentum_{self.lookback}d" diff --git a/strategies/alpha_strategy.py b/strategies/alpha_strategy.py index dcceb29..19f4eba 100644 --- a/strategies/alpha_strategy.py +++ b/strategies/alpha_strategy.py @@ -4,23 +4,49 @@ import pandas as pd class AlphaStrategy(bt.Strategy): - """Trade each feed based on its precomputed ``signal`` line. + """Trade feeds based on precomputed ``signal`` line. - The strategy delegates the buy/sell/hold decision to a portfolio builder - (e.g. ``ThresholdBuilder``) and sizes entries with ``order_target_percent``. + Supports two builder modes: + - ThresholdBuilder: per-stock threshold (passed ``(signal_value, in_position)``) + - RankEqualWeightBuilder: cross-sectional ranking (passed ``{symbol: signal}`` dict) """ def __init__(self, builder): self.builder = builder def next(self): + # Collect all signals + signals: dict[str, float] = {} for data in self.datas: sig = data.signal[0] - if pd.isna(sig): - continue - in_position = bool(self.getposition(data).size) - action = self.builder.build(float(sig), in_position) - if action.action == "buy": - self.order_target_percent(data=data, target=action.size_pct) - elif action.action == "sell": - self.close(data=data) + if not pd.isna(sig): + signals[data._name] = float(sig) + + if not signals: + return + + # Detect builder type: if RankEqualWeightBuilder, use cross-sectional mode + from portfolio.builder import RankEqualWeightBuilder + if isinstance(self.builder, RankEqualWeightBuilder): + actions = self.builder.build(signals) + for data in self.datas: + name = data._name + if name not in actions: + continue + action = actions[name] + if action.action == "buy": + self.order_target_percent(data=data, target=action.size_pct) + elif action.action == "sell": + self.close(data=data) + else: + # Legacy per-stock ThresholdBuilder + for data in self.datas: + name = data._name + if name not in signals: + continue + in_position = bool(self.getposition(data).size) + action = self.builder.build(signals[name], in_position) + if action.action == "buy": + self.order_target_percent(data=data, target=action.size_pct) + elif action.action == "sell": + self.close(data=data)