Yield to maturity / IRR in Power Query M - excel

Do you have any ideas about how to calculate YTM / IRR in Microsoft Power Query?
For instance, I have a variable called Table and it contains data
Date Payment
2020-01-01 -1000
2020-02-01 300
2020-03-01 800
and I would like to call some scalar function, which calculates YTM.

Seems like now the only way is to solve this equation yourself. I've found code in this blog post. I have a laptop with Win 10, Excel 2016, i3-6100 2.3GHz, 4 ram. It takes 0.10 sec to calculate for deal with 10 payments.

Related

EXCEL PERCENTILE result is wrong compared to a textbook?

I am helping my son with his math homework, specifically statistics and this is the dataset:
1 2 3 4 5 6 7 8 9 10
I have 10 numbers from 1 to 10.
15 percentile:
in Excel I use the PERCENTILE or PERCENTILE.INC function with .15 and the result is 2.35, why?
The book way. .15*10 = 1.5 th number. There is not 1.5 number so round up to 2 or 2.
20 percentile:
In excel I get 2.8.
Book version: .2*10 = 2 (exact) so take average of 2nd and 3rd value for 2.5
50 percentile or median:
In excel I get 5.5.
Book version .5*10 = 5 (exact) so take average of 5th and 6th value for 5.5 (only match)
75 percentile 7.75:
Book, .75*10 * 7.5 so round up to 8.
Excel
80 percentile:
Excel I get 8.2
Book, .8108, average of 8 and 9 is 8.5.
Obviously Excel is doing more advanced math and additional smoothing, however I have not been able to find the exact math it uses replicate it, hence I will say it is wrong. Other programs and statistical packages match Excel so it is correct, but not useful as I need it.
How can I get Excel to give me the Book version of answers or at least replicate the Excel answers with paper and a basic calculator.
Most importantly I need to find a way to explain to my son that it is OK that the results don't match that he should do it the book way, at least for now or in school.
EDIT: After posting, SO found and similar question: Different results for percentiles in SAS and Excel It seems SAS gives the same results as the book version. The answer there is that Excel and most packages use different interpolation methods. However I need a better explanation for my son and maybe a way to create a proper percentile function for my son, but hopefully without VBA.

Excel Graph for Time Duration to show continuity

I would need to create a continuous line graph from Excel VBA to show the values even if the duration between two time pointers is large. e.g. in the given data, I had 8 users working in the system continuously from 2nd minute till 8th minute when all the users stopped working.
Here is the same data that I have -
Time Users
00:00 4
00:16 6
00:32 8
01:20 7
08:16 0
08:32 0
My expectation is to plot the graph like this :
however I am able to plot the graphs like the other one:
Can some one help how can I achieve the expected graph in excel? If you can provide any VBA code snippet as well, it will help.

Finding stabilizing average of agent-based model runs

So I ran about 200 agent-based model runs and I want to see how the average is changing over time.
For example if we have 10 points
2 4 2 8 6 5 9 8 1 3
I want to calculate the average as the number of points changes
(2+4)/ 2 = 3
now for the next point it will be (3+2)/2 = 2.5
so I can plot each average and see after how many runs does the average stabilize. Something like this image < https://imgur.com/a/VXeeuxy > Can someone provide an equation or method?
Thank you
I think you just want a 'cumulative average' of 1,2..n points. You can do this in a single formula if you don't mind using offset:
In most versions of Excel (F1):
=SUBTOTAL(1,OFFSET(B23,0,0,1,COLUMN(B23:K23)-COLUMN(A23)))
In Excel 365 only (F2):
=SUBTOTAL(1,OFFSET(B23,0,0,1,SEQUENCE(1,COLUMNS(B23:K23))))
Or a more dynamic version that works for a whole row (F3):
=SUBTOTAL(1,OFFSET(B23,0,0,1,COLUMN(A1:INDEX(1:1,COUNT(23:23)))))
and (F4)
=SUBTOTAL(1,OFFSET(B23,0,0,1,SEQUENCE(1,COUNT(23:23))))

Calculated field totals not correct in PowerPivot

I have a basic data set with a ton of slicers that roughly looks like this:
Hours SpreadPerHr Spread
5.00 5.00 25.00
10.00 2.00 20.00
8.00 10.00 80.00
Where Spread is a calculated value where Spread = Hours*SpreadPerHour. The problem is, the totals for these columns follow this formula too, so it looks like this:
Hours SpreadPerHr Spread
5.00 5.00 25.00
10.00 2.00 20.00
8.00 10.00 80.00
Total: 23.00 17.00 391.00
And while the hours total up just fine, SpreadPerHour is dynamic and so Spread is as well. It is incorrect to say Total Spread = Total Hours * Total SpreadPerHour. Totals should be:
Total: 23.00 17.00 125.00
Is there a way I can make excel leave totals for Hours as-is, but sum the column for Spread instead of multiplying totals?
Here is what I think you have in your Power Pivot Model:
You have a calculated measure for Spread, which I have labeled SpreadCalc1. The problem with this is that it does the aggregation before it does the multiplication. You need this operation to be done on a row-by-row basis and then aggregated. So instead of a calculated measure, you need to create a calculated column and then sum that column.
The column I have labeled as SpreadCalc has the formula =[Hours] * [SpreadPerHr].
The calculated measure I called Spread is just Sum([SpreadCalc]). You can see there that the total is 125 as desired instead of 391.
I know this might be a bit redundant now, but I would suggest a slightly different approach.
Adding calculated columns in "small" tables is fine, but it can cause serious performance issues with large databases.
So to solve your problem, I believe the "correct" way is to use SUMX function.
It calculates the expression specifically for each row, which is exactly what you need. And it is smart as far as performance goes (no need to add calculated columns or perform any source-data manipulations).
If you use this formula (correct the name of the table / measures), you should get the desired results:
SUMX(YourTable, [Sum Hour] * [Sum SpreadPerHr])

Analyzing how noisy a data set using Excel

I have a set of data that has over 15,000 records in Excel that is from a measurement tool that finds trends over a large areas. I'm not interested in looking for trends within the data as whole but rather over the data closest to each other to get a sense of how noisy (variation with neighboring records). Almost like I want to know the average standard deviation of looking at the 15,000 or so records only at 20 records at a time. The hope is the data values trend gradually rather than sudden changes from record to record and thus looks noisy. If I add a Chart and use the "Moving Average" Trendline it kind of visually shows how noisy the data looks across the 15,000 + records. However, I was hoping to get a numeric value to rate how noisy the data is vs. other datasets. Any ideas on what I could do here with formula's built-in Excel or by adding some add-in? Let me know if I need to explain this any better.
Could you calculate your moving average for your 20 sample window, then use the difference between each point and the expected value to calculate a variance?
Hard to do tables here, but here is a sample of what I mean
Actual Measured Expected Variance
5 5.44 4.49 0.91
6 4.34 5.84 2.26
7 8.45 7.07 1.90
8 6.18 7.84 2.75
9 8.89 9.10 0.04
10 11.98 10.01 3.89
The "measured" values were determined as
measured = actual + (rand() - 0.5) * 4
The "expected" values were calculated from a moving average (the table was pulled from the middle of the data set).
The variance is simply the square of expected minus measured.
Then you could calculate an average variance as a summary statistic.
Moving average is the correct, but you need a critical element - order. Do you date/time variable or a sequence number?
Use the OFFSET function to setup your window. If you want 20, your formula will look something like AVERAGE(OFFSET(C15,-10,0,21)). This is your moving average.
Relate that to C15, whether additive or multiplicative, you'll have your distance. All we need now is your tolerance.

Resources