Comments (9)
@refraction-ray
我写了代码试过,这样算出来和支付宝上的持有成本是一样的。您在xalpha中实现的持有成本计算方法会导致经常成本就变为了负值,在画 “持仓成本折线图” 的时候经常会出现非常大的突变,导致 “持仓成本” 和 “基金净值” 这两者因为坐标轴的比例不一致没法很好的显示在一张图上。
比如下图就没有办法正常显示:
from xalpha.
我不太确定支付宝是怎么计算的,xalpha 的话最准的还是用 xirr 直接计算年化收益率。事实上没有一个可以定义的收益率指标,因为分子分母没办法定义,特别是在不断申购赎回的情况下。这也是为什么大多数金融 app 显示的持有收益率可能很奇怪的原因。 xalpha 收益率分子是全部盈利,分母是历史最大占用,这只是可能的收益率定义之一了。但收益率年化由于可以用 xirr,是具有良好定义的。也就是说,收益,收益率,收益率年化三个指标中,收益率其实没有定义,是一个伪概念。但用户都很喜欢用这个概念,因此就能看到不同 app 给出的持有收益率的乱象。我最初写 xalpha 的目的,就是先算清楚自己操作的收益率年化,那些 app 的收益数据,持仓成本之类的大多不怎么靠谱。
from xalpha.
哦,哦,明白,谢谢!
from xalpha.
对了,我在问一下,支付宝里面的持仓成本怎么计算知道吗?还是答案是和上述一样?谢谢!
from xalpha.
持仓成本根据我的经验也是和 xalpha 不一样的。xalpha 的处理是把利润全部扣除算的成本,也就是说只有标的价格跌到你的持仓成本,你就恰好不赚不亏(时间损失和成本不考虑)。感觉上支付宝的持仓成本好像是你买入价格的平均,卖出是不影响成本的。也就是 xalpha 持仓成本:(买入总额-卖出总额)/ 现在持有份额,支付宝持仓成本:买入总额/当时买入份额。
from xalpha.
支付宝的持仓成本其实并不是 “买入总额/当时买入份额”,而且持仓成本会受到卖出份额的影响。
举个例子:
净值:1 元,买入:100 元,份额:100 份,成本:100/100 = 1元。持有份额:100 份。
净值:1.5 元,卖出:100 份。持有份额:0 份
净值:2 元,买入 :100 元,份额:50 份,成本 :100/50 = 2 元,并不是 (100+100)/(100+50) = 1.33 元。
from xalpha.
@onion1003 感谢回复。不知道您举的例子是有实际验证还是支付宝哪里阐述了他们的计算方法。不过按您的描述也是没啥问题的。相当于第二次的卖出操作已经把这个标的清仓了。之后的买入计算就和历史完全无关了,很多券商软件也是这么算的。虽然我不太喜欢这种算法,xalpha 实现的则是永远考虑历史交易数据,即使中间清仓过。
from xalpha.
@onion1003 , 我没太懂上边这个例子里,为啥现在的算法会有 1000 多的成本值,有负数的成本我是清楚的,也符合我想表达的预期。但是这个 1000 多的成本是什么原因呢,是因为亏损的状态卖出了极大部分份额导致的情况吗?
xalpha 这种卖出(非清仓)操作会影响成本计算的方法,可能确实波动会比较大,有可能的话我们也可以在代码里考虑实现多种成本计算方案,就像你上边展示的这样。
from xalpha.
@refraction-ray 1000多成本的出现,确实是像你说的这种情况。我把账单贴在这里,可以用来复现。
date,720001
20181225,500
20190118,-342.42
20190225,1000
20190329,-518.43
20190506,2000
20190725,-651.47
20190731,-260.59
20190803,-250
20190822,1000
20190822,1000
20190905,-454
20191009,250
20191014,250
20191021,100
20191112,300
20191126,200
20200203,500
20200204,300
20200227,1000
20200228,1000
20200317,500
20200603,-396.85
20200612,-595.27
20200716,-297.63
20210210,-60
支付宝的持仓成本计算方法,我也贴在这里啦。
def calculate_today_unitcost(df):
cash = df['cash'].values
share = df['share'].values
unitcost = [None for i in range(len(cash))]
for i, (c, s) in enumerate(zip(cash, share)):
if i == 0:
unitcost[i] = -cash[i]/share[i]
else:
previous_holding_share = df.iloc[:i,:]['share'].sum()
holding_share = df.iloc[:i+1,:]['share'].sum()
if share[i] < 0:
unitcost[i] = unitcost[i-1]
else:
unitcost[i] = round((previous_holding_share*unitcost[i-1]-cash[i])/holding_share,4)
df['unitcost'] = unitcost
return df
from xalpha.
Related Issues (20)
- 场内分红问题 HOT 1
- 期待解锁宏观数据 from ycharts HOT 1
- ycharts 数据拉取错误 HOT 3
- 可以回测基于策略的基金买入卖出收益吗 HOT 1
- 增量更新分拆信息解析出错 HOT 1
- 测试”技术指标交叉类“时报错 HOT 1
- 使用多进程时报错 HOT 1
- xa.indexinfo接口无法使用 HOT 3
- indicator_cross中start日期问题 HOT 1
- 计算基金收益报错
- pandas更新之后dataframe没有append了 HOT 2
- the pinning pyecharts version doesn't support python3.10+
- sqlalchemy >= 2 报错 HOT 2
- [Warning] RCE in xalpha v0.11.4 ~ v0.11.8 HOT 4
- 请问作者怎么通过基金交易单申赎基金呀 HOT 1
- VInfo失效。
- 添加米筐数据源支持。
- 数据错误。 HOT 1
- indexinfo报错 HOT 1
- 这个问题是2023年年末提出的,请问当前数据源是否是正常运行的,包含最近三年的及时数据 HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from xalpha.