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

40 lines
4.5 KiB
Plaintext
Raw Normal View History

2025-06-01 15:59:29 +08:00
<EFBFBD>
?<3F>6h<00><00>:<00>SSKrSSKrSSSS/S4SjrSrSSjrg) <09>N<>left<66>ts_code<64>
trade_datec<00>~<00>/nUH@nURS5(aURUSS5 M/URU5 MB [R"XUS9n U RH nX<>;dM
SU3n
U R X<>0SS9 M" Ub3U RH#nUS;dM USU3n
U R X<>0SS9 M% UbtUR (dc[USU35 SU;a6[R"USS S
9US'[R"U SS S
9U S'[R"X9XTS 9n U $U n U $) 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/train/../../main/utils/utils.py<70>read_and_merge_h5_datar"sM<00><00><1A><15><16><03> <0E>><3E>><3E>#<23> <1E> <1E> <1D> $<24> $<24>S<EFBFBD><11><12>W<EFBFBD> -<2D> <1D> $<24> $<24>S<EFBFBD> )<29> <17> <0E>;<3B>;<3B>{<7B>5F<35> G<>D<EFBFBD><14>|<7C>|<7C><03> <0E> <1D><19>#<23><15>i<EFBFBD>G<EFBFBD> <10>K<EFBFBD>K<EFBFBD><13><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>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>"<22>7<> <09>
<15><14><19> <09> <14><14>c <00><><00>[R"US5US'[R"US5US'URSS/5nURSS/5n[R"UUSSSSS9nUR S5R 5R 5SS/nUSRUSRURS5S55US'UR SS9nU$) 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>URSS/S9n[R"URS5SR U*5US- 5US'[R"URS5SR S5US- 5US'URS5SR US9R 5RS S
S 9US 'US :XaUSUS U-- US'U$US:XaUSX0S --
US'U$[S5e)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_returnrPRsC<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><<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#