这或许是在计算交易收益的同时,把交易成本也算进去了,过于简化了。我做了一些假设--投资和提取投资的佣金分别为1%和2%。佣金在交易期间不发生变化,在本例中是5个时间步骤。我使用Python代码来进行计算。
给定资产的价格在5个时间步长中的正负百分比变化集为 {0.031% , 0.00121% , 0.0231% , -0.0213% , -0.0121%}
.
进入投资的手续费是投资金额的1%,退出投资的手续费是投资金额现值的2%。
如果我将1欧元投资于该资产,以下说法是否正确?
1.
如果我在$t=5$之前不进行投资交易,最终的投资金额是:$t=5$时的最终变动百分比金额是: 2. 'initial invested amount' + '% change' - 'commission to enter' - 'commission to exit'
,因此。
initial_investment_amt = 1
comission_in_amt = 1
comission_out_amt = 2
price_change = -.0121
return_amt = (initial_investment_amt + (price_change / 100)) - (comission_in_amt / 100) - (comission_out_amt / 100) = 0.97 which represents a loss of 1 - .97 = .03
2.
如果我在每个时间步进行投资交易,直到$t=5$,最终的投资金额是。
initial_investment_amt = 1
comission_in_amt = 1
comission_out_amt = 2
price_change = .031
return_amt_1 = (initial_investment_amt + (price_change / 100)) - (comission_in_amt / 100) - (comission_out_amt / 100)
price_change = .00121
return_amt_2 = (return_amt_1 + (price_change / 100)) - (comission_in_amt / 100) - (comission_out_amt / 100)
price_change = .0231
return_amt_3 = (return_amt_2 + (price_change / 100)) - (comission_in_amt / 100) - (comission_out_amt / 100)
price_change = -.0213
return_amt_4 = (return_amt_3 + (price_change / 100)) - (comission_in_amt / 100) - (comission_out_amt / 100)
price_change = -.0121
return_amt_5 = (return_amt_4 + (price_change / 100)) - (comission_in_amt / 100) - (comission_out_amt / 100)
print(return_amt_1)
print(return_amt_2)
print(return_amt_3)
print(return_amt_4)
print(return_amt_5)
打印:
0.97031
0.9403220999999999
0.9105530999999999
0.8803400999999998
0.8502190999999998
表示损失1-0.85=0.15$。
首先,我不得不尊重您对案例1的结论。
如果我在t=5元之前不进行投资交易,最终的投资金额是:t=5元时的最终变化百分比金额,即 "初始投资金额 "+"变化百分比"-"进入佣金"-"退出佣金"。
的正确公式是 最终值。 我相信,是
((初始投资额-入金佣金)*(1+变动%))-出金佣金。 主要区别在于,进入的佣金投资费是从流通中提取的。之前 可以获得投资回报。这样一来,随着时间的推移,就会有很大的差别。
假设我是正确的,下面是我提出的代码。为了方便参考,我擅自更改了一些术语,但你显然可以根据自己的需要进行更改。
p_changes = [0.03100, 0.00121, 0.02310, 0.02130, -0.01210]
initial_investment_amt = 100 #I used a larger initial investment; otherwise, the fees would have eaten you alive...
invest_fee = 1
sell_fee = 2
def periodic_ret(amount,change,reinv):
if reinv == 0:
if ind + 1 == 1: #for the initial period
forward = (amount-invest_fee)*(1+change)
if ind +1 == len(p_changes): #for the final period
forward = (amount*(1+change))-sell_fee
else:
forward = (amount*(1+change))
else:
forward = (amount-invest_fee)*(1+change)-sell_fee
print(forward)
return forward
for i in range(len(p_changes)):
reinv = 1 #1 if an invest and sell fee are paid each period, or 0, if an invest fee is paid once upfront and sell fee is paid once at the end
if i == 0: #for the initial period
cur = periodic_ret(initial_investment_amt, p_changes[0], reinv)
else:
cur = periodic_ret(cur,p_changes[i], reinv)
输出 (w reinv = 1):
100.06899999999999
97.18887348999998
96.41083646761896
95.44308728437926
91.30032592823827
佣金和价格变化都是以百分比的形式给出的。这意味着在投资后,账户中的金额立即为。
initial_investment_amt*(1-commission_in_amt100)
_amt的后缀或许让人迷惑,但问题中的佣金是以%来表示的。
在第一个投资期过后,账户有金额。
initial_investment_amt*(1-commission_in_amt100)*(1-price_change100)
最后在退出后,客户收到。
initial_investment_amt*(1-commission_in_amt100)(1-价格变化100)(1-commission_out_amt100)
我认为这个模式很清楚,所以你只要插入更多的价格_变化,以延长投资时间,如果你取消投资和再投资,你将有更多的佣金支付。希望这样可以--抱歉没有代码--但这样看起来比较清晰,而且使用了问题符号。