计算筹码为什么是负数?

策略分享
标签: #<Tag:0x00007fb12b67a618>

(z652896169) #1
克隆策略
In [2]:
instruments = ['603738.SHA']
#这里尽量包含从上市日期开始到最后的数据
df = D.history_data(instruments, start_date='2019-1-2', end_date='2019-7-30',
fields=['open','close','adjust_factor','turn','volume']) #获取历史数据
df['real_close']=df['close']/df['adjust_factor']#获取真实收盘价
df['real_open']=df['open']/df['adjust_factor']#获取真实开盘价
df['turn']=df['turn']/100#获取换手率
df['avg_price']=np.round(df['real_close']+df['real_open'])/5#计算每日平均成本,这里按照0.5元一个价位做分析
df=df.sort_values(by='date',ascending=False).reset_index(drop=True)#日期按降序排列
df['turn_tomo']=df['turn'].shift(1) #计算明日的换手率
df['remain_day']=1-df['turn_tomo'] #计算当日的剩余筹码比例
#假设N日后,上市第一天的剩余筹码比率就是每日剩余比例的累乘即:剩余筹码比例=(1-明天换手率)*(1-后日换手率)*...*(1-最新日换手率),以此类推各日的剩余筹码
df['remain_his']=df['remain_day'].cumprod()*df['turn'] 
df['remain_his']=df['remain_his'].fillna(df['turn'])#最新一日的筹码就是当日的换手率
#df.to_csv('002199.csv')
#df
#关键统计,统计最后一天的各价位历史筹码堆积量(百分比)
ss=df.groupby('avg_price')[['remain_his']].sum().rename(columns={'remain_his':('筹码量',df.date[0])})
ss.head(100)
Out[2]:
筹码量
2019-07-29
avg_price
4.8 5.181208e-10
5.0 7.177282e-08
5.2 1.498948e-07
5.4 1.898273e-07
5.6 1.252751e-06
5.8 1.755525e-06
6.0 3.713453e-08
6.2 9.562353e-06
6.4 3.503642e-06
6.6 3.229113e-05
6.8 4.825901e-05
7.0 1.113026e-05
7.2 3.853285e-08
7.4 2.661811e-02
7.6 1.343051e-01
7.8 1.532988e-01
8.0 6.283134e-01
8.2 2.357160e-02
8.4 2.122369e-03
8.6 1.846898e-02
8.8 1.175701e-02
9.4 1.454383e-04
10.0 8.964883e-05
11.4 1.201300e-03

经常会遇到一些股票筹码计算出来是负数之类,
如果开始时间缩短到一定程度, 也可能会变正常.
另外, 想把列表的几个股票, 计算他们最近10天的筹码变化情况保存到excel, 可以帮忙实现一下吗
万分感谢!
@iQuant


(iQuant) #2

好的 我们来看下哈


(达达) #3

是从股票上市日期开始的么?有例子么?
多只股票可以循环计算 然后merge,但是不同股票的价位分布不同,分布最好每只股票单独处理。
你可以考虑把不同股票每日的获利比例这个指标拼接在一起。


(z652896169) #4

image
上面这个计算出来就不对啊,5.181208e-10 都是一些指数表示? 都看不懂具体是多少, 正常应该都是0.几才对?

就是每个股票对应一个excel的sheet, 或者每个股票的数据自动生成一张表格都可以.


(达达) #5

随着时间的推移 有的价位的上的筹码就会很少,指数的科学记数法表示 某些边缘的价位接近于0很正常


(yangziriver) #6

请教一个问题,关于一天股价的平均值,策略代码是
image
如果改成
df[‘avg_price’]=np.round(df[‘real_amount’]+df[‘real_volume’])
是不是更准确一些?


(达达) #7

这个只是给价格进行分档处理,是因为连续的价格计算量太大,需要模糊处理一下。