Files
NewStock/main/utils/__pycache__/utils.cpython-311.pyc

38 lines
5.0 KiB
Plaintext
Raw Normal View History

2025-04-28 11:02:52 +08:00
<EFBFBD>
<00>`<60>g<00><00>8<00>ddlZddlZddddgdfd<05>Zd<06>Zd d <0B>ZdS) <0A>N<>left<66>ts_code<64>
trade_datec<00>~<00>g}|D]J}|<08>d<01><00>r|<07>|dd<00><00><00><00>5|<07>|<08><00><00>Ktj|||<07><03><00>} | jD]$}||vrd|<08><00>}
| <09>||
id<04><05><00><00>%|<06>.| jD]&}|dvr |<06>d|<08><00>}
| <09>||
id<04><05><00><00>'|<03>v|jsot|<04>d|<05><00><03><00>d|vr>tj|dd <09>
<EFBFBD><00>|d<tj| dd <09>
<EFBFBD><00>| d<tj || ||<04> <0B><00>} n| } | S) N<>_<>)<02>key<65>columnsT)r
<00>inplace)rrz
merge on rz%Y%m%d)<01>format)<02>on<6F>how)
<EFBFBD>
startswith<EFBFBD>append<6E>pd<70>read_hdfr
<00>rename<6D>empty<74>print<6E> to_datetime<6D>merge) <0C> h5_filenamer r
<00>df<64>joinr <00>prefix<69>processed_columns<6E>col<6F>data<74>new_col<6F> merged_dfs <20>)E:\PyProject\NewStock\code\utils\utils.py<70>read_and_merge_h5_datar"s<><00><00><1A><15><16>*<2A>*<2A><03> <0E>><3E>><3E>#<23> <1E> <1E> *<2A> <1D> $<24> $<24>S<EFBFBD><11><12><12>W<EFBFBD> -<2D> -<2D> -<2D> -<2D> <1D> $<24> $<24>S<EFBFBD> )<29> )<29> )<29> )<29> <0E>;<3B>{<7B><03>5F<35> G<> G<> G<>D<EFBFBD><14>|<7C>><3E>><3E><03> <0E>g<EFBFBD> <1D> <1D><1F>#<23>i<EFBFBD>i<EFBFBD>G<EFBFBD> <10>K<EFBFBD>K<EFBFBD><13>g<EFBFBD><0E><04>K<EFBFBD> =<3D> =<3D> =<3D><> <0A><19><17><<3C> B<01> B<01>C<EFBFBD><12>3<>3<>3<>#<23>+<2B>+<2B>c<EFBFBD>+<2B>+<2B><07><14> <0B> <0B>S<EFBFBD>'<27>N<EFBFBD>D<EFBFBD> <0B>A<>A<>A<><41>
<EFBFBD>~<7E>b<EFBFBD>h<EFBFBD>~<7E> <0A><14>%<25>%<25><12>%<25>%<25>&<26>&<26>&<26> <17>2<EFBFBD> <1D> <1D>!<21>~<7E>b<EFBFBD><1C>.><3E>x<EFBFBD>P<>P<>P<>B<EFBFBD>|<7C> <1C>!#<23><1E><04>\<5C>0B<30>8<EFBFBD>!T<>!T<>!T<>D<EFBFBD><1C> <1E><17>H<EFBFBD>R<EFBFBD><14>"<22>$<24>7<>7<>7<> <09> <09><19> <09> <14><14>c<00>X<00>tj|d<00><00>|d<tj|d<00><00>|d<|<01>ddg<02><00>}|<00>ddg<02><00>}tj||dddd<04><05><00>}|<02>d<03><00><00><00><00><00><00><00>ddg}|d<00>|d<00>|<05> d<03><00>d<00><00><00><00>|d<|<04>d<07><08><00>}|S) Nr<00>in_dater<00>backward)<04>by<62>left_on<6F>right_on<6F> direction<6F>l2_codeT)<01>drop)
rr<00> sort_values<65>
merge_asof<EFBFBD>groupby<62>first<73> reset_index<65>fillna<6E>map<61> set_index)r<00> industry_df<64>industry_df_sorted<65> df_sorted<65>merged<65>min_in_date_per_ts<74>results r!<00>merge_with_industry_datar;-s,<00><00><19>~<7E>b<EFBFBD><1C>&6<>7<>7<>B<EFBFBD>|<7C><14><1F>^<5E>K<EFBFBD> <09>,B<>C<>C<>K<EFBFBD> <09><1A>%<25>0<>0<>)<29>Y<EFBFBD>1G<31>H<>H<><16><13><0E><0E> <0C>i<EFBFBD>8<>9<>9<>I<EFBFBD><10>]<5D><11><1A> <14><1C><1A><1C> <06><06><06>F<EFBFBD>-<2D> <0C>W<EFBFBD>Y<EFBFBD><17><17>
<EFBFBD>U<EFBFBD>W<EFBFBD>W<EFBFBD><10>[<5B>]<5D>]<5D>I<EFBFBD>y<EFBFBD>)<29>+<2B><16> <1F>y<EFBFBD>)<29>0<>0<><0E>y<EFBFBD><19><1D><1D>0<>:<3A>:<3A>9<EFBFBD>E<>E<>i<EFBFBD>P<>Q<>Q<><06><06>F<EFBFBD>9<EFBFBD><15>
<14> <1F> <1F>T<EFBFBD> <1F> *<2A> *<2A>F<EFBFBD> <11>Mr#r<00>ratio<69><00>?<3F>:<3A>0<EFBFBD><30>yE>c<00><><00>|<00>ddg<02><03><00>}tj|<00>d<01><00>d<00>| <00><00>|dz <00><00>|d<tj|<00>d<01><00>d<00>d<06><00>|dz <00><00>|d<|<00>d<01><00>d<00>|<01><08><00><00><00><00><00>d d
<EFBFBD> <0B><00>|d <|d kr|d|d |zz |d<n-|dkr|d||d zz
|d<ntd<10><00><00>|S)u%
计算单只股票的风险调整收益。
参数:
- df: DataFrame包含 'ts_code' 和 'close' 列,按日期排序(假设 'trade_date' 已排序)。
- days: 预测未来多少天的收益默认1天。
- method: 'ratio'(收益/波动率) 或 'difference'(收益 - λ * 波动率)。
- lambda_: 风险惩罚系数,仅当 method='difference' 时有效。
- eps: 防止除零的小常数。
返回:
- df添加 'risk_adj_return' 列的 DataFrame表示风险调整后的收益。
rr)r'<00>close<73> future_returnr<00>historical_return)<01>windowrT)<02>levelr,<00>
volatilityr<<00>risk_adj_return<72>
differencez,Invalid method. Use 'ratio' or 'difference'.) r-<00>np<6E>logr/<00>shift<66>rolling<6E>stdr1<00>
ValueError)r<00>days<79>method<6F>lambda_<61>epss r!<00>calculate_risk_adjusted_returnrRRsg<00><00>
<0C><1E><1E>I<EFBFBD>|<7C>4<><1E> 5<> 5<>B<EFBFBD><1D>&<26><12><1A><1A>I<EFBFBD>!6<>!6<>w<EFBFBD>!?<3F>!E<>!E<>t<EFBFBD>e<EFBFBD>!L<>!L<>r<EFBFBD>RY<52>{<7B>!Z<>[<5B>[<5B>B<EFBFBD><EFBFBD><17>!<21>f<EFBFBD>R<EFBFBD>Z<EFBFBD>Z<EFBFBD> <09>%:<3A>%:<3A>7<EFBFBD>%C<>%I<>%I<>!<21>%L<>%L<>r<EFBFBD>RY<52>{<7B>%Z<>[<5B>[<5B>B<EFBFBD><1A><1B><1A>z<EFBFBD>z<EFBFBD>)<29>,<2C>,<2C>-@<40>A<>I<>I<>QU<51>I<>V<>V<>Z<>Z<>\<5C>\<5C>h<>h<>op<6F>nr<6E>i<01>t<01>t<01>B<EFBFBD>|<7C><14><0E><17><18><18> "<22>?<3F> 3<>r<EFBFBD>,<2C>7G<37>#<23>7M<37> N<><02> <1C><1D><1D> <0F><<3C> <1F> <1F> "<22>?<3F> 3<>g<EFBFBD><02><<3C>@P<>6P<36> P<><02> <1C><1D><1D><18>G<>H<>H<>H<> <0A>Ir#)rr<r=r>)<07>numpyrH<00>pandasrr"r;rR<00>r#r!<00><module>rVss<00><01><12><12><12><12><13><13><13><13>:><3E>F<EFBFBD>PY<50>[g<>Oh<4F>qu<71>%<15>%<15>%<15>%<15>P"<12>"<12>"<12>J%<0E>%<0E>%<0E>%<0E>%<0E>%r#