Files
NewStock/main/utils/__pycache__/factor.cpython-313.pyc

196 lines
48 KiB
Plaintext
Raw Normal View History

2025-06-01 15:59:29 +08:00
<EFBFBD>
<00>`<60><00><00>x<00>SSKrSSKrSSKrSrSSjrSrSrSr Sr
Sr SSKrSSKrS r S
r S rS rS rg)<0F>Nc<00><><00>URSS/S9nURSSS9nUSRSS9R5R S S
S 9US 'USRSS9R 5R S S
S 9US 'USRSS9R 5USRSS9R 5- S-
R S S
S9US'USRSS9R5R S S
S9nUSU:<3A>US'USRSS9R 5R S S
S9nUSRSS9R5R S S
S9nUSU-
U- US'USUSU--:<3A>US'USRSS9R 5R S S
S9US'USRSS9R5R S S
S9nUSU:<3A>US'SnUSX`S--US'USR5US'USUS-US'[R"US5US 'URS!5US"'USSUS"-:<3A>US#'USR5RS5R5US$'US%USS&/RSS'9-
US- US('USS&/RSS'9US)-
US- US*'URS+5US,'URS-5US.'URS/5US0'URS15US2'US0US2-
US3'URS45US5'URS65US7'URS85US9'USRS:5US;'USRS<5US='USRS>5US?'USRS@5USA'USRSB5USC'USRSD5USE'USRSF5USG'USRSH5USI'USAUSG- USJ'USAUSE- USK'USGUSI-
USL'U$)MN<4D>ts_code<64>
trade_date<EFBFBD><01>byF<79><01>
group_keys<EFBFBD>pct_chg<68><00><01>windowrT<><01>drop<6F> return_skew<65>return_kurtosis<69>vol<6F><00><00><02>levelr<00>volume_change_rate<74>cat_volume_breakout<75> turnover_rate<74><00>turnover_deviation<6F>cat_turnover_spike<6B> volume_ratio<69>avg_volume_ratio<69>cat_volume_ratio_breakout<75><00>?<3F>momentum_factor<6F>close<73>price_change_rate<74>resonance_factor<6F> log_closec<00><><00>[R"USRS5R5URS9$<00>Nr<00><00><01>index<65><05>pd<70>Series<65>rolling<6E>meanr*<00><01>xs <20>?/mnt/d/PyProject/NewStock/main/train/../../main/utils/factor.py<70><lambda><3E>&get_technical_factor.<locals>.<lambda>3<00>+<00><00>"<22>)<29>)<29>A<EFBFBD>e<EFBFBD>H<EFBFBD>,<2C>,<2C>R<EFBFBD>0<>5<>5<>7<>q<EFBFBD>w<EFBFBD>w<EFBFBD>G<><00> vol_spike<6B> cat_vol_spike<6B> vol_std_5<5F>high<67>open<65><01>axis<69>up<75>low<6F>downc <00><><00>[R"[R"USRUSRUSRSS9UR
S9$<00>Nr:r?r"<00><00><01>
timeperiodr)<00>r,r-<00>talib<69>ATR<54>valuesr*r0s r2r3r4=<00>B<00><00>"<22>)<29>)<29>E<EFBFBD>I<EFBFBD>I<EFBFBD>a<EFBFBD><06>i<EFBFBD>&6<>&6<><01>%<25><08><0F><0F><11>7<EFBFBD><1A>IZ<49>IZ<49>gi<67>j<>"#<23>'<27>'<27>+r6<00>atr_14c <00><><00>[R"[R"USRUSRUSRSS9UR
S9$<00>Nr:r?r"<00>rDr)rFr0s r2r3r4A<00>B<00><00>"<22>)<29>)<29>E<EFBFBD>I<EFBFBD>I<EFBFBD>a<EFBFBD><06>i<EFBFBD>&6<>&6<><01>%<25><08><0F><0F><11>7<EFBFBD><1A>IZ<49>IZ<49>gh<67>i<>"#<23>'<27>'<27>+r6<00>atr_6c<00><><00>[R"[R"USRUSR5UR
S9$<00>Nr"rr)<00>r,r-rG<00>OBVrIr*r0s r2r3r4G<00>3<00><00>"<22>)<29>)<29>E<EFBFBD>I<EFBFBD>I<EFBFBD>a<EFBFBD><07>j<EFBFBD>&7<>&7<><11>5<EFBFBD><18><1F><1F>I<>QR<51>QX<51>QX<51>Yr6<00>obvc<00><><00>[R"[R"USRSS9UR
S9$<00>NrVrNrDr)<00>r,r-rG<00>SMArIr*r0s r2r3r4J<00>&<00><00>"<22>)<29>)<29>E<EFBFBD>I<EFBFBD>I<EFBFBD>a<EFBFBD><05>h<EFBFBD>o<EFBFBD>o<EFBFBD>!<21>D<>A<EFBFBD>G<EFBFBD>G<EFBFBD>Tr6<00>maobv_6<5F> obv-maobv_6c<00><><00>[R"[R"USRSS9UR
S9$<00>Nr"rrDr)<00>r,r-rG<00>RSIrIr*r0s r2r3r4P<00>(<00><00>"<22>)<29>)<29>E<EFBFBD>I<EFBFBD>I<EFBFBD>a<EFBFBD><07>j<EFBFBD>&7<>&7<>A<EFBFBD>F<>a<EFBFBD>g<EFBFBD>g<EFBFBD>Vr6<00>rsi_3c<00><><00>[R"[R"USRSS9UR
S9$<00>Nr"rNrDr)r`r0s r2r3r4Srbr6<00>rsi_6c<00><><00>[R"[R"USRSS9UR
S9$<00>Nr"<00> rDr)r`r0s r2r3r4Vrbr6<00>rsi_9c<00>.<00>XRS5- S-
$<00>Nr r<00><01>shiftr0s r2r3r4Z<00><00><00>a<EFBFBD>'<27>'<27>!<21>*<2A>n<EFBFBD>q<EFBFBD>6Hr6<00>return_5c<00>.<00>XRS5- S-
$<00>N<>
rrmr0s r2r3r4[<00><00><00>q<EFBFBD>7<EFBFBD>7<EFBFBD>2<EFBFBD>;<3B><EFBFBD><11>7Jr6<00> return_10c<00>.<00>XRS5- S-
$<00>Nr(rrmr0s r2r3r4\rtr6<00> return_20c<00>X<00>UR5RSS9R5$<00>Nr r <00><03>
pct_changer.<00>stdr0s r2r3r4a<00>"<00><00>!<21>,<2C>,<2C>.<2E>:P<>:P<>XY<58>:P<>:Z<>:^<5E>:^<5E>:`r6<00> std_return_5c<00>X<00>UR5RSS9R5$<00>N<>r r{r0s r2r3r4b<00>"<00><00>1<EFBFBD><<3C><<3C>><3E>;Q<>;Q<>Y[<5B>;Q<>;\<5C>;`<60>;`<60>;br6<00> std_return_15c<00>X<00>UR5RSS9R5$<00>N<>r r{r0s r2r3r4cr<>r6<00> std_return_25c<00>X<00>UR5RSS9R5$<00>N<>Zr r{r0s r2r3r4dr<>r6<00> std_return_90c<00>v<00>URS5R5RSS9R5$<00>Nrsr<>r <00>rnr|r.r}r0s r2r3r4e<00>-<00><00>Q<EFBFBD>W<EFBFBD>W<EFBFBD>R<EFBFBD>[<5B>=S<>=S<>=U<>=]<5D>=]<5D>eg<65>=]<5D>=h<>=l<>=l<>=nr6<00>std_return_90_2<5F>std_return_5 / std_return_90<39>std_return_5 / std_return_25<32>std_return_90 - std_return_90_2)<0E> sort_values<65>groupbyr.<00>skew<65> reset_index<65>kurtr/<00>maxr}r|<00>np<6E>log<6F>apply<6C>min)<07>df<64>grouped<65>
max_volume<EFBFBD> mean_turnover<65> std_turnover<65>max_volume_ratio<69>alphas r2<00>get_technical_factorr<72>s<><00><00> <0B><1E><1E>I<EFBFBD>|<7C>4<><1E> 5<>B<EFBFBD><10>j<EFBFBD>j<EFBFBD><19>u<EFBFBD>j<EFBFBD>5<>G<EFBFBD><1F> <09>*<2A>2<>2<>!<21>2<><<3C>A<>A<>C<>O<>O<>PQ<50>X\<5C>O<>]<5D>B<EFBFBD>}<7D><15>#<23>I<EFBFBD>.<2E>6<>6<>a<EFBFBD>6<>@<40>E<>E<>G<>S<>S<>TU<54>\`<60>S<>a<>B<EFBFBD><18><19> <14>E<EFBFBD>N<EFBFBD> "<22> "<22>!<21> "<22> ,<2C> 1<> 1<> 3<> <13>E<EFBFBD>N<EFBFBD> "<22> "<22>!<21> "<22> ,<2C> 1<> 1<> 3<> 4<>67<36> 8<><11>k<EFBFBD><01><04>k<EFBFBD>%<25><07><1B><1C> <19><15><1E>'<27>'<27>q<EFBFBD>'<27>1<>5<>5<>7<>C<>C<>!<21>RV<52>C<>W<>J<EFBFBD>!#<23>E<EFBFBD><19>Z<EFBFBD>!7<>B<EFBFBD><1C><1D><1C>O<EFBFBD>,<2C>4<>4<>A<EFBFBD>4<>><3E>C<>C<>E<>Q<>Q<>XY<58>`d<>Q<>e<>M<EFBFBD><1A>?<3F>+<2B>3<>3<>1<EFBFBD>3<>=<3D>A<>A<>C<>O<>O<>VW<56>^b<>O<>c<>L<EFBFBD> "<22>?<3F> 3<>m<EFBFBD> C<>|<7C>S<>B<EFBFBD><1B><1C>!#<23>?<3F> 3<>m<EFBFBD>a<EFBFBD>,<2C>FV<46>6V<36> V<>B<EFBFBD><1B><1C>%<25>^<5E>4<><<3C><<3C>A<EFBFBD><<3C>F<>K<>K<>M<>Y<>Y<>`a<>hl<68>Y<>m<>B<EFBFBD><19><1A><1F>~<7E>.<2E>6<>6<>a<EFBFBD>6<>@<40>D<>D<>F<>R<>R<>YZ<59>ae<61>R<>f<><14>')<29>.<2E>'9<><L<>'L<>B<EFBFBD>"<22>#<23> <10>E<EFBFBD><1E>3<>4<>u<EFBFBD>BV<42>?W<>7W<37>W<>B<EFBFBD><18><19>&<26>g<EFBFBD>.<2E>9<>9<>;<3B>B<EFBFBD><1A><1B><1F><0E>/<2F>"<22>5H<35>2I<32>I<>B<EFBFBD><19><1A><19>f<EFBFBD>f<EFBFBD>R<EFBFBD><07>[<5B>)<29>B<EFBFBD>{<7B>O<EFBFBD><1D>m<EFBFBD>m<EFBFBD>G<><06>B<EFBFBD>{<7B>O<EFBFBD><1D>U<EFBFBD>)<29>a<EFBFBD>"<22>[<5B>/<2F>&9<>9<>B<EFBFBD><EFBFBD><17><18><15>i<EFBFBD>*<2A>*<2A>,<2C>4<>4<>Q<EFBFBD>7<>;<3B>;<3B>=<3D>B<EFBFBD>{<7B>O<EFBFBD><12>6<EFBFBD>
<EFBFBD>R<EFBFBD><17>&<26> 1<>2<>6<>6<>A<EFBFBD>6<>><3E>><3E>"<22>W<EFBFBD>+<2B>M<>B<EFBFBD>t<EFBFBD>H<EFBFBD><14>g<EFBFBD>v<EFBFBD>&<26>'<27>+<2B>+<2B><11>+<2B>3<>b<EFBFBD><15>i<EFBFBD>?<3F>2<EFBFBD>g<EFBFBD>;<3B>N<>B<EFBFBD>v<EFBFBD>J<EFBFBD><1B>=<3D>=<3D> +<2B><06>B<EFBFBD>x<EFBFBD>L<EFBFBD><1A>-<2D>-<2D> +<2B><06>B<EFBFBD>w<EFBFBD>K<EFBFBD> <18> <0A> <0A>Y<><06>B<EFBFBD>u<EFBFBD>I<EFBFBD><1C>M<EFBFBD>M<EFBFBD>T<><06>B<EFBFBD>y<EFBFBD>M<EFBFBD><1B>5<EFBFBD> <09>B<EFBFBD>y<EFBFBD>M<EFBFBD>1<>B<EFBFBD>}<7D><15><1A>-<2D>-<2D>V<><06>B<EFBFBD>w<EFBFBD>K<EFBFBD><1A>-<2D>-<2D>V<><06>B<EFBFBD>w<EFBFBD>K<EFBFBD><1A>-<2D>-<2D>V<><06>B<EFBFBD>w<EFBFBD>K<EFBFBD>
<1D>W<EFBFBD>%<25>+<2B>+<2B>,H<>I<>B<EFBFBD>z<EFBFBD>N<EFBFBD><1D>g<EFBFBD>&<26>,<2C>,<2C>-J<>K<>B<EFBFBD>{<7B>O<EFBFBD><1D>g<EFBFBD>&<26>,<2C>,<2C>-J<>K<>B<EFBFBD>{<7B>O<EFBFBD>
!<21><17>)<29>/<2F>/<2F>0`<60>a<>B<EFBFBD>~<7E><16>!<21>'<27>*<2A>0<>0<>1b<31>c<>B<EFBFBD><EFBFBD><17>!<21>'<27>*<2A>0<>0<>1b<31>c<>B<EFBFBD><EFBFBD><17>!<21>'<27>*<2A>0<>0<>1b<31>c<>B<EFBFBD><EFBFBD><17>#<23>G<EFBFBD>,<2C>2<>2<>3n<33>o<>B<EFBFBD><18><19>*,<2C>N<EFBFBD>);<3B>b<EFBFBD><1F>>Q<>)Q<>B<EFBFBD>%<25>&<26>)+<2B>N<EFBFBD>);<3B>b<EFBFBD><1F>>Q<>)Q<>B<EFBFBD>%<25>&<26>-/<2F><EFBFBD>,?<3F>"<22>EV<45>BW<42>,W<>B<EFBFBD>(<28>)<29> <0A>Ir6c<00><><00>URSS/S9nURSSS9nUSRS5US'USRS 5US
'USRS 5US 'USRS 5US'USRS5US'US
RS5US'US RS5US'USRS5US'U(a5USS:<3A>US'USUS:<3A>US'USUS:<3A>US'USUS:<3A>US'USUS-US-US-US'USUS-
[R"USS-USS--5- US'URSSS9SR SSS 9US!'URSSS9SR SSS 9US"'URSSS9SR SSS 9US#'U$)$NrrrFrr"c<00>z<00>[R"[R"URSS9UR
S9$<00>Nr rDr)<00>r,r-rG<00>EMArIr*r0s r2r3<00> get_act_factor.<locals>.<lambda>w<00>"<00><00>"<22>)<29>)<29>E<EFBFBD>I<EFBFBD>I<EFBFBD>a<EFBFBD>h<EFBFBD>h<EFBFBD>1<EFBFBD>=<3D>Q<EFBFBD>W<EFBFBD>W<EFBFBD>Mr6<00>_ema_5c<00>z<00>[R"[R"URSS9UR
S9$<00>N<> rDr)r<>r0s r2r3r<>z<00>"<00><00>"<22>)<29>)<29>E<EFBFBD>I<EFBFBD>I<EFBFBD>a<EFBFBD>h<EFBFBD>h<EFBFBD>2<EFBFBD>><3E>a<EFBFBD>g<EFBFBD>g<EFBFBD>Nr6<00>_ema_13c<00>z<00>[R"[R"URSS9UR
S9$<00>Nr(rDr)r<>r0s r2r3r<>}r<>r6<00>_ema_20c<00>z<00>[R"[R"URSS9UR
S9$<00>N<><rDr)r<>r0s r2r3r<><00>r<>r6<00>_ema_60c<00>h<00>[R"XRS5- S-
S-5S-S- $<00>Nr<00>d<00>fffff<66>L@<40>2<00>r<><00>arctanrnr0s r2r3r<><00><00>+<00><00>"<22>)<29>)<29>Q<EFBFBD><17><17><11><1A>^<5E>a<EFBFBD>/<2F>3<EFBFBD>6<>7<>$<24>><3E><12>Cr6<00> act_factor1c<00>h<00>[R"XRS5- S-
S-5S-S- $<00>Nrr<>r<><00>(r<>r0s r2r3r<><00>r<>r6<00> act_factor2c<00>h<00>[R"XRS5- S-
S-5S-S- $<00>Nrr<>r<><00>r<>r0s r2r3r<><00>r<>r6<00> act_factor3c<00>h<00>[R"XRS5- S-
S-5S-S- $<00>Nrr<>r<>rsr<>r0s r2r3r<><00>r<>r6<00> act_factor4r<00>cat_af1<66>cat_af2<66>cat_af3<66>cat_af4<66> act_factor5r<00> act_factor6T<36><02> ascending<6E>pct<63>rank_act_factor1<72>rank_act_factor2<72>rank_act_factor3)r<>r<>r<>r<><00>sqrt<72>rank)r<><00>catr<74>s r2<00>get_act_factorr<72>qs<><00><00> <0B><1E><1E>I<EFBFBD>|<7C>4<><1E> 5<>B<EFBFBD><10>j<EFBFBD>j<EFBFBD><19>u<EFBFBD>j<EFBFBD>5<>G<EFBFBD><1A>7<EFBFBD>#<23>)<29>)<29>M<><06>B<EFBFBD>x<EFBFBD>L<EFBFBD><1C>G<EFBFBD>$<24>*<2A>*<2A>N<><06>B<EFBFBD>y<EFBFBD>M<EFBFBD><1C>G<EFBFBD>$<24>*<2A>*<2A>N<><06>B<EFBFBD>y<EFBFBD>M<EFBFBD><1C>G<EFBFBD>$<24>*<2A>*<2A>N<><06>B<EFBFBD>y<EFBFBD>M<EFBFBD>
 <20><08>)<29>/<2F>/<2F>C<><06>B<EFBFBD>}<7D><15> <20> <09>*<2A>0<>0<>C<><06>B<EFBFBD>}<7D><15> <20> <09>*<2A>0<>0<>C<><06>B<EFBFBD>}<7D><15> <20> <09>*<2A>0<>0<>C<><06>B<EFBFBD>}<7D><15> <0B><1A>=<3D>)<29>A<EFBFBD>-<2D><02>9<EFBFBD> <0A><1A>=<3D>)<29>B<EFBFBD>}<7D>,=<3D>=<3D><02>9<EFBFBD> <0A><1A>=<3D>)<29>B<EFBFBD>}<7D>,=<3D>=<3D><02>9<EFBFBD> <0A><1A>=<3D>)<29>B<EFBFBD>}<7D>,=<3D>=<3D><02>9<EFBFBD> <0A><1B>=<3D>)<29>B<EFBFBD>}<7D>,=<3D>=<3D><02>=<3D>@Q<>Q<>TV<54>Wd<57>Te<54>e<>B<EFBFBD>}<7D><15><1B>M<EFBFBD>*<2A>R<EFBFBD> <0A>-><3E>><3E>"<22>'<27>'<27>
<EFBFBD>=<3D><19>Q<EFBFBD><1E><12>M<EFBFBD>!2<>a<EFBFBD>!7<>7<>C9<>9<>B<EFBFBD>}<7D><15> <20>Z<EFBFBD>Z<EFBFBD> <0C><15>Z<EFBFBD>G<> <0A>V<>[<5B>[<5B>fk<66>qu<71>[<5B>v<>B<EFBFBD><19><1A><1F>Z<EFBFBD>Z<EFBFBD> <0C><15>Z<EFBFBD>G<> <0A>V<>[<5B>[<5B>fk<66>qu<71>[<5B>v<>B<EFBFBD><19><1A><1F>Z<EFBFBD>Z<EFBFBD> <0C><15>Z<EFBFBD>G<> <0A>V<>[<5B>[<5B>fk<66>qu<71>[<5B>v<>B<EFBFBD><19><1A> <0A>Ir6c<00><><00>USUS- US'USUS- US'USUS- US'USUS-
US- US 'USUS
-
US- US '[R"US 5US 'U$)N<>
buy_lg_vol<EFBFBD>
net_mf_vol<EFBFBD>active_buy_volume_large<67> buy_elg_vol<6F>active_buy_volume_big<69>
buy_sm_vol<EFBFBD>active_buy_volume_small<6C> sell_lg_vol<6F>buy_lg_vol_minus_sell_lg_vol<6F> sell_elg_vol<6F>buy_elg_vol_minus_sell_elg_vol<6F>circ_mv<6D> log(circ_mv))r<>r<>)r<>s r2<00>get_money_flow_factorr<72><00>s<><00><00>$&<26>|<7C>$4<>r<EFBFBD>,<2C>7G<37>$G<>B<EFBFBD> <20>!<21>"$<24>]<5D>"3<>b<EFBFBD><1C>6F<36>"F<>B<EFBFBD><1E><1F>$&<26>|<7C>$4<>r<EFBFBD>,<2C>7G<37>$G<>B<EFBFBD> <20>!<21>*,<2C>\<5C>*:<3A>R<EFBFBD> <0A>=N<>*N<>RT<52>Ua<55>Rb<52>)b<>B<EFBFBD>%<25>&<26>,.<2E>}<7D>,=<3D><02>><3E>@R<>,R<>VX<56>Ye<59>Vf<56>+f<>B<EFBFBD>'<27>(<28><1B><16><16><02>9<EFBFBD> <0A>.<2E>B<EFBFBD>~<7E><16> <0A>Ir6c<00>v<00>URSS/S9nURS5nSnSnSnSnSnS nSnU"US
US U5US 'U"US U5US 'U"U"USU55US'SUS -US-US'[R"US
US:gUSUS-
US
US-
- S5US'UR S5R SSS9US'URSSS9SR SSS9US'USRS5US'URSSS9SR SSS9US'U$)Nrrrc<00>B<00>URU5RU5$<00>N<>r.<00>cov<6F>r1<00>yr s r2<00>rolling_covariance<63>,get_alpha_factor.<locals>.rolling_covariance<63><00><00><00><10>y<EFBFBD>y<EFBFBD><16> <20>$<24>$<24>Q<EFBFBD>'<27>'r6c<00>$<00>URU5$r<><00><01>diff<66><02>series<65>periods r2<00>delta<74>get_alpha_factor.<locals>.delta<74><00><00><00><15>{<7B>{<7B>6<EFBFBD>"<22>"r6c<00> <00>URSS9$<00>NT)r<><00>r<><00>r<>s r2r<><00>get_alpha_factor.<locals>.rank<6E><00><00><00><15>{<7B>{<7B>t<EFBFBD>{<7B>$<24>$r6c<00>@<00>URU5R5$r<><00>r.r}<00>r<>r s r2<00>stddev<65> get_alpha_factor.<locals>.stddev<65><00><00><00><15>~<7E>~<7E>f<EFBFBD>%<25>)<29>)<29>+<2B>+r6r r(r:<00>volumer<65><00> delta_covr"<00> _rank_stddev<65><76><EFBFBD><EFBFBD><EFBFBD><EFBFBD>alpha_22_improvedr?r;r<00> alpha_003c<00>N<00>USRS5RUS5$<00>Nr"r r<00>r.<00>corrr0s r2r3<00>"get_alpha_factor.<locals>.<lambda><3E><00>"<00><00>a<EFBFBD><07>j<EFBFBD>.@<40>.@<40><11>.C<>.H<>.H<><11>5<EFBFBD><18>.Rr6Tr<00> alpha_007Frr<>c<00><><00>URS5R5URS5R5-
$<00>Nr r(<00>r.<00>sumr0s r2r3r<00><00>0<00><00>1<EFBFBD>9<EFBFBD>9<EFBFBD>Q<EFBFBD><<3C>;K<>;K<>;M<>PQ<50>PY<50>PY<50>Z\<5C>P]<5D>Pa<50>Pa<50>Pc<50>;cr6<00> alpha_013)r<>r<>r<><00>wherer<65>r<>r<><00> transform) r<>r<>r<>r<>r<>r
<00>window_high_volume<6D>window_close_stddev<65> period_deltas r2<00>get_alpha_factorr%<00>s<><00><00> <0B><1E><1E>I<EFBFBD>|<7C>4<><1E> 5<>B<EFBFBD><10>j<EFBFBD>j<EFBFBD><19>#<23>G<EFBFBD>(<28>#<23>%<25>,<2C><1B><16><1C><17><14>L<EFBFBD>"<22>2<EFBFBD>f<EFBFBD>:<3A>r<EFBFBD>(<28>|<7C>=O<>P<>B<EFBFBD>u<EFBFBD>I<EFBFBD><1B>B<EFBFBD>u<EFBFBD>I<EFBFBD>|<7C>4<>B<EFBFBD>{<7B>O<EFBFBD><1D>f<EFBFBD>R<EFBFBD><07>[<5B>2E<32>F<>G<>B<EFBFBD>~<7E><16> <20>2<EFBFBD>k<EFBFBD>?<3F>2<>R<EFBFBD><0E>5G<35>G<>B<EFBFBD><1A><1B><19>h<EFBFBD>h<EFBFBD>r<EFBFBD>&<26>z<EFBFBD>R<EFBFBD><05>Y<EFBFBD>6<> "<22>7<EFBFBD> <0B>b<EFBFBD><16>j<EFBFBD> 8<>R<EFBFBD><06>Z<EFBFBD>"<22>U<EFBFBD>)<29>=S<>T<> <20>"<22>B<EFBFBD>{<7B>O<EFBFBD>
<1E>m<EFBFBD>m<EFBFBD>$R<>S<>_<>_<>fg<66>nr<6E>_<>s<>B<EFBFBD>{<7B>O<EFBFBD><18>j<EFBFBD>j<EFBFBD><1C>%<25>j<EFBFBD>@<40><1B>M<>R<>R<>]a<>gk<67>R<>l<>B<EFBFBD>{<7B>O<EFBFBD><1E>g<EFBFBD>&<26>0<>0<>1c<31>d<>B<EFBFBD>{<7B>O<EFBFBD><18>j<EFBFBD>j<EFBFBD><1C>%<25>j<EFBFBD>@<40><1B>M<>R<>R<>]a<>gk<67>R<>l<>B<EFBFBD>{<7B>O<EFBFBD> <0A>Ir6c<00><>^<02>URSS/S9nURSSS9nUSUS:HR[5US'USUS :HR[5US
'USR S S S 9R 5R SSS9US'US
R S S S 9R 5R SSS9US'SmUSRU4Sj5R SSS9US'U$)NrrrFrr"<00>up_limit<69> cat_up_limit<69>
down_limit<EFBFBD>cat_down_limitrsr<00>r <00> min_periodsrTr<00>up_limit_count_10d<30>down_limit_count_10dc<00><00>XRXR5:gR55R5S--nXRXR5:gR55R5S--nX4$<00>u$
计算连续涨停/跌停天数。
r<00>r<>rn<00>cumsum<75>cumcount<6E>r<><00>consecutive_up<75>consecutive_downs r2<00>calculate_consecutive_limits<74>6get_limit_factor.<locals>.calculate_consecutive_limits<74><00>r<00><00> <20>><3E>><3E>6<EFBFBD>\<5C>\<5C>^<5E>3K<33>2S<32>2S<32>2U<32>#V<>#_<>#_<>#a<>de<64>#e<>f<><0E>!<21>^<5E>^<5E>V<EFBFBD>|<7C>|<7C>~<7E>5M<35>4U<34>4U<34>4W<34>%X<>%a<>%a<>%c<>fg<66>%g<>h<><18><1D>/<2F>/r6c<00>><01>T"U5S$<00>Nr<00><00>r1r7s <20>r2r3<00>"get_limit_factor.<locals>.<lambda><3E><00><00><><00>.<2E>q<EFBFBD>1<>!<21>4r6<00>consecutive_up_limit)r<>r<><00>astype<70>intr.rr<>r<>)r<>r<>r7s @r2<00>get_limit_factorrC<00>s8<00><><00> <0B><1E><1E>I<EFBFBD>|<7C>4<><1E> 5<>B<EFBFBD><11>j<EFBFBD>j<EFBFBD><19>u<EFBFBD>j<EFBFBD>5<>G<EFBFBD><1D>W<EFBFBD>+<2B><12>J<EFBFBD><1E>7<>?<3F>?<3F><03>D<>B<EFBFBD>~<7E><16><1E>w<EFBFBD>K<EFBFBD>2<EFBFBD>l<EFBFBD>+;<3B>;<3B>C<>C<>C<EFBFBD>H<>B<EFBFBD><17><18> '<27>~<7E>6<>><3E>><3E>b<EFBFBD>VW<56>><3E>X<>\<5C>\<5C>^<5E>j<>j<>qr<71>pt<70> k<01> v<01>B<EFBFBD><1B><1C>!(<28>)9<>!:<3A>!B<>!B<>"<22>Z[<5B>!B<>!\<5C>!`<60>!`<60>!b<>!n<>!n<>uv<75>tx<74>"o<01>"z<01>B<EFBFBD><1D><1E>0<>")<29><1E>!8<>!><3E>!><3E>4<>"<06><11>k<EFBFBD><01><04>k<EFBFBD>%<25><07><1D><1E> <0E>Ir6c<00><><00>URSS/S9nURSSS9nUSUS-
USUS -
- US
'US US -
US US -
- US'USUS -
US US -
- US'USSUSUS -
USUS -
- -
-US'[R"US US:<3A>USS:<3A>-SS5US'USR S5US'SnUR U5US'SnUR U5US'USUS -
US- US'SUS - USUS-
-US!'USR S"5US#'US#USR S$5- US%'UR S&5US''US US:<3A>USS(:<3A>-US)S*:<3A>-US+'USUS -
SUS,R S-5- -US.'UR S#/S/S0S19 U$)2NrrrFr<00>
cost_85pct<EFBFBD>
cost_15pct<EFBFBD>his_high<67>his_low<6F> ctrl_strengthr"<00> cost_5pct<63>
cost_50pct<EFBFBD> low_cost_dev<65>
cost_95pct<EFBFBD> asymmetryrr<00> lock_factorrrr<00> vol_break<61>
weight_avgc<00>$<00>URS5$<00>Nr <00>r|r0s r2r3<00>%get_cyp_perf_factor.<locals>.<lambda><00> <00><00>a<EFBFBD>l<EFBFBD>l<EFBFBD>1<EFBFBD>or6<00> weight_roc5c<00><><00>USR5nUSR5nURS5RU5$<00>Nr"rQrs<00>r|r.r<00><03>group<75> roc_close<73>
roc_weights r2<00> rolling_corr<72>)get_cyp_perf_factor.<locals>.rolling_corr<00>C<00><00><19>'<27>N<EFBFBD>-<2D>-<2D>/<2F> <09><1A><<3C>(<28>3<>3<>5<>
<EFBFBD><18> <20> <20><12>$<24>)<29>)<29>*<2A>5<>5r6<00>price_cost_divergencec <00><00>USUSUSp2n[R"X-
[R"[XR5-
5[X#R5-
555nUR S5R 5$)Nr:r?r"rC)r<><00>maximum<75>absrnr.r/)r\r:r?r"<00>trs r2<00>calc_atr<74>%get_cyp_perf_factor.<locals>.calc_atrsq<00><00> <20><16>=<3D>%<25><05>,<2C><05>g<EFBFBD><0E>5<EFBFBD><04> <0F>Z<EFBFBD>Z<EFBFBD><04>
<EFBFBD><1A>
<EFBFBD>
<EFBFBD>3<EFBFBD>t<EFBFBD>k<EFBFBD>k<EFBFBD>m<EFBFBD>';<3B>#<<3C>#&<26>s<EFBFBD>[<5B>[<5B>]<5D>':<3A>#;<3B>=<3D>><3E><02><12>z<EFBFBD>z<EFBFBD>"<22>~<7E>"<22>"<22>$<24>$r6rK<00> cost_atr_adjr<6A><00>smallcap_concentrationc<00>@<00>URS5R5$<00>Nr(rr0s r2r3rU-<00><00><00>q<EFBFBD>y<EFBFBD>y<EFBFBD><12>}<7D>?P<>?P<>?Rr6<00> weight_std20c<00>@<00>URS5R5$rl<00>r.r/r0s r2r3rU.<00><00><00>Z[<5B>Zc<5A>Zc<5A>df<64>Zg<5A>Zl<5A>Zl<5A>Znr6<00>cost_stabilityc<00>j<00>USRUS5RS5R5$<00>Nr"rMr <00><03>gtr.r<00><01>gs r2r3rU1<00>*<00><00><11>7<EFBFBD><1A><1D><1D>q<EFBFBD><1C><EFBFBD>9W<39>9_<39>9_<39>`a<>9b<39>9f<39>9f<39>9hr6<00>high_cost_break_days<79><00>?<3F> winner_rate<74>ffffff<66>?<3F>cat_golden_resonancerc<00>@<00>URS5R5$<00>Nrsrpr0s r2r3rU:<00><00><00>1<EFBFBD>9<EFBFBD>9<EFBFBD>R<EFBFBD>=<3D>3E<33>3E<33>3Gr6<00>liquidity_riskT<6B>ignore<72><03>columns<6E>inplace<63>errors)r<>r<>r<>r r<>r!r)r<>r<>r_rgs r2<00>get_cyp_perf_factorr<72>s<><00><00> <0B><1E><1E>I<EFBFBD>|<7C>4<><1E> 5<>B<EFBFBD><11>j<EFBFBD>j<EFBFBD><19>u<EFBFBD>j<EFBFBD>5<>G<EFBFBD><1D>l<EFBFBD>+<2B>b<EFBFBD><1C>.><3E>><3E>2<EFBFBD>j<EFBFBD>><3E>TV<54>W`<60>Ta<54>Ca<43>b<>B<EFBFBD><EFBFBD><17><1C>W<EFBFBD>+<2B><02>;<3B><0F>7<>B<EFBFBD>|<7C><L<>r<EFBFBD>R]<5D><EFBFBD><^<5E>_<>B<EFBFBD>~<7E><16><19>,<2C>'<27>"<22>\<5C>*:<3A>:<3A>r<EFBFBD>,<2C>?O<>RT<52>U`<60>Ra<52>?a<>b<>B<EFBFBD>{<7B>O<EFBFBD><1A>?<3F>+<2B> <0A><12>L<EFBFBD>!<21>B<EFBFBD>{<7B>O<EFBFBD>3<><02>:<3A><0E><12>I<EFBFBD><1D>8V<38>W<> W<>Y<01>B<EFBFBD>}<7D><15><19>h<EFBFBD>h<EFBFBD><02>7<EFBFBD> <0B>b<EFBFBD><1C>.><3E> ><3E>2<EFBFBD>n<EFBFBD>CU<43>XY<58>CY<43>Z<>\]<5D>_`<60>a<>B<EFBFBD>{<7B>O<EFBFBD><1F> <0C>-<2D>3<>3<>4M<34>N<>B<EFBFBD>}<7D><15>6<>
#*<2A>-<2D>-<2D> <0C>"=<3D>B<EFBFBD><1E><1F>%<25><1B>=<3D>=<3D><18>*<2A>B<EFBFBD>x<EFBFBD>L<EFBFBD><1C>\<5C>*<2A>R<EFBFBD> <0B>_<EFBFBD><<3C><02>8<EFBFBD> <0C>L<>B<EFBFBD>~<7E><16>%&<26><02>9<EFBFBD> <0A>$5<>"<22>\<5C>:J<>R<EFBFBD>P\<5C>M]<5D>:]<5D>#^<5E>B<EFBFBD><1F> <20>!<21><1C>.<2E>4<>4<>5R<35>S<>B<EFBFBD>~<7E><16><1D>n<EFBFBD>-<2D><07> <0C>0E<30>0O<30>0O<30>Pn<50>0o<30>o<>B<EFBFBD><17><18>")<29><1D><1D>/h<>!i<>B<EFBFBD><1D><1E>$&<26>g<EFBFBD>;<3B><12>L<EFBFBD>1A<31>#A<>#%<25>n<EFBFBD>#5<><03>#;<3B>#=<3D>#%<25>m<EFBFBD>#4<>s<EFBFBD>#:<3A>#<<3C>B<EFBFBD><1D><1E>
<1F>|<7C>,<2C>r<EFBFBD>+<2B><EFBFBD>><3E> <0A><07><05><0E>(<28>(<28>)G<>H<> H<>J<01>B<EFBFBD><17><18><07>G<EFBFBD>G<EFBFBD>^<5E>$<24>d<EFBFBD>8<EFBFBD>G<EFBFBD>D<> <0A>Ir6c<00>6<00>URSS/S9nURSSS9nUSUS- US'US US- US
'USS US- -US 'US US- US 'USUS- US'USUS-US- US'USRSS9R5R SSS9US'UR S5R SSS9US'US R SS9R SSS9US'UR S5R SSS9US'U$)u
计算多个因子并生成最终的综合因子。
参数:
df (pd.DataFrame): 包含 ts_code, trade_date, turnover_rate, pe_ttm, pb, ps, circ_mv, volume_ratio, vol 等列的数据框。
返回:
pd.DataFrame: 包含新增因子和最终综合因子的数据框。
rrrFrrr<><00>mv_turnover_ratior<00>mv_adjusted_volumer<00>mv_weighted_turnover<65>nonlinear_mv_volumer<00>mv_volume_ratio<69> mv_momentumr(r rTr<00> turnover_stdc<00><00>USUS- $<00>Nr<4E>r<>r<r0s r2r3<00> get_mv_factors.<locals>.<lambda>e<00><00><00>!<21>N<EFBFBD>2C<32>a<EFBFBD> <09>l<EFBFBD>2Rr6<00> mv_volatility<74><01>periods<64> volume_growthc<00><00>USUS- $<00>Nr<4E>r<>r<r0s r2r3r<>i<00><00><00>a<EFBFBD><0F>.@<40>1<EFBFBD>Y<EFBFBD><<3C>.Or6<00> mv_growth)r<>r<>r.r}r<>r<>r|)r<>r<>s r2<00>get_mv_factorsr<73>As<><00><00>
<0C><1E><1E>I<EFBFBD>|<7C>4<><1E> 5<>B<EFBFBD><11>j<EFBFBD>j<EFBFBD><19>u<EFBFBD>j<EFBFBD>5<>G<EFBFBD>!<21><1F>1<>B<EFBFBD>y<EFBFBD>M<EFBFBD>A<>B<EFBFBD><1A><1B> "<22>%<25>y<EFBFBD>2<EFBFBD>i<EFBFBD>=<3D>8<>B<EFBFBD><1B><1C>"$<24>O<EFBFBD>!4<><01>B<EFBFBD>y<EFBFBD>M<EFBFBD>8I<38>!J<>B<EFBFBD><1D><1E>!#<23>5<EFBFBD> <09>B<EFBFBD>y<EFBFBD>M<EFBFBD> 9<>B<EFBFBD><1C><1D><1F>~<7E>.<2E><12>I<EFBFBD><1D>><3E>B<EFBFBD><18><19><1B>?<3F>+<2B>b<EFBFBD><1E>.@<40>@<40>2<EFBFBD>i<EFBFBD>=<3D>P<>B<EFBFBD>}<7D><15>!<21><1F>1<>9<>9<><12>9<>D<>H<>H<>J<>V<>V<>]^<5E>ei<65>V<>j<>B<EFBFBD>~<7E><16>!<21>-<2D>-<2D>(R<>S<>_<>_<>fg<66>nr<6E>_<>s<>B<EFBFBD><EFBFBD><17>"<22>%<25>.<2E>3<>3<>B<EFBFBD>3<>?<3F>K<>K<>RS<52>Z^<5E>K<>_<>B<EFBFBD><EFBFBD><17><1D>m<EFBFBD>m<EFBFBD>$O<>P<>\<5C>\<5C>cd<63>ko<6B>\<5C>p<>B<EFBFBD>{<7B>O<EFBFBD> <0E>Ir6c<00>V^<11>URR5SSnURSS/S9nURSSS9nUSR S5US-
US- US 'US
R S S 9R 5RS SS9US'US
R S S 9R5RS SS9US'USR SS 9R5USR SS 9R5- S-
RS SS9US'USR S S 9R5RS SS9nUSU:<3A>US'USR SS 9R5RS SS9nUSR SS 9R5RS SS9nUSU-
U- US'USUSU--:<3A>US'USR SS 9R5RS SS9US'USR S S 9R5RS SS9nUSU:<3A>US'URS 5US!'USR5R S 5R5US"'URS#5US$'URS%5US&'URS'5US('URS)5US*'URS+5US,'URS-5US.'URS/5US0'USRS15US2'USRS35US4'USRS55US6'USRS75US8'USRS95US:'USRS;5US<'USRS=5US>'USRS?5US@'USRSA5USB'USRSC5USD'USRSE5USF'USRSG5USH'USBRSI5USJ'USDRSK5USL'USFRSM5USN'USHRSO5USP'URSSS9SJRSSSQ9USR'URSSS9SLRSSSQ9USS'URSSS9SNRSSSQ9UST'[R "USU5USV'SWnSXnSYn SZn
S n S[n S n U"US\USU 5US]'U"US]U 5US^'U "U
"USU 55US_'SUS^-US_-US`'[R""US\USa:gUSUS-
US\USa-
- S 5USb'URSc5RS SS9USd'URSSS9SdRSSSQ9USd'USR%Se5USf'URSSS9SfRSSSQ9USf'USUSg:HUSh'USUSi:HUSj'UShR SSSk9R'5RS SS9USl'USjR SSSk9R'5RS SS9USm'SnmUShRU4Soj5RS SS9USp'[R""USUSq:<3A>USS:<3A>-SS 5USr'USsRSt5USu'SvnURU5USw'SUSU- USqUSx-
-USy'USsRSz5US{'US{USsR%S|5- US}'URS~5US'US<>US<>-
SUSR%S<>5- -US<>'USR S[S 9R5RS SS9US<>'URS<>5RS SS9US<>'USRS[S<>9RS SS9US<>'URS<>5RS SS9US<>'UR)S{/SS<>S<EFBFBD>9 URR5SSVs/sH o<>U;dM
UPM nnUU4$s snf)<29>NrrrFrr;rr"<00> gap_next_openr
r r rTrrrrrrsrrrrrrrrrrrc<00><><00>[R"USRS5R5URS9$r'r+r0s r2r3<00>$get_rolling_factor.<locals>.<lambda><3E>r5r6r7r9c <00><><00>[R"[R"USRUSRUSRSS9UR
S9$rBrFr0s r2r3r<><00>rJr6rKc <00><><00>[R"[R"USRUSRUSRSS9UR
S9$rMrFr0s r2r3r<><00>rOr6rPc<00><><00>[R"[R"USRUSR5UR
S9$rRrSr0s r2r3r<><00>rUr6rVc<00><><00>[R"[R"USRSS9UR
S9$rXrYr0s r2r3r<><00>r[r6r\c<00><><00>[R"[R"USRSS9UR
S9$r_r`r0s r2r3r<><00>rbr6rcc<00><><00>[R"[R"USRSS9UR
S9$rer`r0s r2r3r<><00>rbr6rfc<00><><00>[R"[R"USRSS9UR
S9$rhr`r0s r2r3r<><00>rbr6rjc<00>.<00>XRS5- S-
$rlrmr0s r2r3r<><00>ror6rpc<00>.<00>XRS5- S-
$rrrmr0s r2r3r<><00>rtr6ruc<00>.<00>XRS5- S-
$rwrmr0s r2r3r<><00>rtr6rxc<00>X<00>UR5RSS9R5$rzr{r0s r2r3r<><00>r~r6rc<00>X<00>UR5RSS9R5$r<>r{r0s r2r3r<><00>r<>r6r<>c<00>X<00>UR5RSS9R5$r<>r{r0s r2r3r<><00>r<>r6r<>c<00>X<00>UR5RSS9R5$r<>r{r0s r2r3r<><00>r<>r6r<>c<00>v<00>URS5R5RSS9R5$r<>r<>r0s r2r3r<><00>r<>r6r<>c<00>z<00>[R"[R"URSS9UR
S9$r<>r<>r0s r2r3r<><00>r<>r6r<>c<00>z<00>[R"[R"URSS9UR
S9$r<>r<>r0s r2r3r<><00>r<>r6r<>c<00>z<00>[R"[R"URSS9UR
S9$r<>r<>r0s r2r3r<><00>r<>r6r<>c<00>z<00>[R"[R"URSS9UR
S9$r<>r<>r0s r2r3r<><00>r<>r6r<>c<00>h<00>[R"XRS5- S-
S-5S-S- $r<>r<>r0s r2r3r<><00>r<>r6r<>c<00>h<00>[R"XRS5- S-
S-5S-S- $r<>r<>r0s r2r3r<><00>r<>r6r<>c<00>h<00>[R"XRS5- S-
S-5S-S- $r<>r<>r0s r2r3r<><00>r<>r6r<>c<00>h<00>[R"XRS5- S-
S-5S-S- $r<>r<>r0s r2r3r<><00>r<>r6r<>r<>r<>r<>r<>r<>r<>c<00>B<00>URU5RU5$r<>r<>r<>s r2r<><00>.get_rolling_factor.<locals>.rolling_covariance<63>r<>r6c<00>$<00>URU5$r<>r<>r<>s r2r<><00>!get_rolling_factor.<locals>.delta<74>rr6c<00> <00>URSS9$rrrs r2r<><00> get_rolling_factor.<locals>.rank<6E>rr6c<00>@<00>URU5R5$r<>rr s r2r
<00>"get_rolling_factor.<locals>.stddev<65>r r6r(r:r<>rrrr?rc<00>N<00>USRS5RUS5$rrr0s r2r3r<> rr6rc<00><><00>URS5R5URS5R5-
$rrr0s r2r3r<>rr6rr'r(r)r*r+r-r.c<00><00>XRXR5:gR55R5S--nXRXR5:gR55R5S--nX4$r0r1r4s r2r7<00>8get_rolling_factor.<locals>.calculate_consecutive_limitsr9r6c<00>><01>T"U5S$r;r<r=s <20>r2r3r<>%r?r6r@rErPrQc<00>$<00>URS5$rSrTr0s r2r3r<>*rVr6rWc<00><><00>USR5nUSR5nURS5RU5$rYrZr[s r2r_<00>(get_rolling_factor.<locals>.rolling_corr,rar6rbrFrjc<00>@<00>URS5R5$rlrr0s r2r3r<>6rmr6rnc<00>@<00>URS5R5$rlrpr0s r2r3r<>7rqr6rrc<00>j<00>USRUS5RS5R5$rtrurws r2r3r<>:ryr6rzrMrJc<00>@<00>URS5R5$r<>rpr0s r2r3r<>>r<>r6r<>r<>c<00><00>USUS- $r<>r<r0s r2r3r<>Br<>r6r<>r<>r<>c<00><00>USUS- $r<>r<r0s r2r3r<>Fr<>r6r<>r<>r<>)r<><00>tolistr<74>r<>rnr.r<>r<>r<>r/r<>r}r<>r|r<>r<>r<>r r!rr)r<><00> old_columnsr<73>r<>r<>r<>r<>r<>r<>r<>r
r"r#r$r_<00>col<6F> new_columnsr7s @r2<00>get_rolling_factorr<72>s<>
<00><><00><14>*<2A>*<2A>#<23>#<23>%<25>a<EFBFBD>(<28>K<EFBFBD> <0B><1E><1E>I<EFBFBD>|<7C>4<><1E> 5<>B<EFBFBD><10>j<EFBFBD>j<EFBFBD><19>u<EFBFBD>j<EFBFBD>5<>G<EFBFBD><1D>f<EFBFBD>:<3A>+<2B>+<2B>B<EFBFBD>/<2F>"<22>W<EFBFBD>+<2B>=<3D><12>G<EFBFBD><1B>L<>B<EFBFBD><EFBFBD><17><1F> <09>*<2A>2<>2<>!<21>2<><<3C>A<>A<>C<>O<>O<>PQ<50>X\<5C>O<>]<5D>B<EFBFBD>}<7D><15>#<23>I<EFBFBD>.<2E>6<>6<>a<EFBFBD>6<>@<40>E<>E<>G<>S<>S<>TU<54>\`<60>S<>a<>B<EFBFBD><18><19> <14>E<EFBFBD>N<EFBFBD> "<22> "<22>!<21> "<22> ,<2C> 1<> 1<> 3<> <13>E<EFBFBD>N<EFBFBD> "<22> "<22>"<22> "<22> -<2D> 2<> 2<> 4<> 5<>78<37> 9<><11>k<EFBFBD><01><04>k<EFBFBD>%<25><07><1B><1C> <19><15><1E>'<27>'<27>q<EFBFBD>'<27>1<>5<>5<>7<>C<>C<>!<21>RV<52>C<>W<>J<EFBFBD>!#<23>E<EFBFBD><19>Z<EFBFBD>!7<>B<EFBFBD><1C><1D><1C>O<EFBFBD>,<2C>4<>4<>A<EFBFBD>4<>><3E>C<>C<>E<>Q<>Q<>XY<58>`d<>Q<>e<>M<EFBFBD><1A>?<3F>+<2B>3<>3<>1<EFBFBD>3<>=<3D>A<>A<>C<>O<>O<>VW<56>^b<>O<>c<>L<EFBFBD> "<22>?<3F> 3<>m<EFBFBD> C<>|<7C>S<>B<EFBFBD><1B><1C>!#<23>?<3F> 3<>m<EFBFBD>a<EFBFBD>,<2C>FV<46>6V<36> V<>B<EFBFBD><1B><1C>%<25>^<5E>4<><<3C><<3C>A<EFBFBD><<3C>F<>K<>K<>M<>Y<>Y<>`a<>hl<68>Y<>m<>B<EFBFBD><19><1A><1F>~<7E>.<2E>6<>6<>a<EFBFBD>6<>@<40>D<>D<>F<>R<>R<>YZ<59>ae<61>R<>f<><14>')<29>.<2E>'9<><L<>'L<>B<EFBFBD>"<22>#<23><1D>m<EFBFBD>m<EFBFBD>G<><06>B<EFBFBD>{<7B>O<EFBFBD><19><15>i<EFBFBD>*<2A>*<2A>,<2C>4<>4<>Q<EFBFBD>7<>;<3B>;<3B>=<3D>B<EFBFBD>{<7B>O<EFBFBD><1B>=<3D>=<3D> +<2B><06>B<EFBFBD>x<EFBFBD>L<EFBFBD><1A>-<2D>-<2D> +<2B><06>B<EFBFBD>w<EFBFBD>K<EFBFBD> <18> <0A> <0A>Y<><06>B<EFBFBD>u<EFBFBD>I<EFBFBD><1C>M<EFBFBD>M<EFBFBD>T<><06>B<EFBFBD>y<EFBFBD>M<EFBFBD><1A>-<2D>-<2D>V<><06>B<EFBFBD>w<EFBFBD>K<EFBFBD><1A>-<2D>-<2D>V<><06>B<EFBFBD>w<EFBFBD>K<EFBFBD><1A>-<2D>-<2D>V<><06>B<EFBFBD>w<EFBFBD>K<EFBFBD>
<1D>W<EFBFBD>%<25>+<2B>+<2B>,H<>I<>B<EFBFBD>z<EFBFBD>N<EFBFBD><1D>g<EFBFBD>&<26>,<2C>,<2C>-J<>K<>B<EFBFBD>{<7B>O<EFBFBD><1D>g<EFBFBD>&<26>,<2C>,<2C>-J<>K<>B<EFBFBD>{<7B>O<EFBFBD>
!<21><17>)<29>/<2F>/<2F>0`<60>a<>B<EFBFBD>~<7E><16>!<21>'<27>*<2A>0<>0<>1b<31>c<>B<EFBFBD><EFBFBD><17>!<21>'<27>*<2A>0<>0<>1b<31>c<>B<EFBFBD><EFBFBD><17>!<21>'<27>*<2A>0<>0<>1b<31>c<>B<EFBFBD><EFBFBD><17>#<23>G<EFBFBD>,<2C>2<>2<>3n<33>o<>B<EFBFBD><18><19><1B>7<EFBFBD>#<23>)<29>)<29>M<><06>B<EFBFBD>x<EFBFBD>L<EFBFBD><1C>G<EFBFBD>$<24>*<2A>*<2A>N<><06>B<EFBFBD>y<EFBFBD>M<EFBFBD><1C>G<EFBFBD>$<24>*<2A>*<2A>N<><06>B<EFBFBD>y<EFBFBD>M<EFBFBD><1C>G<EFBFBD>$<24>*<2A>*<2A>N<><06>B<EFBFBD>y<EFBFBD>M<EFBFBD>
 <20><08>)<29>/<2F>/<2F>C<><06>B<EFBFBD>}<7D><15> <20> <09>*<2A>0<>0<>C<><06>B<EFBFBD>}<7D><15> <20> <09>*<2A>0<>0<>C<><06>B<EFBFBD>}<7D><15> <20> <09>*<2A>0<>0<>C<><06>B<EFBFBD>}<7D><15>
 <20>Z<EFBFBD>Z<EFBFBD> <0C><15>Z<EFBFBD>G<> <0A>V<>[<5B>[<5B>fk<66>qu<71>[<5B>v<>B<EFBFBD><19><1A><1F>Z<EFBFBD>Z<EFBFBD> <0C><15>Z<EFBFBD>G<> <0A>V<>[<5B>[<5B>fk<66>qu<71>[<5B>v<>B<EFBFBD><19><1A><1F>Z<EFBFBD>Z<EFBFBD> <0C><15>Z<EFBFBD>G<> <0A>V<>[<5B>[<5B>fk<66>qu<71>[<5B>v<>B<EFBFBD><19><1A><1B><16><16><02>9<EFBFBD> <0A>.<2E>B<EFBFBD>~<7E><16>(<28>#<23>%<25>,<2C><1B><16><1C><17><14>L<EFBFBD>"<22>2<EFBFBD>f<EFBFBD>:<3A>r<EFBFBD>%<25>y<EFBFBD>:L<>M<>B<EFBFBD>u<EFBFBD>I<EFBFBD><1B>B<EFBFBD>u<EFBFBD>I<EFBFBD>|<7C>4<>B<EFBFBD>{<7B>O<EFBFBD><1D>f<EFBFBD>R<EFBFBD><07>[<5B>2E<32>F<>G<>B<EFBFBD>~<7E><16> <20>2<EFBFBD>k<EFBFBD>?<3F>2<>R<EFBFBD><0E>5G<35>G<>B<EFBFBD><1A><1B><18>h<EFBFBD>h<EFBFBD>r<EFBFBD>&<26>z<EFBFBD>R<EFBFBD><05>Y<EFBFBD>6<> "<22>7<EFBFBD> <0B>b<EFBFBD><16>j<EFBFBD> 8<>R<EFBFBD><06>Z<EFBFBD>"<22>U<EFBFBD>)<29>=S<>T<> <20>"<22>B<EFBFBD>{<7B>O<EFBFBD><1E>m<EFBFBD>m<EFBFBD>$R<>S<>_<>_<>fg<66>nr<6E>_<>s<>B<EFBFBD>{<7B>O<EFBFBD><18>j<EFBFBD>j<EFBFBD><1C>%<25>j<EFBFBD>@<40><1B>M<>R<>R<>]a<>gk<67>R<>l<>B<EFBFBD>{<7B>O<EFBFBD><1D>g<EFBFBD>&<26>0<>0<>1c<31>d<>B<EFBFBD>{<7B>O<EFBFBD><18>j<EFBFBD>j<EFBFBD><1C>%<25>j<EFBFBD>@<40><1B>M<>R<>R<>]a<>gk<67>R<>l<>B<EFBFBD>{<7B>O<EFBFBD><1C>W<EFBFBD>+<2B><12>J<EFBFBD><1E>7<>B<EFBFBD>~<7E><16><1E>w<EFBFBD>K<EFBFBD>2<EFBFBD>l<EFBFBD>+;<3B>;<3B>B<EFBFBD><17><18>&<26>~<7E>6<>><3E>><3E>b<EFBFBD>VW<56>><3E>X<>\<5C>\<5C>^<5E>j<>j<>qr<71>pt<70> k<01> v<01>B<EFBFBD><1B><1C>!(<28>)9<>!:<3A>!B<>!B<>"<22>Z[<5B>!B<>!\<5C>!`<60>!`<60>!b<>!n<>!n<>uv<75>tx<74>"o<01>"z<01>B<EFBFBD><1D><1E>0<>")<29><1E>!8<>!><3E>!><3E>4<>"<06><11>k<EFBFBD><01><04>k<EFBFBD>%<25><07><1D><1E><19>h<EFBFBD>h<EFBFBD><02>7<EFBFBD> <0B>b<EFBFBD><1C>.><3E> ><3E>2<EFBFBD>n<EFBFBD>CU<43>XY<58>CY<43>Z<>\]<5D>_`<60>a<>B<EFBFBD>{<7B>O<EFBFBD><1F> <0C>-<2D>3<>3<>4M<34>N<>B<EFBFBD>}<7D><15>6<>
#*<2A>-<2D>-<2D> <0C>"=<3D>B<EFBFBD><1E><1F>$%<25><02>9<EFBFBD> <0A>$5<>"<22>\<5C>:J<>R<EFBFBD>P\<5C>M]<5D>:]<5D>#^<5E>B<EFBFBD><1F> <20>!<21><1C>.<2E>4<>4<>5R<35>S<>B<EFBFBD>~<7E><16><1D>n<EFBFBD>-<2D><07> <0C>0E<30>0O<30>0O<30>Pn<50>0o<30>o<>B<EFBFBD><17><18>")<29><1D><1D>/h<>!i<>B<EFBFBD><1D><1E><1F>|<7C>,<2C>r<EFBFBD>+<2B><EFBFBD>><3E> <0A><07><05><0E>(<28>(<28>)G<>H<> H<>J<01>B<EFBFBD><17><18>!<21><1F>1<>9<>9<><12>9<>D<>H<>H<>J<>V<>V<>]^<5E>ei<65>V<>j<>B<EFBFBD>~<7E><16>!<21>-<2D>-<2D>(R<>S<>_<>_<>fg<66>nr<6E>_<>s<>B<EFBFBD><EFBFBD><17>"<22>%<25>.<2E>3<>3<>B<EFBFBD>3<>?<3F>K<>K<>RS<52>Z^<5E>K<>_<>B<EFBFBD><EFBFBD><17><1D>m<EFBFBD>m<EFBFBD>$O<>P<>\<5C>\<5C>cd<63>ko<6B>\<5C>p<>B<EFBFBD>{<7B>O<EFBFBD><06>G<EFBFBD>G<EFBFBD>^<5E>$<24>d<EFBFBD>8<EFBFBD>G<EFBFBD>D<>"$<24>*<2A>*<2A>"3<>"3<>"5<>a<EFBFBD>"8<>S<>"8<>3<EFBFBD>{<7B><R<>3<EFBFBD>"8<>K<EFBFBD>S<> <0A>{<7B>?<3F><1A><>Ts <00> b&<04>b&c<00>@<00>URR5SSnURSS/S9nSnUSX S--US'USUS -US
'[R"US 5US 'US SUS-:<3A>US'USUS S/R SS9-
US - US'US S/R SS9US-
US - US'USUS-
US'USUS- US'USUS- US'USUS -
US!'US"S#:<3A>US$'US%US":<3A>US&'US'US%:<3A>US('US)US':<3A>US*'US"US%-US'-US)-US+'US"US%-
[R"US"S-US%S--5- US,'US-US.- US/'US0US.- US1'US2US.- US3'US-US4-
US.- US5'US0US6-
US.- US7'[R"US85US9'US:US;-
US<US=-
- US>'US US?-
US@US?-
- USA'USBUS@-
US@US?-
- USC'USDSUSBUS?-
US<US=-
- -
-USE'US US::<3A>USS:<3A>-USF'USBUS?-
USG- USH'SUS8- US:US;-
-USI'US USJ:<3A>USSK:<3A>-USLSM:<3A>-USN'USDUS8- USO'US US8- USP'USDSUS8- -USQ'US US8- USR'USUS8- USS'USDUS-US8- UST'URVs/sHo3RSU5(dMUPM nnURUSVSWSX9 URR5SSVs/sH o3U;dM
UPM nnX4$s snfs snf)YNrrrr rrr!rr
r$r"r%rrr7r8r:r;rr<r>r?r@rVr\r]rr<>r<>r<>r<>r<>r<>r<>rr<>r<>r<>r<>r<>r<>r<>r<>r<>r<>r<>r<>r<>r<>r<>r<>r<>r<>r<>r<>r<>r<>rErFrGrHrIrJrKrLrMrNrrO<00> cat_vol_breakrKrirjrQr{r|r}r~r<>r<>r<>r<>r<>r<><00>_Tr<54>r<>)
r<EFBFBD>r<>r<>r<>r<>r<>r<>r<><00>
startswithr)r<>r<>r<>r<><00> drop_columnsr<73>s r2<00>get_simple_factorr<72>Ns<><00><00><14>*<2A>*<2A>#<23>#<23>%<25>a<EFBFBD>(<28>K<EFBFBD> <0B><1E><1E>I<EFBFBD>|<7C>4<><1E> 5<>B<EFBFBD> <0F>E<EFBFBD><1E>3<>4<>u<EFBFBD>BV<42>?W<>7W<37>W<>B<EFBFBD><18><19><1F><0E>/<2F>"<22>Y<EFBFBD>-<2D>?<3F>B<EFBFBD><19><1A><18>f<EFBFBD>f<EFBFBD>R<EFBFBD><07>[<5B>)<29>B<EFBFBD>{<7B>O<EFBFBD><1C>U<EFBFBD>)<29>a<EFBFBD>"<22>[<5B>/<2F>&9<>9<>B<EFBFBD><EFBFBD><17><12>6<EFBFBD>
<EFBFBD>R<EFBFBD><17>&<26> 1<>2<>6<>6<>A<EFBFBD>6<>><3E>><3E>"<22>W<EFBFBD>+<2B>M<>B<EFBFBD>t<EFBFBD>H<EFBFBD><14>g<EFBFBD>v<EFBFBD>&<26>'<27>+<2B>+<2B><11>+<2B>3<>b<EFBFBD><15>i<EFBFBD>?<3F>2<EFBFBD>g<EFBFBD>;<3B>N<>B<EFBFBD>v<EFBFBD>J<EFBFBD><1A>5<EFBFBD> <09>B<EFBFBD>y<EFBFBD>M<EFBFBD>1<>B<EFBFBD>}<7D><15>*,<2C>N<EFBFBD>);<3B>b<EFBFBD><1F>>Q<>)Q<>B<EFBFBD>%<25>&<26>)+<2B>N<EFBFBD>);<3B>b<EFBFBD><1F>>Q<>)Q<>B<EFBFBD>%<25>&<26>-/<2F><EFBFBD>,?<3F>"<22>EV<45>BW<42>,W<>B<EFBFBD>(<28>)<29><16>}<7D>%<25><01>)<29>B<EFBFBD>y<EFBFBD>M<EFBFBD><16>}<7D>%<25><02>=<3D>(9<>9<>B<EFBFBD>y<EFBFBD>M<EFBFBD><16>}<7D>%<25><02>=<3D>(9<>9<>B<EFBFBD>y<EFBFBD>M<EFBFBD><16>}<7D>%<25><02>=<3D>(9<>9<>B<EFBFBD>y<EFBFBD>M<EFBFBD><1B>=<3D>)<29>B<EFBFBD>}<7D>,=<3D>=<3D><02>=<3D>@Q<>Q<>TV<54>Wd<57>Te<54>e<>B<EFBFBD>}<7D><15><1B>M<EFBFBD>*<2A>R<EFBFBD> <0A>-><3E>><3E>"<22>'<27>'<27>
<EFBFBD>=<3D><19>Q<EFBFBD><1E><12>M<EFBFBD>!2<>a<EFBFBD>!7<>7<>C9<>9<>B<EFBFBD>}<7D><15>%'<27>|<7C>$4<>r<EFBFBD>,<2C>7G<37>$G<>B<EFBFBD> <20>!<21>"$<24>]<5D>"3<>b<EFBFBD><1C>6F<36>"F<>B<EFBFBD><1E><1F>$&<26>|<7C>$4<>r<EFBFBD>,<2C>7G<37>$G<>B<EFBFBD> <20>!<21>*,<2C>\<5C>*:<3A>R<EFBFBD> <0A>=N<>*N<>RT<52>Ua<55>Rb<52>)b<>B<EFBFBD>%<25>&<26>,.<2E>}<7D>,=<3D><02>><3E>@R<>,R<>VX<56>Ye<59>Vf<56>+f<>B<EFBFBD>'<27>(<28><1B><16><16><02>9<EFBFBD> <0A>.<2E>B<EFBFBD>~<7E><16><1D>l<EFBFBD>+<2B>b<EFBFBD><1C>.><3E>><3E>2<EFBFBD>j<EFBFBD>><3E>TV<54>W`<60>Ta<54>Ca<43>b<>B<EFBFBD><EFBFBD><17><1C>W<EFBFBD>+<2B><02>;<3B><0F>7<>B<EFBFBD>|<7C><L<>r<EFBFBD>R]<5D><EFBFBD><^<5E>_<>B<EFBFBD>~<7E><16><19>,<2C>'<27>"<22>\<5C>*:<3A>:<3A>r<EFBFBD>,<2C>?O<>RT<52>U`<60>Ra<52>?a<>b<>B<EFBFBD>{<7B>O<EFBFBD><1A>?<3F>+<2B> <0A><12>L<EFBFBD>!<21>B<EFBFBD>{<7B>O<EFBFBD>3<><02>:<3A><0E><12>I<EFBFBD><1D>8V<38>W<> W<>Y<01>B<EFBFBD>}<7D><15><1E>g<EFBFBD>;<3B><12>L<EFBFBD>)9<>9<>b<EFBFBD><1E>>P<>ST<53>>T<>U<>B<EFBFBD><EFBFBD><17><1C>\<5C>*<2A>R<EFBFBD> <0B>_<EFBFBD><<3C><02>8<EFBFBD> <0C>L<>B<EFBFBD>~<7E><16>%&<26><02>9<EFBFBD> <0A>$5<>"<22>\<5C>:J<>R<EFBFBD>P\<5C>M]<5D>:]<5D>#^<5E>B<EFBFBD><1F> <20>#%<25>g<EFBFBD>;<3B><12>L<EFBFBD>1A<31>#A<>#%<25>n<EFBFBD>#5<><03>#;<3B>#=<3D>#%<25>m<EFBFBD>#4<>s<EFBFBD>#:<3A>#<<3C>B<EFBFBD><1D><1E>!<21><1F>1<>B<EFBFBD>y<EFBFBD>M<EFBFBD>A<>B<EFBFBD><1A><1B>!<21>%<25>y<EFBFBD>2<EFBFBD>i<EFBFBD>=<3D>8<>B<EFBFBD><1B><1C>!#<23>O<EFBFBD>!4<><01>B<EFBFBD>y<EFBFBD>M<EFBFBD>8I<38>!J<>B<EFBFBD><1D><1E> "<22>5<EFBFBD> <09>B<EFBFBD>y<EFBFBD>M<EFBFBD> 9<>B<EFBFBD><1C><1D><1E>~<7E>.<2E><12>I<EFBFBD><1D>><3E>B<EFBFBD><18><19><1A>?<3F>+<2B>b<EFBFBD><1E>.@<40>@<40>2<EFBFBD>i<EFBFBD>=<3D>P<>B<EFBFBD>}<7D><15>#%<25>:<3A>:<3A>E<>:<3A>C<EFBFBD><1E><1E><03>1D<31>C<EFBFBD>:<3A>L<EFBFBD>E<><06>G<EFBFBD>G<EFBFBD>L<EFBFBD>$<24>x<EFBFBD>G<EFBFBD>@<40>"$<24>*<2A>*<2A>"3<>"3<>"5<>a<EFBFBD>"8<>S<>"8<>3<EFBFBD>{<7B><R<>3<EFBFBD>"8<>K<EFBFBD>S<> <0A>?<3F><1A><> F<01><>Ts<00>)N<04>N<04>> N<04> Nc<00><00>URS5nUSUS-
US- S-US'USR5nURUS:<3A>S5nURUS:S5*nURSS9R 5nURSS9R 5nXE- nSSS U-- -
US
'USR S S S 9R 5nUSR SS S 9R 5nXx-
US'USR SS S 9R 5US'USUS-
US'USR S5US'USRSS9R 5US'USRSS9R 5US'USUS-
US- S-US'USRSS9R5US'USRSS9R 5US'USUS-
US- S-US'U$)uI
计算四个指标当日涨跌幅、5日移动平均、RSI、MACD。
rr"<00> pre_closer<65><00> daily_returnrrCr rra<00> F)<02>span<61>adjust<73><00>MACDri<00> Signal_line<6E> MACD_histc<00><00>US:<3A>aS$S$)Nrrr<r0s r2r3<00>&calculate_indicators.<locals>.<lambda><3E>s<00><00>Q<EFBFBD><11>U<EFBFBD><01>8I<38><01>8Ir6<00>up_ratior(<00> up_ratio_20dr<00> volume_meanr<00>
volatility<EFBFBD>amount<6E> amount_mean<61>amount_change_rate)r<>r<>r r.r/<00>ewmr<6D>r}) r<>r<><00>gain<69>loss<73>avg_gain<69>avg_loss<73>rs<72>ema12<31>ema26s r2<00>calculate_indicatorsr<73><00>sX<00><00>
<0C><1E><1E> <0C> %<25>B<EFBFBD><1C>W<EFBFBD>+<2B><02>;<3B><0F>7<>2<EFBFBD>k<EFBFBD>?<3F>J<>S<EFBFBD>P<>B<EFBFBD>~<7E><16> <0E>w<EFBFBD>K<EFBFBD> <1C> <1C> <1E>E<EFBFBD> <10>;<3B>;<3B>u<EFBFBD>q<EFBFBD>y<EFBFBD>!<21> $<24>D<EFBFBD> <11>K<EFBFBD>K<EFBFBD><05><01> <09>1<EFBFBD> %<25> %<25>D<EFBFBD><13>|<7C>|<7C>2<EFBFBD>|<7C>&<26>+<2B>+<2B>-<2D>H<EFBFBD><13>|<7C>|<7C>2<EFBFBD>|<7C>&<26>+<2B>+<2B>-<2D>H<EFBFBD> <11> <1C>B<EFBFBD><13>s<EFBFBD>a<EFBFBD>"<22>f<EFBFBD>~<7E>&<26>B<EFBFBD>u<EFBFBD>I<EFBFBD> <0F>w<EFBFBD>K<EFBFBD>O<EFBFBD>O<EFBFBD><12>E<EFBFBD>O<EFBFBD> 2<> 7<> 7<> 9<>E<EFBFBD> <0E>w<EFBFBD>K<EFBFBD>O<EFBFBD>O<EFBFBD><12>E<EFBFBD>O<EFBFBD> 2<> 7<> 7<> 9<>E<EFBFBD><16><1D>B<EFBFBD>v<EFBFBD>J<EFBFBD><1A>6<EFBFBD>
<EFBFBD><0E><0E>A<EFBFBD>e<EFBFBD><0E><<3C>A<>A<>C<>B<EFBFBD>}<7D><15><18><16>j<EFBFBD>2<EFBFBD>m<EFBFBD>#4<>4<>B<EFBFBD>{<7B>O<EFBFBD><18><0E>'<27>-<2D>-<2D>.I<>J<>B<EFBFBD>z<EFBFBD>N<EFBFBD><1B>J<EFBFBD><1E>/<2F>/<2F>r<EFBFBD>/<2F>:<3A>?<3F>?<3F>A<>B<EFBFBD>~<7E><16><1B>5<EFBFBD> <09>)<29>)<29><12>)<29>4<>9<>9<>;<3B>B<EFBFBD>}<7D><15> "<22>5<EFBFBD> <09>B<EFBFBD>}<7D>,=<3D> =<3D><12>M<EFBFBD>AR<41>R<>UX<55>X<>B<EFBFBD><1B><1C><1A>.<2E>)<29>1<>1<><12>1<><<3C>@<40>@<40>B<>B<EFBFBD>|<7C><14><1B>8<EFBFBD> <0C>,<2C>,<2C>B<EFBFBD>,<2C>7<><<3C><<3C>><3E>B<EFBFBD>}<7D><15> "<22>8<EFBFBD> <0C>r<EFBFBD>-<2D>/@<40> @<40>B<EFBFBD>}<7D>DU<44>U<>X[<5B>[<5B>B<EFBFBD><1B><1C> <0A>Ir6c<00><><00>[R"USS9n[R"USSS9US'URS5n/nUSR 5H7nXSU:HR 5n[ U5nURU5 M9 [R"USS9nURSS/S QS
S 9nURVs/sHowS S US3PM snUl
UR5nU$s snf)N<>
index_data)<01>keyr<00>%Y%m%d<><01>formatrT)<01> ignore_index)
r<EFBFBD>rar<>r<>r<>r<>rr<>r<>r<><00>last)r*r<>rI<00>aggfuncrr<>r) r,<00>read_hdf<64> to_datetimer<65><00>unique<75>copyr<79><00>append<6E>concat<61> pivot_tabler<65>r<>)<08> h5_filenamer<65><00> df_indicatorsr<00>df_index<65>df_all_indicators<72>df_finalr<6C>s r2<00>generate_index_indicatorsr <00>s<00><00> <0B><1B><1B>[<5B>l<EFBFBD> 3<>B<EFBFBD><19>~<7E>~<7E>b<EFBFBD><1C>&6<>x<EFBFBD>H<>B<EFBFBD>|<7C><14> <0B><1E><1E> <0C> %<25>B<EFBFBD><17>M<EFBFBD><15>i<EFBFBD>=<3D>'<27>'<27>)<29><07><15><19>m<EFBFBD>w<EFBFBD>.<2E>/<2F>4<>4<>6<><08>'<27><08>1<><08><15><1C><1C>X<EFBFBD>&<26>*<2A> <1B> <09> <09>-<2D>d<EFBFBD>C<><15>!<21>,<2C>,<2C><1A><19>5<><17> -<2D><06>H<EFBFBD>9A<01>8H<38>8H<38>I<>8H<38><13>q<EFBFBD>6<EFBFBD>(<28>!<21>C<EFBFBD><01>F<EFBFBD>8<EFBFBD>,<2C>8H<38>I<>H<EFBFBD><14><17>#<23>#<23>%<25>H<EFBFBD> <13>O<EFBFBD><4F>Js<00> C9c<00><><00>[R"US/SQS9nURSS/S9nUR5n[R"USSS9US'UR SS S
9nUR S 5US 'US R S5US'US R S5US'[US S9nURSS/S9nUR S5SRS5US'UR S5SRS5US'UR/SQS9nURURVs0sHo3S;dM
USU3_M snS9nURSS0S9nU$s snf)N<>sw_daily) rrr;r"r:r?<00>pe<70>pbr)r<>r<>rrrr<>r<>Frc<00><><00>[R"[R"USRUSR5UR
S9$rRrSr0s r2r3<00>$read_industry_data.<locals>.<lambda><3E>rUr6rVr"c<00>.<00>XRS5- S-
$rlrmr0s r2r3r<00>s<00><00><11>W<EFBFBD>W<EFBFBD>Q<EFBFBD>Z<EFBFBD><1E>RS<52>ASr6rpc<00>.<00>XRS5- S-
$rwrmr0s r2r3r<00>s<00><00>!<21>g<EFBFBD>g<EFBFBD>b<EFBFBD>k<EFBFBD>/<2F>TU<54>BUr6rx)r<>c<00> <00>URSS9$rrr0s r2r3r<00><00><00>!<21>&<26>&<26>T<EFBFBD>&<26>"r6<00>return_5_percentilec<00> <00>URSS9$rrr0s r2r3rrr6<00>return_20_percentile)r;r"r:r?rrr)r<>)rr<00> industry_<79> cat_l2_code) r,r<>r<><00>reindexrr<>r<>r<>r!r<00>renamer<65>)r<00> industry_datar<61>r<>s r2<00>read_industry_datar<00>s<><00><00><16>K<EFBFBD>K<EFBFBD> <0B><1A>F<06><07>M<EFBFBD>"<22>-<2D>-<2D>)<29>\<5C>1J<31>-<2D>K<>M<EFBFBD>!<21>)<29>)<29>+<2B>M<EFBFBD>"$<24>.<2E>.<2E><1D>|<7C>1L<31>U]<5D>"^<5E>M<EFBFBD>,<2C><1F><1B>#<23>#<23>I<EFBFBD>%<25>#<23>@<40>G<EFBFBD>"<22>=<3D>=<3D>Y<><06>M<EFBFBD>%<25><18>!(<28><07> 0<> 6<> 6<>7S<37> T<>M<EFBFBD>*<2A><1D>!(<28><17>!1<>!7<>!7<>8U<38>!V<>M<EFBFBD>+<2B><1E>"<22>=<3D>e<EFBFBD><<3C>M<EFBFBD>!<21>-<2D>-<2D>,<2C> <09>1J<31>-<2D>K<>M<EFBFBD>,9<>+@<40>+@<40><1C>+N<>z<EFBFBD>+Z<>+d<>+d<>"<22>,$<24>M<EFBFBD>'<27>(<28>,9<>,A<>,A<>,<2C>,O<>P[<5B>,\<5C>,f<>,f<>"<22>-$<24>M<EFBFBD>(<28>)<29>!<21>&<26>&<26>/b<>&<26>c<>M<EFBFBD>!<21>(<28>(<28>3@<40>3H<33>3H<33>q<>3H<33>C<EFBFBD>Wp<57>Lp<4C>'<27><13> <09>#<23><15>'<27>'<27>3H<33>q<>)<29>s<01>M<EFBFBD>"<22>(<28>(<28>)<29>]<5D>1K<31>(<28>L<>M<EFBFBD> <18><18><>rs <00>= E,<08>
E,)T)<11>numpyr<79>rG<00>pandasr,r<>r<>r<>r%rCr<>r<>r<>r<>r<>r rr<r6r2<00><module>r!s^<00><01><12> <0C><13>h<0E>V0<0E>f
<0E>)<0E>X$<0E>N:<0E>z7<0E>t<13> <0C>L<1B>^N<1B>b%<0E>P<14>>&r6