股票多因子模型实战:Python核心代码解析.笔记01(量化Python基础)

*本系列是《股票多因子模型实战:Python核心代码解析》一书的读书笔记和代码展示

1. Python基础笔记

- 变量:存放数据的载体

- for i in i_list, 此处的i是一个临时的代理变量(for 临时变量 in 某个列表:)

- 函数:对某一个多次使用的功能进行封装后形成的代码块,某种意义上可称其为功能模块

- series和dataframe: series代表某一个属性(某一列)下的记录,dataframe由series组合而成

- and、or等逻辑判断式:每一个逻辑判断式都需要用括号包起来

代码部分:

import numpy as np
import pandas as pd
from matplotlib import pyplot as plt


#1. numpy基础
stock_pctcg = np.array([0.3, 1.2, 2.4, 1.5, 3.5, 8.1, -4, -2, 0.16])

print('mean:', np.mean(stock_pctcg))
print('median:', np.median(stock_pctcg))
print('std:', np.std(stock_pctcg))


#2. matplotlib基础
from matplotlib import pyplot as plt
x = np.arange(0, len(stock_pctcg))
y = stock_pctcg

plt.title("stock_price_change")
plt.xlabel('date')
plt.ylabel('daily return')
plt.plot(x,y)
plt.show()


#3. pandas基础
trading_data_2019 = pd.read_csv('2019_trading_data.csv')
target_df = trading_data_2019[['data_date', 'secucode', 'daily_return']]
target_df.head()

#3.1 条件筛选
df1 = target_df[(target_df['data_date'] == '2019-05-17') & (target_df['daily_return'] > 0.1)]

print(df1)



df1.sort_values(by='daily_return', ascending=False)


trading_data_2019.sort_values(by=['data_date', 'mv'], ascending=False)


trading_data_2019.describe()


trading_data_2019.groupby('secucode')['daily_return'].apply(np.std)


#3.2 计算累计收益率
def cum_return(return_d):
    return np.product(return_d + 1)

df2 = trading_data_2019.groupby('secucode')['daily_return'].apply(cum_return)
df2.sort_values()


#3.3 计算指数收益率
k_all = trading_data_2019.groupby('data_date')['daily_return'].apply(np.mean)

k_all.plot(figsize=(19,18))



k_all.hist(bins=50)


#3.4 计算指数累计收益率
((k_all+1).cumprod() * 1000).plot()



trading_data_2019[trading_data_2019.data_date == '2019-05-27'].head(100).plot.scatter(y='turnover', x='free_mv', figsize=(18,19))



ind_name = pd.read_csv('ind_name.csv', dtype={'code':str})

ind_name.head()


trading_data_2019['ind_code'] = trading_data_2019['ind_code'].astype(str)

#3.5 合并dataframe,使用同一个key
pd.merge(trading_data_2019, ind_name.rename(columns={'code': 'ind_code'}), on='ind_code', how='left')

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值