Skip to content
This repository was archived by the owner on Feb 10, 2026. It is now read-only.

Commit e90a16a

Browse files
author
arylkou
committed
NOVA-689: fix funds calculation
1 parent 68e2360 commit e90a16a

3 files changed

Lines changed: 37 additions & 6 deletions

File tree

links/common.pine.link

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -700,4 +700,7 @@ plot(C_BlackMarubozu[1] and C_WhiteMarubozu and high[1] < low ? 1 : 0, title='Ca
700700
plot(C_WhiteMarubozu[1] and C_BlackMarubozu and low[1] > high ? 1 : 0, title='Candle.Kicking.Bearish')
701701

702702
// study(title="VWAP", shorttitle="VWAP", overlay=true)
703-
plot(ta.vwap(hlc3), title='VWAP')
703+
plot(ta.vwap(hlc3), title='VWAP')
704+
705+
canGetDataFromSec(bool isLastBarSecSer, int dayofmonthSecSer) =>
706+
not isLastBarSecSer or dayofmonth <= dayofmonthSecSer

links/etf.pine.link

Lines changed: 29 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -48,8 +48,16 @@ fundPerfYTD() =>
4848

4949
perf
5050

51+
// fund_flows.<1M|3M|YTD|1Y|3Y|5Y>
52+
fundFlows(finTicker) =>
53+
[fund_flows1M, fund_flows3M, fund_flows1Y, fund_flows3Y, fund_flows5Y, fund_flowsYTD, dm, b_s] = request.security(finTicker, fundTF, [sum(month1), sum(month3), sum(years1), sum(years3), sum(years5), sumYTD(), dayofmonth, barstate.islast], lookahead = barmerge.lookahead_on, ignore_invalid_symbol=true)
54+
if canGetDataFromSec(b_s, dm)
55+
[fund_flows1M, fund_flows3M, fund_flows1Y, fund_flows3Y, fund_flows5Y, fund_flowsYTD]
56+
else
57+
[na, na, na, na, na, na]
58+
5159
fundFlowsTicker = __financial_tickerid(syminfo.tickerid, "FUND_FLOWS", "D")
52-
[fund_flows1M, fund_flows3M, fund_flows1Y, fund_flows3Y, fund_flows5Y, fund_flowsYTD] = request.security(fundFlowsTicker, fundTF, [sum(month1), sum(month3), sum(years1), sum(years3), sum(years5), sumYTD()], ignore_invalid_symbol=true, gaps=barmerge.gaps_off)
60+
[fund_flows1M, fund_flows3M, fund_flows1Y, fund_flows3Y, fund_flows5Y, fund_flowsYTD] = fundFlows(fundFlowsTicker)
5361

5462
plot(fund_flows1M, title="fund_flows.1M")
5563
plot(fund_flows3M, title="fund_flows.3M")
@@ -58,8 +66,16 @@ plot(fund_flows3Y, title="fund_flows.3Y")
5866
plot(fund_flows5Y, title="fund_flows.5Y")
5967
plot(fund_flowsYTD, title="fund_flows.YTD")
6068

69+
// nav_perf.<1M|3M|YTD|1Y|3Y|5Y>
70+
fundPerfs(finTicker) =>
71+
[m1, m2, y1, y3, y5, ytd, dm, b_s] = request.security(finTicker, fundTF, [fundPerf(month1), fundPerf(month3), fundPerf(years1), fundPerf(years3), fundPerf(years5), fundPerfYTD(), dayofmonth, barstate.islast], lookahead = barmerge.lookahead_on, ignore_invalid_symbol=true)
72+
if canGetDataFromSec(b_s, dm)
73+
[m1, m2, y1, y3, y5, ytd]
74+
else
75+
[na, na, na, na, na, na]
76+
6177
navTicker = __financial_tickerid(syminfo.tickerid, "NAV", "D")
62-
[navPerf1M, navPerf3M, navPerf1Y, navPerf3Y, navPerf5Y, navPerfYTD] = request.security(navTicker, fundTF, [fundPerf(month1), fundPerf(month3), fundPerf(years1), fundPerf(years3), fundPerf(years5), fundPerfYTD()], ignore_invalid_symbol=true, gaps=barmerge.gaps_off)
78+
[navPerf1M, navPerf3M, navPerf1Y, navPerf3Y, navPerf5Y, navPerfYTD] = fundPerfs(navTicker)
6379

6480
plot(navPerf1M, title="nav_perf.1M")
6581
plot(navPerf3M, title="nav_perf.3M")
@@ -68,8 +84,9 @@ plot(navPerf3Y, title="nav_perf.3Y")
6884
plot(navPerf5Y, title="nav_perf.5Y")
6985
plot(navPerfYTD, title="nav_perf.YTD")
7086

87+
// aum_perf.<1M|3M|YTD|1Y|3Y|5Y>
7188
aumTicker = __financial_tickerid(syminfo.tickerid, "AUM", "D")
72-
[aumPerf1M, aumPerf3M, aumPerf1Y, aumPerf3Y, aumPerf5Y, aumPerfYTD] = request.security(aumTicker, fundTF, [fundPerf(month1), fundPerf(month3), fundPerf(years1), fundPerf(years3), fundPerf(years5), fundPerfYTD()], ignore_invalid_symbol=true, gaps=barmerge.gaps_off)
89+
[aumPerf1M, aumPerf3M, aumPerf1Y, aumPerf3Y, aumPerf5Y, aumPerfYTD] = fundPerfs(aumTicker)
7390

7491
plot(aumPerf1M, title="aum_perf.1M")
7592
plot(aumPerf3M, title="aum_perf.3M")
@@ -78,8 +95,16 @@ plot(aumPerf3Y, title="aum_perf.3Y")
7895
plot(aumPerf5Y, title="aum_perf.5Y")
7996
plot(aumPerfYTD, title="aum_perf.YTD")
8097

98+
// nav_total_return.<1M|3M|6M|YTD|1Y|3Y|5Y>
99+
navTotalReturns(finTicker) =>
100+
[navTotalReturn1M, navTotalReturn3M, navTotalReturn6M, navTotalReturn1Y, navTotalReturn3Y, navTotalReturn5Y, navTotalReturnYTD, dm, b_s] = request.security(finTicker, fundTF, [fundPerf(month1), fundPerf(month3), fundPerf(month6), fundPerf(years1), fundPerf(years3), fundPerf(years5), fundPerfYTD(), dayofmonth, barstate.islast], lookahead = barmerge.lookahead_on, ignore_invalid_symbol=true)
101+
if canGetDataFromSec(b_s, dm)
102+
[navTotalReturn1M, navTotalReturn3M, navTotalReturn6M, navTotalReturn1Y, navTotalReturn3Y, navTotalReturn5Y, navTotalReturnYTD]
103+
else
104+
[na, na, na, na, na, na, na]
105+
81106
navAllTicker = __financial_tickerid(syminfo.tickerid, "NAV_ALL", "D")
82-
[navTotalReturn1M, navTotalReturn3M, navTotalReturn6M, navTotalReturn1Y, navTotalReturn3Y, navTotalReturn5Y, navTotalReturnYTD] = request.security(navAllTicker, fundTF, [fundPerf(month1), fundPerf(month3), fundPerf(month6), fundPerf(years1), fundPerf(years3), fundPerf(years5), fundPerfYTD()], ignore_invalid_symbol=true, gaps=barmerge.gaps_off)
107+
[navTotalReturn1M, navTotalReturn3M, navTotalReturn6M, navTotalReturn1Y, navTotalReturn3Y, navTotalReturn5Y, navTotalReturnYTD] = navTotalReturns(navAllTicker)
83108

84109
plot(navTotalReturn1M, title="nav_total_return.1M")
85110
plot(navTotalReturn3M, title="nav_total_return.3M")

links/nav_discount_premium.link

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,11 @@
22
symbolName = input.symbol("", title = "Symbol", confirm = false, __optional = true)
33
getSymbolName(symbol) => symbol == "" ? syminfo.tickerid : symbol
44
makeTicker(fund, symbol = "") => __financial_tickerid(getSymbolName(symbol), fund, "")
5+
getNAV(finTicker) =>
6+
[s, dm, b_s] = request.security(finTicker, "D", [close, dayofmonth, barstate.islast], lookahead = barmerge.lookahead_on, ignore_invalid_symbol=true)
7+
canGetDataFromSec(b_s, dm) ? s : na
58
var finTicker = __financial_tickerid(getSymbolName(symbolName), "NAV", "D")
6-
nav = request.security(finTicker, "D", close, ignore_invalid_symbol=true, gaps=barmerge.gaps_on)
9+
nav = getNAV(finTicker)
710
var float nav_discount_premium = na
811
if not na(nav)
912
nav_discount_premium := ((close / nav) - 1) * 100

0 commit comments

Comments
 (0)