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

41 lines
4.5 KiB
Plaintext
Raw Normal View History

2025-06-10 15:22:25 +08:00
<EFBFBD>
?<3F>6h<00><00>6<00>ddlZddlZddddgdfd<05>Zd<06>Zdd<07>Zy) <09>N<>left<66>ts_code<64>
trade_datec<00>p<00>g}|D]9}|jd<01>r|j|dd<00><00>)|j|<08><00>;tj|||<07><03>} | jD]!}||vs<01>d|<08><00>}
| j ||
id<04><05><00>#|<06>2| jD]#}|dvs<01>|<06>d|<08><00>}
| j ||
id<04><05><00>%|<03>u|j sit|<04>d|<05><00><03>d|vr:tj|dd <09>
<EFBFBD>|d<tj| dd <09>
<EFBFBD>| d<tj|| ||<04> <0B>} | S| } | 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>-/mnt/d/PyProject/NewStock/main/utils/utils.py<70>read_and_merge_h5_datar"sV<00><00><1A><15><16><03> <0E>><3E>><3E>#<23> <1E> <1D> $<24> $<24>S<EFBFBD><11><12>W<EFBFBD> -<2D> <1D> $<24> $<24>S<EFBFBD> )<29> <17> <0E>;<3B>;<3B>{<7B><03>5F<35> G<>D<EFBFBD><14>|<7C>|<7C><03> <0E>g<EFBFBD> <1D><19>#<23><15>i<EFBFBD>G<EFBFBD> <10>K<EFBFBD>K<EFBFBD><13>g<EFBFBD><0E><04>K<EFBFBD> =<3D><1C>
<0E><19><17><<3C><<3C>C<EFBFBD><12>3<>3<>#<23>H<EFBFBD>A<EFBFBD>c<EFBFBD>U<EFBFBD>+<2B><07><14> <0B> <0B>S<EFBFBD>'<27>N<EFBFBD>D<EFBFBD> <0B>A<> <20> 
<EFBFBD>~<7E>b<EFBFBD>h<EFBFBD>h<EFBFBD> <0A><14><06>j<EFBFBD><12><04>%<25>&<26> <17>2<EFBFBD> <1D>!<21>~<7E>~<7E>b<EFBFBD><1C>.><3E>x<EFBFBD>P<>B<EFBFBD>|<7C> <1C>!#<23><1E><1E><04>\<5C>0B<30>8<EFBFBD>!T<>D<EFBFBD><1C> <1E><17>H<EFBFBD>H<EFBFBD>R<EFBFBD><14>"<22>$<24>7<> <09>
<15><14><19> <09> <14><14>c<00><><00>tj|d<00>|d<tj|d<00>|d<|jddg<02>}|jddg<02>}tj||dddd<04><05>}|j d<03>j <00>j <00>ddg}|dj|dj|jd<03>d<00><00>|d<|j d<07><08>}|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>~<7E>b<EFBFBD><1C>&6<>7<>B<EFBFBD>|<7C><14><1F>^<5E>^<5E>K<EFBFBD> <09>,B<>C<>K<EFBFBD> <09><1A>%<25>0<>0<>)<29>Y<EFBFBD>1G<31>H<><16><13><0E><0E> <0C>i<EFBFBD>8<>9<>I<EFBFBD><10>]<5D>]<5D><11><1A> <14><1C><1A><1C> <06>F<EFBFBD>-<2D> <0C>W<EFBFBD>Y<EFBFBD><17>
<EFBFBD>U<EFBFBD>W<EFBFBD><10>[<5B>]<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<>i<EFBFBD>P<>Q<><06>F<EFBFBD>9<EFBFBD><15>
<14> <1F> <1F>T<EFBFBD> <1F> *<2A>F<EFBFBD> <11>Mr#c<00>*<00>|jddg<02><03>}tj|jd<01>dj | <00>|dz <00>|d<tj|jd<01>dj d<06>|dz <00>|d<|jd<01>dj |<01><08>j <00>jd d
<EFBFBD> <0B>|d <|d k(r|d|d |zz |d<|S|dk(r|d||d zz
|d<|Std<10><00>)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>
volatility<EFBFBD>ratio<69>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_returnrPRsE<00><00>
<0C><1E><1E>I<EFBFBD>|<7C>4<><1E> 5<>B<EFBFBD><1D>&<26>&<26><12><1A><1A>I<EFBFBD>!6<>w<EFBFBD>!?<3F>!E<>!E<>t<EFBFBD>e<EFBFBD>!L<>r<EFBFBD>RY<52>{<7B>!Z<>[<5B>B<EFBFBD><EFBFBD><17>!<21>f<EFBFBD>f<EFBFBD>R<EFBFBD>Z<EFBFBD>Z<EFBFBD> <09>%:<3A>7<EFBFBD>%C<>%I<>%I<>!<21>%L<>r<EFBFBD>RY<52>{<7B>%Z<>[<5B>B<EFBFBD><1A><1B><1A>z<EFBFBD>z<EFBFBD>)<29>,<2C>-@<40>A<>I<>I<>QU<51>I<>V<>Z<>Z<>\<5C>h<>h<>op<6F>nr<6E>i<01>t<01>B<EFBFBD>|<7C><14><0E><17><18> "<22>?<3F> 3<>r<EFBFBD>,<2C>7G<37>#<23>7M<37> N<><02> <1C><1D> <0E>I<EFBFBD>
<10><<3C> <1F> "<22>?<3F> 3<>g<EFBFBD><02><<3C>@P<>6P<36> P<><02> <1C><1D> <0E>I<EFBFBD><19>G<>H<>Hr#)rrCg<00>?g:<3A>0<EFBFBD><30>yE>)<07>numpyrF<00>pandasrr"r;rP<00>r#r!<00><module>rTs/<00><01><12><13>:><3E>F<EFBFBD>PY<50>[g<>Oh<4F>qu<71>%<15>P"<12>J%r#