# 台幣單級別ETF用未含申贖的淨資產計算實際申購買回價金、交易費及其他以當日淨資產計算之費用
```python=
#用未含申贖回的淨資產(有含經保費)回推經保費
def Calculatefee(OldNetAsset,Twsefeerate,Indexfeerate,managefeerate, storagefeerate,yeardays):
global Twsefee1 ,Indexfee1,managefee1,storagefee1
Twsefee1 = round(OldNetAsset*Twsefeerate/yeardays,0)
Indexfee1 = round(OldNetAsset*Indexfeerate/yeardays,0)
managefee1 = round(OldNetAsset*managefeerate/yeardays,0)
storagefee1 = round(OldNetAsset*storagefeerate/yeardays,0)
print(Twsefee1 ,Indexfee1,managefee1,storagefee1)
```
```python=
#用未含申贖的淨資產(有含經保費)計算第一次的實際申購買回價金及交易費
def calrealsubdis1(OldNetAsset,preunit,subunit,subtradefeerate,disunit,distradefeerate):
global NewAsset
Nav = OldNetAsset /preunit
baseprice = round(Nav * 500000,0)
realsubprice = baseprice * (subunit/500000)
realdisprice = baseprice * (disunit/500000)
realsubtradefee =round(baseprice*subtradefeerate,0) * (subunit/500000)
realdisteadefee = round(baseprice*distradefeerate,0) * (disunit/500000)
NewAsset = OldNetAsset+realsubprice-realdisprice+realsubtradefee+realdisteadefee
print(NewAsset,realsubprice,realdisprice,realsubtradefee,realdisteadefee,Nav,(preunit+subunit-disunit))
return NewAsset,realsubprice,realdisprice,realsubtradefee,realdisteadefee
```
```python=
#計算費用(因為要用當日淨資產計算,但當日淨資產尚未出來,所以用逼近的方式計算)
def Accfee(NewAsset,OldNetAsset,Twsefee1,Indexfee1,managefee1, storagefee1,yeardays,Twsefeerate,Indexfeerate,managefeerate, storagefeerate):
NewAsset2 = NewAsset
for i in range(1,5):
Twsefee2 = NewAsset2*Twsefeerate/yeardays
Indexfee2 = NewAsset2*Indexfeerate/yeardays
managefee2 = NewAsset2*managefeerate/yeardays
storagefee2 = NewAsset2*storagefeerate/yeardays
NewAsset2 = NewAsset + Twsefee1 + Indexfee1+managefee1+storagefee1- Twsefee2-Indexfee2-managefee2-storagefee2
NewAsset = NewAsset2
Twsefee2 = round(Twsefee2,0)
Indexfee2 = round(Indexfee2,0)
managefee2 = round(managefee2,0)
storagefee2 = round(storagefee2,0)
print(Twsefee2 ,Indexfee2,managefee2,storagefee2,NewAsset2)
```
```python=
#因實際申購買回價金交易費及費用都有用當日淨資產計算,故要合併一起算
def calrealsubdisandfee3(OldNetAsset,NewAsset,preunit,subunit,subtradefeerate,disunit,distradefeerate):
for i in range(1,15):
Nav = NewAsset /(preunit+subunit-disunit)
baseprice = round(Nav * 500000,0)
realsubprice = baseprice * (subunit/500000)
realdisprice = baseprice * (disunit/500000)
realsubtradefee =round(baseprice*subtradefeerate,0) * (subunit/500000)
realdisteadefee = round(baseprice*distradefeerate,0) * (disunit/500000)
NewAsset = OldNetAsset+realsubprice-realdisprice+realsubtradefee+realdisteadefee #含申贖淨資產
print(NewAsset)
Accfee(NewAsset,OldNetAsset,Twsefee1,Indexfee1,managefee1, storagefee1,yeardays,Twsefeerate,Indexfeerate,managefeerate, storagefeerate)
print(NewAsset,realsubprice,realdisprice,realsubtradefee,realdisteadefee,Nav,(preunit+subunit-disunit))
```
## 以下為案例
```python=
OldNetAsset = 1999863606 #未含申贖的淨資產(有含經保費)
preunit = 200000000 # 前日在外發行單位數
subunit = 4000000 #當日申購單位數
subtradefeerate= 0.001 #申購交易費綠
disunit = 0 #當日贖回單位數
distradefeerate = 0.004 #贖回交易費
Twsefeerate = 0.01 #上市櫃費費率
Indexfeerate = 0.0004 #指數授權費費率
managefeerate = 0.0015 #經理費率
storagefeerate = 0.0035 #保管費率
yeardays = 365 #年天數
global NewAsset
```
```python=
#計算最開始的費用
Calculatefee(OldNetAsset,Twsefeerate,Indexfeerate,managefeerate, storagefeerate,yeardays)
#計算第一次實際價金跟含申贖淨資產
calrealsubdis1(OldNetAsset,preunit,subunit,subtradefeerate,disunit,distradefeerate)
print(NewAsset)
calrealsubdisandfee3(OldNetAsset,NewAsset,preunit,subunit,subtradefeerate,disunit,distradefeerate)
```
<font size = 5 >**以下為最終結果:**</font>
當日淨資產:2039901678
實際申購價金:39998072.0
實際交易費:40000.0
上市櫃費:55888.0
指數授權費:2236.0
經理費:8383.0
保管費:19561.0
<font size = 5 >**驗證方式:**</font>
以最終淨資產回推實際申購價金或是費用,計算結果會等於最後結果
EX:實際申購價金 = Round(當日淨資產/在外發行單位數*500,000,0)*(申購單位數/500,000) <br>=Reound(2039901678/204000000*500000,0)*(4,000,000/500,000)<br>= 39998072
EX2:經理費 = round(當日淨資產*經理費費率/365,0)<br>=round(2039901678*0.0015/365)<br>=8383