def conponent_profit(self): close = pd.DataFrame()["close"] returns = ffn.get('aapl,msft,c,gs,ge', start='2010-01-01').to_returns(close).dropna() returns.calc_mean_var_weights().as_format('.2%') # 1. 方法 Tesla['Return'] = (Tesla['Close'] - Tesla['Close'].shift(1)) / Tesla['Close'].shift(1) Tesla = Tesla.dropna() # 2. 方法 GM['Return'] = ffn.to_returns(GM['Close']) # 3. 方法 Ford['Return'] = Ford['Close'].pct_change(1) Ford = Ford.dropna() # 年化率 simpleret = ffn.to_returns(close) # 复利化 simpleret = ffn.to_log_returns(close) annue = (1 + simpleret).cumprod()[-1]**(245 / 311) - 1 # 方差 simpleret.std()
zt.prDF('df_usr',df_usr) print('\n#3.2 tq_usrDatXed') df2,k=ztq.tq_usrDatXed(qx,df_usr) zt.prDF('df2',df2) # print('\n#3.3 ret') print('ret:',k,'%') print('\n#3.4 tq_usrDatXedFill') df=ztq.tq_usrDatXedFill(qx,df2) zt.prDF('df',df) #============== #4 ret xed ret=ffn.to_log_returns(df[xlst]).dropna() zt.prDF('\n#4.1,ret#1',ret) # ret=ffn.to_returns(df[xlst]).dropna() zt.prDF('\n#4.2,ret#2',ret) # ret[xlst]=ret[xlst].astype('float') zt.prDF('\n#4.3,ret#3',ret) #5 ret.hist print('\n#5 ret.hist') ax = ret.hist(figsize=(16,8)) #6 print('\n# ret.corr()') ret=ret.corr().as_format('.2f')
elif period == 'month': return ((1 + returns).cumprod()[-1]**(12 / len(returns)) - 1) elif period == 'quarter': return ((1 + returns).cumprod()[-1]**(4 / len(returns)) - 1) elif period == 'year': return ((1 + returns).cumprod()[-1]**(1 / len(returns)) - 1) else: raise Exception("Wrong period") import numpy as np comporet = np.log(close / lagclose) comporet.name = 'comporet' comporet.head() ffnComporet = ffn.to_log_returns(close) ffnComporet.head() comporet2 = np.log(close / close.shift(2)) comporet2.name = 'comporet2' comporet2.head() comporet2 = comporet2.dropna() comporet2.head() sumcomporet = comporet + comporet.shift(1) sumcomporet.head() import matplotlib.pyplot as plt plt.plot(simpleret) plt.title('台積電收盤價的單期收益率')
close_xianbank['close'].shift(2)) / close_xianbank['close'].shift(2) # 同样用pct_change()更简单 # dailyreturn_xianbank_2 = close_xianbank['close'].pct_change(periods = 2) # 利用ffn模块计算单期简单收益率 # pip install ffn import ffn ffn_dailyreturn_xianbank = ffn.to_returns(close_xianbank['close']) # 计算对数收益 / 连续复利收益率 logreturn_xianbank = np.log(close_xianbank['close'] / close_xianbank['close'].shift(1)) logreturn_xianbank_2 = np.log(close_xianbank['close'] / close_xianbank['close'].shift(2)) # 或者 ffn_logreturn_xianbank = ffn.to_log_returns(close_xianbank['close']) # 计算年化简单收益率,假设一年有245个交易日 annualize_dailyreturn_xianbank = (1 + dailyreturn_xianbank).cumprod()[-1]**( 245 / 311) - 1 # 收益率曲线绘图 dailyreturn_xianbank.plot() # 累积收益率曲线 # cumprod(), 0代表列的计算,1代表行的计算 ((1 + dailyreturn_xianbank).cumprod(0) - 1).plot() # 观察方差比较两只股票风险的大小 dailyreturn_xianbank_without_nan = close_xianbank['close'].pct_change().dropna( ) dailyreturn_xibuzhengquan_without_nan = close_xibuzhengquan[