Пример #1
0
def calc_beta(symbol):

    # ohlc = dl.data.OHLC()# 生成数据获取对象
    # SHci = ohlc.get('000001.ss')['Adj Close']# 获取市场数据
    # stock = ohlc.get(symbol)['Adj Close']# 获取股票数据
    SHci = data.get_data_yahoo('000001.ss', start=start, end=end)['Adj Close']
    stock = data.get_data_yahoo(symbol, start=start, end=end)['Adj Close']
    df = pd.DataFrame({'SHci': SHci, symbol: stock}).dropna()  # 将股票数据与市场数据结合
    SHci_rets = fc.log_rets(df['SHci'])  # 计算市场对数收益率
    rets = fc.log_rets(df[symbol])  # 计算股票对数收益率
    beta, _ = np.polyfit(SHci_rets, rets, 1)  # 拟合beta系数
    print(symbol)
    # annualize & percentify
    return beta, 250 * rets.mean() * 100  # 返回beta系数,年化收益率
Пример #2
0
def variance_return(stocka, stockb, stds):
    ohlc = dl.data.OHLC()
    dfa = data.get_data_yahoo(stockb, start=start, end=end)
    dfb = data.get_data_yahoo(stockb, start=start, end=end)
    #dfa = ohlc.get(stocka)
    #dfb = ohlc.get(stockb)
    merged = pd.merge(left=dfa, right=dfb,
                      right_index=True, left_index=True,
                      suffixes=('_A', '_B')).dropna()
    retsa = fc.log_rets(merged['Adj Close_A'])
    retsb = fc.log_rets(merged['Adj Close_B'])
    corr = np.corrcoef(retsa, retsb)[0][1]
    return 0.25 * (stds[stocka] ** 2 + stds[stockb] ** 2 +
                   2 * stds[stocka] * stds[stockb] * corr)
Пример #3
0
    return ratio


fc.delete_not_safe(infoClass.STOCKS, infoClass.STOCKS_ZH)
zh_font = mpl.font_manager.FontProperties(fname='C:\Windows\Fonts\simsun.ttc')
# 为每一只股票计算平均收益和标准偏差
means = {}
stds = {}

ohlc = dl.data.OHLC()

for stock in infoClass.STOCKS:
    print(stock)
    close = data.get_data_yahoo(stock, start=start, end=end)['Adj Close']
    # close = ohlc.get(stock)['Adj Close']
    rets = fc.log_rets(close)
    means[stock] = rets.mean()
    stds[stock] = rets.std()
# 计算所有股票的所有组合的网格比率
pairs = dl.collect.grid_list(infoClass.STOCKS)
sorted_pairs = [[sorted(row[i]) for row in pairs]
                for i in range(len(infoClass.STOCKS))]
ratios = {}

grid = [[
    calc_ratio(row[i][0], row[i][1], means, stds, ratios)
    for row in sorted_pairs
] for i in range(len(infoClass.STOCKS))]
print(grid)

# 使用tensorflow求最大值及每行最大值索引
Пример #4
0
import numpy as np
from scipy.stats import norm
from IPython.display import HTML
import matplotlib as mpl
from datetime import datetime

zh_font = mpl.font_manager.FontProperties(fname='C:\Windows\Fonts\simsun.ttc')
# 计算股票收益
ohlc = dl.data.OHLC()
rets_dict = {}
start = datetime(2018,12,1,0,0,0,0)
end = datetime(2019,5,11,0,0,0,0)

for i, symbol in enumerate(infoClass.STOCKS):
    print(symbol)
    rets = fc.log_rets(fc.get_historical_data(symbol, start=start, end=end)['Adj Close'])
    rets_dict[symbol] = rets

# SHci = fc.log_rets(ohlc.get('000001.ss')['Adj Close'])

# 计算收益的偏度和峰度
skews = [skew(rets_dict[s]) for s in infoClass.STOCKS]
kurts = [kurtosis(rets_dict[s]) for s in infoClass.STOCKS]

std_skews = np.std(skews)
std_kurts = np.std(kurts)
print(std_skews)
print(std_kurts)
#构建输出样式
dfb = dl.report.DFBuilder(cols=['ZH', 'Ticker', 'Skew/std', 'Kurt/std'])