This is what I have so far. Not a bad start, but there are some issues I need to resolve.
https://tos.mx/id4OV5H
# # Sources:
#
https://siblisresearch.com/data/us-sector-weightings/
#
https://seekingalpha.com/etfs-and-funds/etf-tables/sectors
# debug
def transpose = .05;
def SectorCount = 11;
def NewDay = secondsFromTime(0930) < secondsFromTime(0930)[1];
def InformationTechnology = 27.63; #XLK
def HealthCare = 13.25; #XLV
def ConsumerDiscretionary = 12.36; #XLY
def Financials = 11.39; #XLF
def Communications = 11.29; #XLC
def Industrials = 8.04; #XLI
def ConsumerStaples = 5.77; #XLP
def Energy = 2.75; #XLE
def RealEstate = 2.58; #XLRE
def Materials = 2.48; #XLB
def Utilities = 2.46; #XLU
def xlkWeight = InformationTechnology;
def xlvWeight = HealthCare;
def xlyWeight = ConsumerDiscretionary;
def xlfWeight = Financials;
def xlcWeight = Communications;
def xliWeight = Industrials;
def xlpWeight = ConsumerStaples;
def xleWeight = Energy;
def xlreWeight = RealEstate;
def xlbWeight = Materials;
def xluWeight = Utilities;
def xlk = close("XLK");
def xlv = close("XLV");
def xly = close("XLY");
def xlf = close("XLF");
def xlc = close("XLC");
def xli = close("XLI");
def xlp = close("XLP");
def xle = close("XLE");
def xlre = close("XLRE");
def xlb = close("XLB");
def xlu = close("XLU");
def xlkChangePercent = (xlk - xlk[1]) / xlk[1];
def xlvChangePercent = (xlv - xlv[1]) / xlv[1];
def xlyChangePercent = (xly - xly[1]) / xly[1];
def xlfChangePercent = (xlf - xlf[1]) / xlf[1];
def xlcChangePercent = (xlc - xlc[1]) / xlc[1];
def xliChangePercent = (xli - xli[1]) / xli[1];
def xlpChangePercent = (xlp - xlp[1]) / xlp[1];
def xleChangePercent = (xle - xle[1]) / xle[1];
def xlreChangePercent = (xlre - xlre[1]) / xlre[1];
def xlbChangePercent = (xlb - xlb[1]) / xlb[1];
def xluChangePercent = (xlu - xlu[1]) / xlu[1];
def xlkSizing = xlkChangePercent * xlkWeight;
def xlvSizing = xlvChangePercent * xlvWeight;
def xlySizing = xlyChangePercent * xlyWeight;
def xlfSizing = xlfChangePercent * xlfWeight;
def xlcSizing = xlcChangePercent * xlcWeight;
def xliSizing = xliChangePercent * xliWeight;
def xlpSizing = xlpChangePercent * xlpWeight;
def xleSizing = xleChangePercent * xleWeight;
def xlreSizing = xlreChangePercent * xlreWeight;
def xlbSizing = xlbChangePercent * xlbWeight;
def xluSizing = xluChangePercent * xluWeight;
def combinedSizing = ((
xlkSizing +
xlvSizing +
xlySizing +
xlfSizing +
xlcSizing +
xliSizing +
xlpSizing +
xleSizing +
xlreSizing +
xlbSizing +
xluSizing
) / SectorCount);
def cumuCombinedSizing = if newday then combinedSizing else cumuCombinedSizing[1] + combinedSizing;
# Display
AddLabel(yes, "InfoTech " + AsPercent(xlkSizing), if xlkSizing > 0 then color.GREEN else color.RED);
plot zeroLine = 0;
zeroLine.AssignValueColor(color.WHITE);
plot cumuSectorWeightAD = cumuCombinedSizing + transpose;
cumuSectorWeightAD.AssignValueColor(if cumuSectorWeightAD > cumuSectorWeightAD[1] then color.MAGENTA else color.YELLOW);
cumuSectorWeightAD.SetPaintingStrategy(PaintingStrategy.HISTOGRAM);