@sheetxl/formulas-extended 0.8.0-beta.2 → 0.8.0-beta.20
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE.md +8 -7
- package/{node/esm/Bil0YAk5yZiRX2y1.mjs → browser/esm/0LKt1F7AnRfEXxbK.mjs} +2 -2
- package/{node/esm/_cE9OKmzmk6MyRKQ.mjs → browser/esm/4bulgxh16JqnfEjO.mjs} +2 -2
- package/browser/esm/{vMGzN0Xt0WnzZiH5.mjs → B5rFKoJdTjM5HiLu.mjs} +2 -2
- package/browser/esm/{C6Qt3r7mhw1LR02X.mjs → B65Fl_ODWk5DhphA.mjs} +2 -2
- package/browser/esm/{BxTcfN8h_FE-sbSK.mjs → B8a1BFXm2VsHgyQq.mjs} +2 -2
- package/{node/esm/YWvMccjlBVoxmNN_.mjs → browser/esm/Bg-KMfp_tknDU9AY.mjs} +2 -2
- package/browser/esm/BhIerDPFbQ2cl8O8.mjs +2420 -0
- package/browser/esm/{B819DNjPdbTwz9F1.mjs → C5aDvtCf3vGDT-Oc.mjs} +2 -2
- package/{node/esm/CntAjIR6qmdYZXg0.mjs → browser/esm/CDkEGV4QIvwNE89j.mjs} +2 -2
- package/{node/esm/BtB39tHAccv8ITPI.mjs → browser/esm/CJ4VvyVbI6U1trA3.mjs} +2 -2
- package/{node/esm/CBsy5mA5btmVkbzR.mjs → browser/esm/CK6sGsw35nrimVEq.mjs} +2 -2
- package/{node/esm/r21pRf-kqnnAD611.mjs → browser/esm/CKystBDdgzpnJJBN.mjs} +2 -2
- package/{node/esm/CpVnCV52v4qSBk79.mjs → browser/esm/CNqtsX7ahJAwcfNO.mjs} +2 -2
- package/browser/esm/{RHxlSf1j-K7Bdtwt.mjs → CQBFgGsgDYYh28U0.mjs} +2 -2
- package/browser/esm/{CIHlNxbWDUWI5fd8.mjs → CgoAHCxP_lYgcomg.mjs} +2 -2
- package/browser/esm/CuA5HDcX0Po0FPVP.mjs +20 -0
- package/browser/esm/CwGos8unpmJRL332.mjs +23 -0
- package/browser/esm/{v2vXc6oQz1MG0L1T.mjs → D6EAmJysfmV2SDWN.mjs} +2 -2
- package/{node/esm/Bsu4BOOlbAHpAp8R.mjs → browser/esm/DI4GkF1aprSO3xJA.mjs} +2 -2
- package/{node/esm/Dov9_ZXeOSh41yWn.mjs → browser/esm/DM-XF-bs0vhdn_DV.mjs} +2 -2
- package/browser/esm/{BPDTXAH_YiFBVS9b.mjs → V7-Quzl7KPnOZGOn.mjs} +2 -2
- package/browser/esm/{D62u7Lj1Nd9ZM4Rp.mjs → YTmdtKovJGREqfKj.mjs} +2 -2
- package/browser/esm/declarations.mjs +95 -0
- package/browser/esm/index.mjs +1727 -3684
- package/{browser/esm/Bil0YAk5yZiRX2y1.mjs → node/esm/0LKt1F7AnRfEXxbK.mjs} +2 -2
- package/{browser/esm/_cE9OKmzmk6MyRKQ.mjs → node/esm/4bulgxh16JqnfEjO.mjs} +2 -2
- package/node/esm/{vMGzN0Xt0WnzZiH5.mjs → B5rFKoJdTjM5HiLu.mjs} +2 -2
- package/node/esm/{BxTcfN8h_FE-sbSK.mjs → B8a1BFXm2VsHgyQq.mjs} +2 -2
- package/{browser/esm/YWvMccjlBVoxmNN_.mjs → node/esm/Bg-KMfp_tknDU9AY.mjs} +2 -2
- package/node/esm/{B819DNjPdbTwz9F1.mjs → C5aDvtCf3vGDT-Oc.mjs} +2 -2
- package/{browser/esm/CntAjIR6qmdYZXg0.mjs → node/esm/CDkEGV4QIvwNE89j.mjs} +2 -2
- package/{browser/esm/BtB39tHAccv8ITPI.mjs → node/esm/CJ4VvyVbI6U1trA3.mjs} +2 -2
- package/{browser/esm/CBsy5mA5btmVkbzR.mjs → node/esm/CK6sGsw35nrimVEq.mjs} +2 -2
- package/{browser/esm/r21pRf-kqnnAD611.mjs → node/esm/CKystBDdgzpnJJBN.mjs} +2 -2
- package/{browser/esm/CpVnCV52v4qSBk79.mjs → node/esm/CNqtsX7ahJAwcfNO.mjs} +2 -2
- package/node/esm/{CIHlNxbWDUWI5fd8.mjs → CgoAHCxP_lYgcomg.mjs} +2 -2
- package/node/esm/CuA5HDcX0Po0FPVP.mjs +20 -0
- package/node/esm/CwGos8unpmJRL332.mjs +23 -0
- package/node/esm/{v2vXc6oQz1MG0L1T.mjs → D6EAmJysfmV2SDWN.mjs} +2 -2
- package/node/esm/{sXWR_bAqmw8b4bT6.mjs → DDeB7W4L-kYPJIen.mjs} +2 -2
- package/{browser/esm/Bsu4BOOlbAHpAp8R.mjs → node/esm/DI4GkF1aprSO3xJA.mjs} +2 -2
- package/{browser/esm/Dov9_ZXeOSh41yWn.mjs → node/esm/DM-XF-bs0vhdn_DV.mjs} +2 -2
- package/node/esm/{BPDTXAH_YiFBVS9b.mjs → V7-Quzl7KPnOZGOn.mjs} +2 -2
- package/node/esm/{D62u7Lj1Nd9ZM4Rp.mjs → YTmdtKovJGREqfKj.mjs} +2 -2
- package/node/esm/{LF8AasftSZOpXqHe.mjs → _ikZ8NP83_OERyWJ.mjs} +2 -2
- package/node/esm/declarations.mjs +95 -0
- package/node/esm/ej4CgfrQX3zo-dyY.mjs +2420 -0
- package/node/esm/index.mjs +2036 -3980
- package/package.json +12 -7
- package/types/declarations.d.ts +4 -0
- package/types/src/.generated/decl/{financial/STOCKHISTORY.decl.d.ts → lookupReference/GroupBy.decl.d.ts} +1 -1
- package/types/src/.generated/decl/lookupReference/PivotBy.decl.d.ts +4 -0
- package/types/src/.generated/declarations.d.ts +7 -0
- package/types/src/.generated/desc/{financial/STOCKHISTORY.desc.d.ts → lookupReference/GroupBy.desc.d.ts} +1 -1
- package/types/src/.generated/desc/lookupReference/PivotBy.desc.d.ts +4 -0
- package/types/src/_utils/AnyArgs.d.ts +0 -12
- package/types/src/_utils/FinanaceSolver.d.ts +0 -27
- package/types/src/_utils/FinanceAmor.d.ts +0 -9
- package/types/src/_utils/FinanceCashflow.d.ts +0 -17
- package/types/src/_utils/FinanceCoupon.d.ts +0 -63
- package/types/src/_utils/FinanceDate.d.ts +0 -7
- package/types/src/_utils/FinanceDayCount.d.ts +0 -74
- package/types/src/_utils/FinanceOdd.d.ts +0 -62
- package/types/src/_utils/FinanceSecurity.d.ts +0 -21
- package/types/src/_utils/FinanceUtils.d.ts +0 -32
- package/types/src/_utils/Pivot.d.ts +203 -0
- package/types/src/cube/Cube.d.ts +7 -7
- package/types/src/financial/ACCRINT.d.ts +0 -23
- package/types/src/financial/AMORDEGRC.d.ts +0 -22
- package/types/src/financial/Cashflow.d.ts +0 -49
- package/types/src/financial/Coupon.d.ts +0 -14
- package/types/src/financial/Date.d.ts +0 -29
- package/types/src/financial/Depreciation.d.ts +0 -9
- package/types/src/financial/Odd.d.ts +0 -18
- package/types/src/financial/Security.d.ts +0 -10
- package/types/src/financial/SecurityMaturity.d.ts +0 -40
- package/types/src/financial/TBill.d.ts +0 -17
- package/types/src/financial/VDB.d.ts +0 -17
- package/types/src/lookupReference/GroupBy.d.ts +14 -0
- package/types/src/lookupReference/PivotBy.d.ts +17 -0
- package/browser/cjs/B4ANcw0mAmhe2Aeb.cjs +0 -1
- package/browser/cjs/B6IXpae7f0J8Ocq6.cjs +0 -1
- package/browser/cjs/BWDfauDHqB6U_2ka.cjs +0 -1
- package/browser/cjs/Bncc0oXhFMdj_HuR.cjs +0 -1
- package/browser/cjs/C2uDl8VIJqh58YF_.cjs +0 -1
- package/browser/cjs/C4cZxb9nRtzTCA40.cjs +0 -1
- package/browser/cjs/CFxueP0tbpmvY1Ip.cjs +0 -1
- package/browser/cjs/CRcv32tHTbGSGtkh.cjs +0 -1
- package/browser/cjs/CW-b31_-r-_raT8Y.cjs +0 -1
- package/browser/cjs/CaJGoNwTL6pAJ6a4.cjs +0 -1
- package/browser/cjs/CfXcRa4RlFmqU0Op.cjs +0 -1
- package/browser/cjs/DRmo6uoGoqtiVff8.cjs +0 -1
- package/browser/cjs/DSXLVieENYN9qXYl.cjs +0 -1
- package/browser/cjs/DpFg69dDCPoOK2BY.cjs +0 -1
- package/browser/cjs/JfM6P_qoQQTWakZf.cjs +0 -1
- package/browser/cjs/PmwvZPFhqmL4DO58.cjs +0 -1
- package/browser/cjs/SATfdSwNygvlOSKC.cjs +0 -1
- package/browser/cjs/XRCcogT-Iqd3Wv6R.cjs +0 -1
- package/browser/cjs/bM25C5avKgBAJVfk.cjs +0 -1
- package/browser/cjs/iYn00uzmSLl2T0oN.cjs +0 -1
- package/browser/cjs/index.cjs +0 -1
- package/browser/esm/C7p2YYAK6S2mN92V.mjs +0 -19
- package/node/esm/YzY_Aik1Q_7Ay4JY.mjs +0 -19
- package/types/src/financial/STOCKHISTORY.d.ts +0 -17
|
@@ -0,0 +1,203 @@
|
|
|
1
|
+
import { FormulaError, IFormulaContext, IFunction, IRange, Scalar } from '@sheetxl/primitives';
|
|
2
|
+
/**
|
|
3
|
+
* One aggregate column: a function applied to one value column.
|
|
4
|
+
*/
|
|
5
|
+
export interface Measure {
|
|
6
|
+
readonly fn: IFunction;
|
|
7
|
+
/** The value column it reads. */
|
|
8
|
+
readonly column: number;
|
|
9
|
+
/** Called with `(x, y)` rather than `(x)` — see {@link aggregate}. */
|
|
10
|
+
readonly twoArgs: boolean;
|
|
11
|
+
/** What the function-name row shows. */
|
|
12
|
+
readonly label: string;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* The function argument, resolved.
|
|
16
|
+
*/
|
|
17
|
+
export interface Functions {
|
|
18
|
+
/** One per output column (or, when `vertical`, one per output row of each group). */
|
|
19
|
+
readonly measures: Measure[];
|
|
20
|
+
/** The functions were a column (`VSTACK(SUM,COUNT)`): each group gets one row per function. */
|
|
21
|
+
readonly vertical: boolean;
|
|
22
|
+
/** More than one function — a row or column names them. */
|
|
23
|
+
readonly named: boolean;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Resolves the function argument against the value columns, or answers the whole call's error.
|
|
27
|
+
*
|
|
28
|
+
* @remarks
|
|
29
|
+
* A row of functions is one column per function, a column of them one row per function (a13, a14),
|
|
30
|
+
* and a 2-D block is refused (a15). Functions pair with value columns one to many, many to one, or
|
|
31
|
+
* one to one (a37, a38, a42). A function that cannot take one argument, or needs more than two, is
|
|
32
|
+
* refused up front (a23, a24, a43) — the call shape is decided before any group runs.
|
|
33
|
+
*/
|
|
34
|
+
export declare const resolveFunctions: (fn: any, valueColumns: number) => Functions | FormulaError.Known;
|
|
35
|
+
/**
|
|
36
|
+
* Applies a measure to a group's members.
|
|
37
|
+
*
|
|
38
|
+
* @remarks
|
|
39
|
+
* `y` is every kept value of the column, and only a function that REQUIRES two arguments gets it
|
|
40
|
+
* (`PERCENTOF`, `LAMBDA(x,y,…)`; a20–a22). An array result, a 1×1 included, is `#VALUE!` for that
|
|
41
|
+
* cell (a25, r05, r06); a single-cell reference reads as its value, and an error — returned or
|
|
42
|
+
* thrown — is just the cell's value.
|
|
43
|
+
*/
|
|
44
|
+
export declare const aggregate: (measure: Measure, x: IRange, y: () => IRange) => Scalar;
|
|
45
|
+
/**
|
|
46
|
+
* How the first row is read — see {@link resolveHeaders}.
|
|
47
|
+
*/
|
|
48
|
+
export interface Headers {
|
|
49
|
+
/** The first row is a header, not data. */
|
|
50
|
+
readonly hasHeader: boolean;
|
|
51
|
+
/** A header row is output (the data's own, or generated). */
|
|
52
|
+
readonly show: boolean;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* The `field_headers` argument, resolved; omitted, it is guessed from the values.
|
|
56
|
+
*
|
|
57
|
+
* @remarks
|
|
58
|
+
* 0: data; 1: header, hidden; 2: no header, generate one; 3: header, shown. Anything else is
|
|
59
|
+
* `#VALUE!` (b10, b11, b16).
|
|
60
|
+
*
|
|
61
|
+
* The guess is the one sort uses: a header when the first two rows hold values of different types
|
|
62
|
+
* in some value column (b01 has `"Sales"` over `10`, b08 has `"Product"` over `"Apple"`). Excel's
|
|
63
|
+
* own rule is not fully measured yet.
|
|
64
|
+
*/
|
|
65
|
+
export declare const resolveHeaders: (fieldHeaders: number | undefined, values: IRange) => Headers | FormulaError.Known;
|
|
66
|
+
/**
|
|
67
|
+
* Validates a `total_depth` against the number of key fields.
|
|
68
|
+
*
|
|
69
|
+
* @remarks
|
|
70
|
+
* An integer no deeper than the fields (c04, c16, c20, c21); the sign puts totals first.
|
|
71
|
+
*/
|
|
72
|
+
export declare const isValidDepth: (depth: number, fieldCount: number) => boolean;
|
|
73
|
+
/**
|
|
74
|
+
* One axis's sort: a direction per key level, or a sort by an aggregate.
|
|
75
|
+
*/
|
|
76
|
+
export interface SortSpec {
|
|
77
|
+
/** Per key level, 1 ascending or -1 descending. */
|
|
78
|
+
readonly keyDirections: number[];
|
|
79
|
+
/** Sort by an aggregate column: the measure's index and its direction. */
|
|
80
|
+
readonly byValue: {
|
|
81
|
+
readonly measure: number;
|
|
82
|
+
readonly direction: number;
|
|
83
|
+
} | null;
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Parses a `sort_order` argument.
|
|
87
|
+
*
|
|
88
|
+
* @param valueColumns How many aggregate columns follow the keys; an index past the keys picks one.
|
|
89
|
+
*
|
|
90
|
+
* @remarks
|
|
91
|
+
* `±k` sorts key level `k`, or, past the keys, an aggregate column (d02, d05). Several indices must
|
|
92
|
+
* be distinct key levels, no more than there are (d09, d11, r12–r15). Zero, out of range, text, a
|
|
93
|
+
* fraction and a logical are `#VALUE!` (d07, d08, d16, d17, r24).
|
|
94
|
+
*/
|
|
95
|
+
export declare const resolveSort: (sortOrder: IRange | undefined, fieldCount: number, valueColumns: number) => SortSpec | FormulaError.Known;
|
|
96
|
+
/**
|
|
97
|
+
* Whether `values` is one blank CELL — refused for the whole call (g16, g19).
|
|
98
|
+
*
|
|
99
|
+
* @remarks
|
|
100
|
+
* The rule `ARRAYTOTEXT` has for a lone blank: a reference to one empty cell is `#VALUE!`, while a
|
|
101
|
+
* blank KEY (g21), two blank cells (g18) or a blank array member are ordinary values.
|
|
102
|
+
*/
|
|
103
|
+
export declare const isLoneBlankCell: (values: IRange) => boolean;
|
|
104
|
+
/**
|
|
105
|
+
* Validates a `filter_array` against the record count.
|
|
106
|
+
*
|
|
107
|
+
* @remarks
|
|
108
|
+
* One column as tall as the data, holding logicals and numbers only: an error or text anywhere is
|
|
109
|
+
* `#VALUE!` for the whole call (f06, f08), as is a shape mismatch (f03, f09, f11).
|
|
110
|
+
*/
|
|
111
|
+
export declare const isValidFilter: (filter: IRange, recordCount: number) => boolean;
|
|
112
|
+
/** A group of one axis of the pivot. */
|
|
113
|
+
export type Group = IFormulaContext.PivotGroup;
|
|
114
|
+
/**
|
|
115
|
+
* One output line of an axis: a group at the innermost level, a subtotal, or the grand total
|
|
116
|
+
* (the axis's root).
|
|
117
|
+
*/
|
|
118
|
+
export interface AxisLine {
|
|
119
|
+
readonly kind: 'group' | 'subtotal' | 'total';
|
|
120
|
+
readonly node: Group;
|
|
121
|
+
}
|
|
122
|
+
/** Each group's children in their sorted order. */
|
|
123
|
+
export type AxisOrder = ReadonlyMap<Group, readonly Group[]>;
|
|
124
|
+
/**
|
|
125
|
+
* `measure` over the records in both a row group and a column group: the pivot's own aggregate
|
|
126
|
+
* when it computes the function ({@link IFormulaContext.Pivot.getAggregate}), the function over
|
|
127
|
+
* the members otherwise, and `""` when no record is in both.
|
|
128
|
+
*/
|
|
129
|
+
export declare const aggregateAt: (pivot: IFormulaContext.Pivot, measure: Measure, values: IRange, row: Group | undefined, column: Group | undefined, y: () => IRange) => Scalar;
|
|
130
|
+
/**
|
|
131
|
+
* The layout of one axis of a pivot — `GROUPBY`'s rows, or either side of `PIVOTBY` — over the
|
|
132
|
+
* pivot's tree of groups ({@link IFormulaContext.createPivot}): sorting, subtotal and total
|
|
133
|
+
* placement, and key cells.
|
|
134
|
+
*
|
|
135
|
+
* @remarks
|
|
136
|
+
* The pivot groups every key level, so a subtotal's members are one group rather than a union of
|
|
137
|
+
* its children's, and each level keeps its own group's spelling: `East`, then `east` under a later
|
|
138
|
+
* product, is still `East` in that row (c13).
|
|
139
|
+
*/
|
|
140
|
+
export declare class AxisLayout {
|
|
141
|
+
readonly root: Group;
|
|
142
|
+
readonly fieldCount: number;
|
|
143
|
+
/**
|
|
144
|
+
* @param axis One axis of the pivot.
|
|
145
|
+
* @param fieldCount The key columns the axis is grouped by.
|
|
146
|
+
*/
|
|
147
|
+
constructor(axis: IFormulaContext.PivotAxis, fieldCount: number);
|
|
148
|
+
/**
|
|
149
|
+
* Orders the groups at every level.
|
|
150
|
+
*
|
|
151
|
+
* @param valueOf A group's aggregate, for a sort by value.
|
|
152
|
+
*
|
|
153
|
+
* @remarks
|
|
154
|
+
* Keys sort by the comparison operators' order — numbers, text, `FALSE`, `TRUE`, errors — with
|
|
155
|
+
* a blank key last in either direction (e01, e02). A sort by value orders each level by its own
|
|
156
|
+
* aggregate, parents by their subtotal (d05); ties keep key order (e06), and an error aggregate
|
|
157
|
+
* sorts last.
|
|
158
|
+
*/
|
|
159
|
+
sortTree(spec: SortSpec, valueOf: (node: Group) => Scalar): AxisOrder;
|
|
160
|
+
/**
|
|
161
|
+
* The innermost groups in one flat order, for field relationship 1 (d18): by every key level in
|
|
162
|
+
* turn, then by value when the sort asks for it.
|
|
163
|
+
*/
|
|
164
|
+
sortLeaves(spec: SortSpec, valueOf: (node: Group) => Scalar): Group[];
|
|
165
|
+
/**
|
|
166
|
+
* The output lines in order, with subtotals and the grand total placed per `depth`.
|
|
167
|
+
*
|
|
168
|
+
* @remarks
|
|
169
|
+
* `|depth|` 1 is the grand total alone; each step deeper adds subtotals for one more level from
|
|
170
|
+
* the top (c03, c13, c14). A negative depth puts every total before what it totals (c06, c15).
|
|
171
|
+
*/
|
|
172
|
+
lines(order: AxisOrder, depth: number): AxisLine[];
|
|
173
|
+
/**
|
|
174
|
+
* The key cells of a line: its keys, `""` past its level, and the total's label.
|
|
175
|
+
*
|
|
176
|
+
* @remarks
|
|
177
|
+
* A blank key shows as `0`, as Excel spills it (a01); padding is `""` (b09, c03). The grand total
|
|
178
|
+
* is `Grand Total` once subtotals show, `Total` otherwise (c02, c03).
|
|
179
|
+
*/
|
|
180
|
+
keyCells(line: AxisLine, depth: number): Scalar[];
|
|
181
|
+
}
|
|
182
|
+
/**
|
|
183
|
+
* The generated header of key field `index` (0-based), for `field_headers` 2 (b04).
|
|
184
|
+
*/
|
|
185
|
+
export declare const generatedFieldLabel: (index: number) => string;
|
|
186
|
+
/**
|
|
187
|
+
* The generated header of `PIVOTBY` column field `index` (0-based), for `field_headers` 2 (p43).
|
|
188
|
+
*/
|
|
189
|
+
export declare const generatedColumnFieldLabel: (index: number) => string;
|
|
190
|
+
/**
|
|
191
|
+
* The generated header of value column `index` (0-based), for `field_headers` 2 (b04).
|
|
192
|
+
*/
|
|
193
|
+
export declare const generatedValueLabel: (index: number) => string;
|
|
194
|
+
/**
|
|
195
|
+
* The columns of a range, one slice each — the same object every time it is asked for, which is
|
|
196
|
+
* what lets a grouping reuse its work on a value column.
|
|
197
|
+
*/
|
|
198
|
+
export declare const columnsOf: (range: IRange) => IRange[];
|
|
199
|
+
/**
|
|
200
|
+
* A range without its first row — the data under a header.
|
|
201
|
+
*/
|
|
202
|
+
export declare const withoutFirstRow: (range: IRange) => IRange;
|
|
203
|
+
//# sourceMappingURL=Pivot.d.ts.map
|
package/types/src/cube/Cube.d.ts
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
* @param caption is the caption to be displayed in the cell.
|
|
8
8
|
*/
|
|
9
9
|
export declare function CUBEKPIMEMBER(connection: string, kpiName: string, kpiProperty: number, // option 1-6
|
|
10
|
-
caption?: string):
|
|
10
|
+
caption?: string): string;
|
|
11
11
|
/**
|
|
12
12
|
* Returns a member or tuple from the cube.
|
|
13
13
|
* @hidden Unimplemented Cube
|
|
@@ -15,7 +15,7 @@ caption?: string): Promise<string>;
|
|
|
15
15
|
* @param memberExpression is the expression representing the name of a member or tuple in the OLAP cube.
|
|
16
16
|
* @param caption is the caption to be displayed in the cell.
|
|
17
17
|
*/
|
|
18
|
-
export declare function CUBEMEMBER(connection: string, memberExpression: string, caption?: string):
|
|
18
|
+
export declare function CUBEMEMBER(connection: string, memberExpression: string, caption?: string): string;
|
|
19
19
|
/**
|
|
20
20
|
* Returns the value of a member property from the cube.
|
|
21
21
|
* @hidden Unimplemented Cube
|
|
@@ -23,7 +23,7 @@ export declare function CUBEMEMBER(connection: string, memberExpression: string,
|
|
|
23
23
|
* @param memberExpression is the expression representing the name of a member in the OLAP cube.
|
|
24
24
|
* @param kpiProperty is the property name.
|
|
25
25
|
*/
|
|
26
|
-
export declare function CUBEMEMBERPROPERTY(connection: string, memberExpression: string, kpiProperty: number):
|
|
26
|
+
export declare function CUBEMEMBERPROPERTY(connection: string, memberExpression: string, kpiProperty: number): string;
|
|
27
27
|
/**
|
|
28
28
|
* Returns the nth, or ranked, member in a set.
|
|
29
29
|
* @hidden Unimplemented Cube
|
|
@@ -33,7 +33,7 @@ export declare function CUBEMEMBERPROPERTY(connection: string, memberExpression:
|
|
|
33
33
|
* @param caption is the caption to be displayed in the cell.
|
|
34
34
|
*/
|
|
35
35
|
export declare function CUBERANKEDMEMBER(connection: string, setExpression: string, rank: number, // 1 - 5
|
|
36
|
-
caption?: string):
|
|
36
|
+
caption?: string): string;
|
|
37
37
|
/**
|
|
38
38
|
* Defines a calculated set of members or tuples by sending a set expression to the cube on the server, which creates the set, and then returns that set to Microsoft Excel.
|
|
39
39
|
* @hidden Unimplemented Cube
|
|
@@ -47,18 +47,18 @@ caption?: string): Promise<string>;
|
|
|
47
47
|
* https://support.office.com/client/results?authtype=unknown&lcid=1033&locale=en-usµsoftapplicationstelemetrydeviceid=70192ff8-de17-4a6b-8e59-35903120b479&ns=EXCEL&syslcid=1033&uilcid=1033&version=90&helpid=xlmain11.chm60526
|
|
48
48
|
*/
|
|
49
49
|
export declare function CUBESET(connection: string, setExpression: string, caption?: string, sortOrder?: number, // 1 - 6
|
|
50
|
-
sortBy?: string):
|
|
50
|
+
sortBy?: string): string;
|
|
51
51
|
/**
|
|
52
52
|
* Returns the number of items in a set.
|
|
53
53
|
* @hidden Unimplemented Cube
|
|
54
54
|
* @param set is the set whose elements are to be counted.
|
|
55
55
|
*/
|
|
56
|
-
export declare function CUBESETCOUNT(set: string):
|
|
56
|
+
export declare function CUBESETCOUNT(set: string): number;
|
|
57
57
|
/**
|
|
58
58
|
* Returns an aggregated value from the cube.
|
|
59
59
|
* @hidden Unimplemented Cube
|
|
60
60
|
* @param connection is the name of a connection to an OLAP cube.
|
|
61
61
|
* @param memberExpression is a slicer that determines the portion of the OLAP cube for which the aggregation value is to be retrieved.
|
|
62
62
|
*/
|
|
63
|
-
export declare function CUBEVALUE(connection: string, ...memberExpression: string[]):
|
|
63
|
+
export declare function CUBEVALUE(connection: string, ...memberExpression: string[]): string;
|
|
64
64
|
//# sourceMappingURL=Cube.d.ts.map
|
|
@@ -9,19 +9,6 @@ import { AcceptError, Omittable, Scalar, NoLift } from '@sheetxl/primitives';
|
|
|
9
9
|
* @param frequency is the number of coupon payments per year.
|
|
10
10
|
* @param basis is the type of day count basis to use.
|
|
11
11
|
* @param calcMethod is a logical value: to accrued interest from issue date = TRUE; to calculate from last coupon payment date = FALSE.
|
|
12
|
-
*
|
|
13
|
-
* @remarks
|
|
14
|
-
* `par · rate/frequency · Σ(Aᵢ/NLᵢ)` over the quasi-coupon periods anchored at `first_interest`,
|
|
15
|
-
* as Excel 16.0 composes it (fn-battery financial/ACCRINT and adhoc-accrint-clamped, 1,796 rows,
|
|
16
|
-
* 2026-08-28 / 2026-09-09) — see {@link accruedPeriods}.
|
|
17
|
-
* The seven leading slots are Excel-declared `any` (a boolean is #VALUE!, an empty slot #N/A —
|
|
18
|
-
* except `par`, which is 1000 when omitted — a blank cell 0); `calc_method` is a logical read
|
|
19
|
-
* FIRST: any number is accepted (nonzero is TRUE), text — `"TRUE"` included — is #VALUE!. Then
|
|
20
|
-
* the slots are read from the first, each coerced and validated before the next (a negative
|
|
21
|
-
* issue is #NUM! over a text frequency, a frequency of 3 over a text basis): every date in the
|
|
22
|
-
* calendar, the frequency 1/2/4 and the basis 0–4 after truncation; then `issue < settlement`,
|
|
23
|
-
* `rate > 0`, `par > 0`, and a quasi-coupon date the walk needs below serial 1 or past the
|
|
24
|
-
* calendar's end is #NUM!. A product that overflows is 0.
|
|
25
12
|
*/
|
|
26
13
|
export declare function ACCRINT(issue: NoLift<Omittable<AcceptError<Scalar>>>, firstInterest: NoLift<Omittable<AcceptError<Scalar>>>, settlement: NoLift<Omittable<AcceptError<Scalar>>>, rate: NoLift<Omittable<AcceptError<Scalar>>>, par: NoLift<Omittable<AcceptError<Scalar>>>, frequency: NoLift<Omittable<AcceptError<Scalar>>>, basis?: NoLift<Omittable<AcceptError<Scalar>>>, calcMethod?: NoLift<Omittable<AcceptError<Scalar>>>): number;
|
|
27
14
|
/**
|
|
@@ -31,16 +18,6 @@ export declare function ACCRINT(issue: NoLift<Omittable<AcceptError<Scalar>>>, f
|
|
|
31
18
|
* @param rate is the security's annual coupon rate.
|
|
32
19
|
* @param par is the security's par value.
|
|
33
20
|
* @param basis is the type of day count basis to use.
|
|
34
|
-
*
|
|
35
|
-
* @remarks
|
|
36
|
-
* `par · rate · yearfrac(issue, settlement)` with YEARFRAC's year fraction (the signed NASD
|
|
37
|
-
* count at basis 0), measured against Excel 16.0 (fn-battery financial/ACCRINTM, 2026-08-28).
|
|
38
|
-
* There is no quasi-coupon walk here — a security paying at maturity has one period — so the
|
|
39
|
-
* two share their reading and nothing else. The slots read from the first: each date is coerced
|
|
40
|
-
* and checked against the calendar before the next slot is looked at, then the rate, the par and
|
|
41
|
-
* the basis are coerced, and only then the date order (`issue ≤ settlement` once truncated —
|
|
42
|
-
* equal is 0) and the signs of the rate and the par. An OMITTED par is 1000 (a blank cell is 0,
|
|
43
|
-
* and #NUM!). A product that overflows is 0.
|
|
44
21
|
*/
|
|
45
22
|
export declare function ACCRINTM(issue: NoLift<Omittable<AcceptError<Scalar>>>, settlement: NoLift<Omittable<AcceptError<Scalar>>>, rate: NoLift<Omittable<AcceptError<Scalar>>>, par: NoLift<Omittable<AcceptError<Scalar>>>, basis?: NoLift<Omittable<AcceptError<Scalar>>>): number;
|
|
46
23
|
//# sourceMappingURL=ACCRINT.d.ts.map
|
|
@@ -8,28 +8,6 @@ import { Scalar, Omittable, NoLift } from '@sheetxl/primitives';
|
|
|
8
8
|
* @param period is the period.
|
|
9
9
|
* @param rate is the depreciation rate.
|
|
10
10
|
* @param basis is the type of day count basis to use.
|
|
11
|
-
*
|
|
12
|
-
* @remarks
|
|
13
|
-
* Measured against Excel 16.0 (fn-battery financial/AMORDEGRC, 2026-08-28), where it differs from
|
|
14
|
-
* the documentation in most places:
|
|
15
|
-
*
|
|
16
|
-
* - The life is `1/rate`. A life of 2 or less is #NUM!; the coefficient is 1.5 up to a life of 4,
|
|
17
|
-
* 2 up to 6, 2.5 beyond (the documented "1 to 2 years" and "4 to 5 years" bands do not exist).
|
|
18
|
-
* - Period 0 is `cost · rate · coefficient · stub fraction` (the AMORLINC stub, see
|
|
19
|
-
* `getAmorDayCount`), capped at `cost − salvage`, ROUNDED — half away from zero, not
|
|
20
|
-
* floored — and carried into the balance rounded.
|
|
21
|
-
* - Each later period is the declining charge `balance · rate · coefficient`, except the LAST
|
|
22
|
-
* TWO periods of `ceil(life)`, which split the balance in two and then take the rest. There is
|
|
23
|
-
* no other straight-line switch (a 10-year asset stays on the declining charge in period 7
|
|
24
|
-
* although straight line is larger). Every returned charge is rounded, but the balance carries
|
|
25
|
-
* the UNROUNDED charge.
|
|
26
|
-
* - A balance already below salvage at the start of a period returns 0; one equal to salvage is
|
|
27
|
-
* still depreciated (`AMORDEGRC(2400,…,2399,1,0.15,1)` is 900).
|
|
28
|
-
* - A period under 1 is period 1 and above 1 truncates — except that Excel answers other
|
|
29
|
-
* periods' values for some fractions below 1 (0.1 and 1E-300 answer period 5, 0.5 answers 0);
|
|
30
|
-
* those rows are accepted differences.
|
|
31
|
-
* - Every argument is Excel-declared `any`: a boolean is refused, an empty argument is missing, a
|
|
32
|
-
* multi-cell reference does not broadcast. Basis truncates and 2 is refused; 4 is accepted.
|
|
33
11
|
*/
|
|
34
12
|
export declare function AMORDEGRC(cost: NoLift<Omittable<Scalar>>, datePurchased: NoLift<Omittable<Scalar>>, firstPeriod: NoLift<Omittable<Scalar>>, salvage: NoLift<Omittable<Scalar>>, period: NoLift<Omittable<Scalar>>, rate: NoLift<Omittable<Scalar>>, basis?: NoLift<Omittable<Scalar>>): number;
|
|
35
13
|
//# sourceMappingURL=AMORDEGRC.d.ts.map
|
|
@@ -9,17 +9,6 @@ export declare function NPV(rate: number, value: IRange<number>[]): number;
|
|
|
9
9
|
* Returns the internal rate of return for a series of cash flows.
|
|
10
10
|
* @param values is an array or a reference to cells that contain numbers for which you want to calculate the internal rate of return.
|
|
11
11
|
* @param guess is a number that you guess is close to the result of IRR.
|
|
12
|
-
*
|
|
13
|
-
* @remarks
|
|
14
|
-
* Measured against Excel 16.0 (fn-battery financial/IRR plus `adhoc-irr-iterates` and
|
|
15
|
-
* `adhoc-irr-guess`, 2026-08-29). The member rule is NPV's — a text, boolean, blank or
|
|
16
|
-
* empty-string member is SKIPPED and the periods close up behind it, so `{-100,TRUE,110}` is the
|
|
17
|
-
* two-flow 10% — while an error member is `#VALUE!` whatever its own identity was. An error handed
|
|
18
|
-
* as the whole argument is not a member and keeps its identity (`IRR(NA())` is `#N/A`). `guess` is
|
|
19
|
-
* declared `number` (a boolean coerces, a text is `#VALUE!`), an ABSENT argument is 0.1 where an
|
|
20
|
-
* EMPTY slot and a blank cell are 0, and the domain is the one RATE has at both ends:
|
|
21
|
-
* `guess <= -1` is `#VALUE!`, and so is a guess so large that `1 + guess` is `guess` again
|
|
22
|
-
* (the turn is at 2^53 — `IRR(…,9.007E15)` answers and `IRR(…,9.008E15)` does not).
|
|
23
12
|
*/
|
|
24
13
|
export declare function IRR(values: Omittable<Flatten<AcceptError<Scalar>>>, guess?: number): number;
|
|
25
14
|
/**
|
|
@@ -27,19 +16,6 @@ export declare function IRR(values: Omittable<Flatten<AcceptError<Scalar>>>, gue
|
|
|
27
16
|
* @param values An array of cash flows; must contain at least one positive and one negative value.
|
|
28
17
|
* @param financeRate The interest rate paid on negative cash flows (cost of capital).
|
|
29
18
|
* @param reinvestRate The interest rate received on positive cash flows (reinvestment rate).
|
|
30
|
-
*
|
|
31
|
-
* @remarks
|
|
32
|
-
* Measured against Excel 16.0 (fn-battery financial/MIRR, 2026-08-29). The member rule is IRR's —
|
|
33
|
-
* a text, boolean, blank or empty-string member is SKIPPED and the periods close up, so it also
|
|
34
|
-
* shortens the `n` the exponent counts — but an error member keeps its own identity here where
|
|
35
|
-
* IRR flattens every one to `#VALUE!`. The two rates are declared `number` (a boolean coerces, an
|
|
36
|
-
* empty slot and a blank cell are 0) and are read before the members, so a text rate beats an
|
|
37
|
-
* `#N/A` in the schedule.
|
|
38
|
-
*
|
|
39
|
-
* The form is the documented one, and each side DIVIDES by its own compounding — which is where
|
|
40
|
-
* `#DIV/0!` comes from at a rate of −1 (a flow at period 0 divides by `(1+r)^0` and survives one:
|
|
41
|
-
* `MIRR({-100,110},-1,0)` is 10% while `MIRR({-100,110},0,-1)` is not). Fewer than two flows, or
|
|
42
|
-
* no outflow at all, divides by zero as well.
|
|
43
19
|
*/
|
|
44
20
|
export declare function MIRR(values: Omittable<Flatten<AcceptError<Scalar>>>, financeRate: number, reinvestRate: number): number;
|
|
45
21
|
/**
|
|
@@ -47,14 +23,6 @@ export declare function MIRR(values: Omittable<Flatten<AcceptError<Scalar>>>, fi
|
|
|
47
23
|
* @param rate is the discount rate to apply to the cash flows.
|
|
48
24
|
* @param values is a series of cash flows that correspond to a schedule of payments in dates.
|
|
49
25
|
* @param dates is a schedule of payment dates that corresponds to the cash flow payments.
|
|
50
|
-
*
|
|
51
|
-
* @remarks
|
|
52
|
-
* Measured against Excel 16.0 (fn-battery financial/XNPV, 2026-08-29). Each flow is discounted
|
|
53
|
-
* over ACTUAL days from the FIRST date on a 365-day year — `(trunc(dᵢ) − trunc(d₀))/365`, each
|
|
54
|
-
* serial truncated on its own, so a fractional date changes nothing. The dates need not be
|
|
55
|
-
* sorted; they need only fall at or after `d₀`, and a date before it is #NUM!. The rate is
|
|
56
|
-
* strictly positive (0 and below are #NUM!, 1E-300 is an answer), and a discount factor or a
|
|
57
|
-
* sum that overflows is #NUM!. The operands read as {@link readDatedFlows} describes.
|
|
58
26
|
*/
|
|
59
27
|
export declare function XNPV(rate: NoLift<Omittable<Scalar>>, values: Omittable<IRange>, dates: Omittable<IRange>): number;
|
|
60
28
|
/**
|
|
@@ -62,23 +30,6 @@ export declare function XNPV(rate: NoLift<Omittable<Scalar>>, values: Omittable<
|
|
|
62
30
|
* @param values is a series of cash flows that correspond to a schedule of payments in dates.
|
|
63
31
|
* @param dates is a schedule of payment dates that corresponds to the cash flow payments.
|
|
64
32
|
* @param guess is a number that you guess is close to the result of XIRR.
|
|
65
|
-
*
|
|
66
|
-
* @remarks
|
|
67
|
-
* Measured against Excel 16.0 (fn-battery financial/XIRR, 2026-08-29). XIRR is XNPV's equation
|
|
68
|
-
* solved for the rate — the same `(trunc(dᵢ) − trunc(d₀))/365` day count — but neither its
|
|
69
|
-
* operands nor its answer are XNPV's. The members are COERCED rather than refused (numeric text
|
|
70
|
-
* and date text parse; a boolean or a true text is `#VALUE!`), a pair whose VALUE is blank is
|
|
71
|
-
* DROPPED, serial 0 is legal, and the dates need not be ordered at all: a flow before `d₀` is
|
|
72
|
-
* discounted by a negative exponent. Fewer than two surviving pairs is `#N/A`; two of the same
|
|
73
|
-
* sign is `#NUM!`. `guess` is ATP `any` — a boolean is `#VALUE!`, an EMPTY slot is the 0.1
|
|
74
|
-
* default where a blank cell is 0, and a reference does not lift.
|
|
75
|
-
*
|
|
76
|
-
* Excel's own answer is only accurate to about eight digits and moves with the guess in the
|
|
77
|
-
* ninth, so the fixture's numeric rows carry a `precision` (CALC-ISSUES 26): its
|
|
78
|
-
* iteration is unidentified, as YIELD's and ODDFYIELD's are. What IS reproduced is the search's
|
|
79
|
-
* one directional rule — from a NEGATIVE guess Excel never reaches a positive root
|
|
80
|
-
* (`XIRR({-100,110},…,-0.5)` is `#NUM!` while the same call at guess 0 answers 10%), though a
|
|
81
|
-
* non-negative guess reaches a negative root freely.
|
|
82
33
|
*/
|
|
83
34
|
export declare function XIRR(values: Omittable<IRange>, dates: Omittable<IRange>, guess?: NoLift<Omittable<Scalar>>): number;
|
|
84
35
|
//# sourceMappingURL=Cashflow.d.ts.map
|
|
@@ -1,12 +1,4 @@
|
|
|
1
1
|
import { Omittable, Scalar, NoLift } from '@sheetxl/primitives';
|
|
2
|
-
/**
|
|
3
|
-
* Coupon date and day-count functions.
|
|
4
|
-
*
|
|
5
|
-
* The six share one argument reader, `readCouponArgs` — every slot is Excel-declared `any`,
|
|
6
|
-
* the dates and frequency validate before the basis is read — and one coupon chain,
|
|
7
|
-
* `FinanceCoupon`'s, both measured against Excel 16.0 (fn-battery financial/COUP*,
|
|
8
|
-
* 2026-08-28). COUPNCD and COUPPCD return date serials, not day counts.
|
|
9
|
-
*/
|
|
10
2
|
/**
|
|
11
3
|
* Returns the number of days from the beginning of the coupon period to the settlement date.
|
|
12
4
|
* @param settlement is the security's settlement date, expressed as a serial date number.
|
|
@@ -37,12 +29,6 @@ export declare function COUPDAYSNC(settlement: NoLift<Omittable<Scalar>>, maturi
|
|
|
37
29
|
* @param maturity is the security's maturity date, expressed as a serial date number.
|
|
38
30
|
* @param frequency is the number of coupon payments per year.
|
|
39
31
|
* @param basis is the type of day count basis to use.
|
|
40
|
-
*
|
|
41
|
-
* @remarks
|
|
42
|
-
* Returns a date serial and leaves the cell's format alone — Excel does not hint one here, on a
|
|
43
|
-
* serial argument, on `DATE(...)` or on a date-formatted reference (measured 2026-08-29). No
|
|
44
|
-
* ATP-era date function does; `DATE` and `TODAY` do, and an operator such as `B1+1` propagates
|
|
45
|
-
* its operand's.
|
|
46
32
|
*/
|
|
47
33
|
export declare function COUPNCD(settlement: NoLift<Omittable<Scalar>>, maturity: NoLift<Omittable<Scalar>>, frequency: NoLift<Omittable<Scalar>>, basis?: NoLift<Omittable<Scalar>>): number;
|
|
48
34
|
/**
|
|
@@ -5,17 +5,6 @@ import { AcceptError, Scalar, Omittable, NoLift } from '@sheetxl/primitives';
|
|
|
5
5
|
* @param startDate is a serial date number that represents the start date.
|
|
6
6
|
* @param endDate is a serial date number that represents the end date.
|
|
7
7
|
* @param unit is a string that specifies the unit of time to use.
|
|
8
|
-
*
|
|
9
|
-
* @remarks
|
|
10
|
-
* Measured against Excel 16.0 (fn-battery financial/DATEDIF, 2026-08-28). Both serials are
|
|
11
|
-
* truncated before anything is compared (`DATEDIF(37179.6,37179.5,"d")` is 0); a serial outside
|
|
12
|
-
* the calendar is #NUM!, as is a start after the end, and so is a unit that is not exactly one
|
|
13
|
-
* of Y M D MD YM YD in either case — nothing is trimmed, and a number or a boolean arrives as
|
|
14
|
-
* text and is refused the same way. `"MD"` re-anchors the start's day into the end's month
|
|
15
|
-
* (the documented negative answers are Excel's own: Jan 31 → Mar 1 is −2). `"YD"` is the
|
|
16
|
-
* `"YM"` months and `"MD"` days walked forward from the start, so it counts on the START year's
|
|
17
|
-
* calendar — Jan 1 2004 → Mar 1 2005 is 60 where Jan 1 2003 → Mar 1 2004 is 59 (the documented
|
|
18
|
-
* leap-year quirk), and Feb 29 2004 → Mar 1 2005 is 0.
|
|
19
8
|
*/
|
|
20
9
|
export declare function DATEDIF(startDate: number, // Date
|
|
21
10
|
endDate: number, // Date
|
|
@@ -26,17 +15,6 @@ unit: string): number;
|
|
|
26
15
|
* @param endDate is a serial date number that represents the end date.
|
|
27
16
|
* @param basis is the type of day count basis to use.
|
|
28
17
|
* @category Date & Time
|
|
29
|
-
*
|
|
30
|
-
* @remarks
|
|
31
|
-
* Measured against Excel 16.0 (fn-battery financial/YEARFRAC, 2026-08-28). Excel declares all
|
|
32
|
-
* three arguments `any`: a boolean is #VALUE!, an empty argument is #N/A where a blank cell is
|
|
33
|
-
* serial 0, and a multi-cell reference does not broadcast while an array constant does. The
|
|
34
|
-
* basis is read and validated FIRST — truncated, #NUM! below 0 or above 4, so
|
|
35
|
-
* `YEARFRAC("x",39814,5)` is #NUM! and `YEARFRAC(NA(),39814,"x")` is #VALUE! (the dates
|
|
36
|
-
* accept an error so that the body, not the marshaller, decides which is seen first) — then
|
|
37
|
-
* the start, then the end, each coerced and range-checked in turn (`YEARFRAC(-1,"x",0)` is
|
|
38
|
-
* #NUM!). The day counts are `getYearFrac`'s: serials truncated, dates ordered, basis 0
|
|
39
|
-
* signed.
|
|
40
18
|
*/
|
|
41
19
|
export declare function YEARFRAC(startDate: NoLift<Omittable<AcceptError<Scalar>>>, endDate: NoLift<Omittable<AcceptError<Scalar>>>, basis?: NoLift<Omittable<Scalar>>): number;
|
|
42
20
|
/**
|
|
@@ -44,13 +22,6 @@ export declare function YEARFRAC(startDate: NoLift<Omittable<AcceptError<Scalar>
|
|
|
44
22
|
* @param endDate startDate and endDate are the two dates between which you want to know the number of days.
|
|
45
23
|
* @param startDate startDate and endDate are the two dates between which you want to know the number of days.
|
|
46
24
|
* @param method is a logical value specifying the calculation method: U.S. (NASD) = FALSE; European = TRUE.
|
|
47
|
-
*
|
|
48
|
-
* @remarks
|
|
49
|
-
* Measured against Excel 16.0 (fn-battery financial/DAYS360, 2026-08-28). Excel declares the
|
|
50
|
-
* dates `number` and the method `logical`, so the engine's coercion applies: a boolean date is
|
|
51
|
-
* its serial, a number is a method, `"TRUE"` is one while `"1"` is #VALUE!. A serial outside
|
|
52
|
-
* the calendar is #NUM! at either slot and the fraction is discarded. The US rules are
|
|
53
|
-
* `getDays360US`'s, applied to (start, end) as given.
|
|
54
25
|
*/
|
|
55
26
|
export declare function DAYS360(startDate: number, // date
|
|
56
27
|
endDate: number, // date
|
|
@@ -44,15 +44,6 @@ export declare function DDB(cost: number, salvage: number, life: number, period:
|
|
|
44
44
|
* @param period is the period.
|
|
45
45
|
* @param rate is the rate of depreciation.
|
|
46
46
|
* @param basis year basis : 0 for year of 360 days, 1 for actual, 3 for year of 365 days.
|
|
47
|
-
*
|
|
48
|
-
* @remarks
|
|
49
|
-
* Measured against Excel 16.0 (fn-battery financial/AMORLINC, 2026-08-28). Period 0 is the
|
|
50
|
-
* stub from purchase to the end of the first period, pro-rated by `getAmorDayCount` (a
|
|
51
|
-
* zero-day stub is a whole period; a stub longer than a year is not capped) and capped at
|
|
52
|
-
* `cost − salvage`; every following period is `cost·rate` until the one that takes what is
|
|
53
|
-
* left, and 0 beyond. A period under 1 is period 1, above it truncates. Basis truncates and 2 is
|
|
54
|
-
* refused. Every argument is Excel-declared `any`: a boolean is refused, an empty argument is
|
|
55
|
-
* missing, a multi-cell reference does not broadcast.
|
|
56
47
|
*/
|
|
57
48
|
export declare function AMORLINC(cost: NoLift<Omittable<Scalar>>, datePurchased: NoLift<Omittable<Scalar>>, firstPeriod: NoLift<Omittable<Scalar>>, salvage: NoLift<Omittable<Scalar>>, period: NoLift<Omittable<Scalar>>, rate: NoLift<Omittable<Scalar>>, basis?: NoLift<Omittable<Scalar>>): number;
|
|
58
49
|
//# sourceMappingURL=Depreciation.d.ts.map
|
|
@@ -10,16 +10,6 @@ import { AcceptError, Omittable, Scalar, NoLift } from '@sheetxl/primitives';
|
|
|
10
10
|
* @param redemption is the security's redemption value per $100 face value.
|
|
11
11
|
* @param frequency is the number of coupon payments per year.
|
|
12
12
|
* @param basis is the type of day count basis to use.
|
|
13
|
-
*
|
|
14
|
-
* @remarks
|
|
15
|
-
* The odd FIRST period `[issue, firstCoupon]` is short (a stub of one regular period) or long
|
|
16
|
-
* (several quasi-coupon periods); which, and the day-count sums of either, are
|
|
17
|
-
* {@link oddFirstSums} — measured against Excel 16.0 on 1,125 (shape, frequency, basis) triples
|
|
18
|
-
* and every row of its battery (fn-battery financial/ODDFPRICE, 2026-08-29), Excel's own
|
|
19
|
-
* month-end exponent quirk included. Reading and validation are {@link readOddArgs}'s, then
|
|
20
|
-
* `issue < settlement < firstCoupon < maturity` once truncated, the first coupon on the
|
|
21
|
-
* maturity's coupon grid, `rate ≥ 0`, `yld ≥ 0`, `redemption > 0`; an odd period exactly one
|
|
22
|
-
* regular period long is #NUM!.
|
|
23
13
|
*/
|
|
24
14
|
export declare function ODDFPRICE(settlement: NoLift<Omittable<AcceptError<Scalar>>>, maturity: NoLift<Omittable<AcceptError<Scalar>>>, issue: NoLift<Omittable<AcceptError<Scalar>>>, firstCoupon: NoLift<Omittable<AcceptError<Scalar>>>, rate: NoLift<Omittable<AcceptError<Scalar>>>, yld: NoLift<Omittable<AcceptError<Scalar>>>, redemption: NoLift<Omittable<AcceptError<Scalar>>>, frequency: NoLift<Omittable<AcceptError<Scalar>>>, basis?: NoLift<Omittable<AcceptError<Scalar>>>): number;
|
|
25
15
|
/**
|
|
@@ -50,14 +40,6 @@ export declare function ODDFYIELD(settlement: NoLift<Omittable<AcceptError<Scala
|
|
|
50
40
|
* @param redemption is the amount to be received at maturity.
|
|
51
41
|
* @param frequency is the number of coupon payments per year.
|
|
52
42
|
* @param basis is the type of day count basis to use.
|
|
53
|
-
*
|
|
54
|
-
* @remarks
|
|
55
|
-
* `(redemption + C·ΣDCᵢ/NLᵢ) / (1 + yld/frequency · ΣDSCᵢ/NLᵢ) − C·ΣAᵢ/NLᵢ` with
|
|
56
|
-
* `C = 100·rate/frequency` — linear in the yield, since the whole bond is the one irregular
|
|
57
|
-
* period. The three sums are {@link oddLastSums}; a product that overflows is 0. Measured
|
|
58
|
-
* bit-for-bit on Excel 16.0 (fn-battery financial/ODDLPRICE, 556 numeric rows, 2026-08-28).
|
|
59
|
-
* Reading and validation are {@link readOddArgs}'s: `lastInterest < settlement < maturity` once
|
|
60
|
-
* truncated, `rate ≥ 0`, `yld ≥ 0`, `redemption > 0`.
|
|
61
43
|
*/
|
|
62
44
|
export declare function ODDLPRICE(settlement: NoLift<Omittable<AcceptError<Scalar>>>, maturity: NoLift<Omittable<AcceptError<Scalar>>>, lastInterest: NoLift<Omittable<AcceptError<Scalar>>>, rate: NoLift<Omittable<AcceptError<Scalar>>>, yld: NoLift<Omittable<AcceptError<Scalar>>>, redemption: NoLift<Omittable<AcceptError<Scalar>>>, frequency: NoLift<Omittable<AcceptError<Scalar>>>, basis?: NoLift<Omittable<AcceptError<Scalar>>>): number;
|
|
63
45
|
/**
|
|
@@ -53,16 +53,6 @@ export declare function MDURATION(settlement: NoLift<Omittable<AcceptError<Scala
|
|
|
53
53
|
* @param redemption is the security's redemption value per $100 face value.
|
|
54
54
|
* @param frequency is the number of coupon payments per year.
|
|
55
55
|
* @param basis is the type of day count basis to use.
|
|
56
|
-
*
|
|
57
|
-
* @remarks
|
|
58
|
-
* PRICE inverted: the yield `y` with `PRICE(…, y, …) = pr`. With one coupon left the doc's closed
|
|
59
|
-
* form is used, over a coupon period that is the real span from the previous coupon to the
|
|
60
|
-
* maturity (so at bases 2 and 3 the single-coupon yield does not invert PRICE's 360/f or 365/f
|
|
61
|
-
* period). With more than one it is `solveYieldByNewton` on `calculatePrice` from
|
|
62
|
-
* `approximateYield` — an iteration that STOPS SHORT of the root, so the answer sits ~1e-10 away
|
|
63
|
-
* from it, and on a bond it cannot converge on (a redemption that dwarfs the price) it is simply
|
|
64
|
-
* where the walk stood after a hundred steps. Measured, fn-battery financial/YIELD and
|
|
65
|
-
* /adhoc-yield-* (2026-08-28, iteration 2026-09-09).
|
|
66
56
|
*/
|
|
67
57
|
export declare function YIELD(settlement: NoLift<Omittable<AcceptError<Scalar>>>, maturity: NoLift<Omittable<AcceptError<Scalar>>>, rate: NoLift<Omittable<AcceptError<Scalar>>>, pr: NoLift<Omittable<AcceptError<Scalar>>>, redemption: NoLift<Omittable<AcceptError<Scalar>>>, frequency: NoLift<Omittable<AcceptError<Scalar>>>, basis?: NoLift<Omittable<AcceptError<Scalar>>>): number;
|
|
68
58
|
//# sourceMappingURL=Security.d.ts.map
|
|
@@ -6,13 +6,6 @@ import { AcceptError, Scalar, Omittable, NoLift } from '@sheetxl/primitives';
|
|
|
6
6
|
* @param pr is the security's price per $100 face value.
|
|
7
7
|
* @param redemption is the security's redemption value per $100 face value.
|
|
8
8
|
* @param basis is the type of day count basis to use.
|
|
9
|
-
*
|
|
10
|
-
* @remarks
|
|
11
|
-
* `(1 − pr/redemption)` over YEARFRAC's year fraction of the two dates — the signed NASD count
|
|
12
|
-
* at basis 0, the 365/366 rules at basis 1 — measured against Excel 16.0 (fn-battery
|
|
13
|
-
* financial/DISC, 2026-08-28); a price above the redemption is a negative rate, and a
|
|
14
|
-
* zero-day 30/360 span (Mar 30 → Mar 31) is #NUM!. The arguments read as
|
|
15
|
-
* {@link readDiscountArgs} describes.
|
|
16
9
|
*/
|
|
17
10
|
export declare function DISC(settlement: NoLift<Omittable<AcceptError<Scalar>>>, maturity: NoLift<Omittable<AcceptError<Scalar>>>, pr: NoLift<Omittable<AcceptError<Scalar>>>, redemption: NoLift<Omittable<AcceptError<Scalar>>>, basis?: NoLift<Omittable<AcceptError<Scalar>>>): number;
|
|
18
11
|
/**
|
|
@@ -22,12 +15,6 @@ export declare function DISC(settlement: NoLift<Omittable<AcceptError<Scalar>>>,
|
|
|
22
15
|
* @param discount is the security's discount rate.
|
|
23
16
|
* @param redemption is the amount to be received at maturity.
|
|
24
17
|
* @param basis is the type of day count basis to use.
|
|
25
|
-
*
|
|
26
|
-
* @remarks
|
|
27
|
-
* `redemption − discount · redemption · yearfrac` with YEARFRAC's year fraction, measured
|
|
28
|
-
* against Excel 16.0 (fn-battery financial/PRICEDISC, 2026-08-28): a discount that exhausts
|
|
29
|
-
* the redemption gives a negative price, and the product overflowing is #NUM!. The arguments
|
|
30
|
-
* read as {@link readDiscountArgs} describes.
|
|
31
18
|
*/
|
|
32
19
|
export declare function PRICEDISC(settlement: NoLift<Omittable<AcceptError<Scalar>>>, maturity: NoLift<Omittable<AcceptError<Scalar>>>, discount: NoLift<Omittable<AcceptError<Scalar>>>, redemption: NoLift<Omittable<AcceptError<Scalar>>>, basis?: NoLift<Omittable<AcceptError<Scalar>>>): number;
|
|
33
20
|
/**
|
|
@@ -37,11 +24,6 @@ export declare function PRICEDISC(settlement: NoLift<Omittable<AcceptError<Scala
|
|
|
37
24
|
* @param pr is the security's price per $100 face value.
|
|
38
25
|
* @param redemption is the security's redemption value per $100 face value.
|
|
39
26
|
* @param basis is the type of day count basis to use.
|
|
40
|
-
*
|
|
41
|
-
* @remarks
|
|
42
|
-
* `(redemption − pr)/pr` over YEARFRAC's year fraction, measured against Excel 16.0 (fn-battery
|
|
43
|
-
* financial/YIELDDISC, 2026-08-28); a price above the redemption is a negative yield. The
|
|
44
|
-
* arguments read as {@link readDiscountArgs} describes.
|
|
45
27
|
*/
|
|
46
28
|
export declare function YIELDDISC(settlement: NoLift<Omittable<AcceptError<Scalar>>>, maturity: NoLift<Omittable<AcceptError<Scalar>>>, pr: NoLift<Omittable<AcceptError<Scalar>>>, redemption: NoLift<Omittable<AcceptError<Scalar>>>, basis?: NoLift<Omittable<AcceptError<Scalar>>>): number;
|
|
47
29
|
/**
|
|
@@ -51,11 +33,6 @@ export declare function YIELDDISC(settlement: NoLift<Omittable<AcceptError<Scala
|
|
|
51
33
|
* @param investment is the amount invested in the security.
|
|
52
34
|
* @param redemption is the amount to be received at maturity.
|
|
53
35
|
* @param basis is the type of day count basis to use.
|
|
54
|
-
*
|
|
55
|
-
* @remarks
|
|
56
|
-
* `(redemption − investment)/investment` over YEARFRAC's year fraction, measured against Excel 16.0
|
|
57
|
-
* (fn-battery financial/INTRATE, 2026-08-28); a redemption below the investment is a negative
|
|
58
|
-
* rate. The arguments read as {@link readDiscountArgs} describes.
|
|
59
36
|
*/
|
|
60
37
|
export declare function INTRATE(settlement: NoLift<Omittable<AcceptError<Scalar>>>, maturity: NoLift<Omittable<AcceptError<Scalar>>>, investment: NoLift<Omittable<AcceptError<Scalar>>>, redemption: NoLift<Omittable<AcceptError<Scalar>>>, basis?: NoLift<Omittable<AcceptError<Scalar>>>): number;
|
|
61
38
|
/**
|
|
@@ -65,12 +42,6 @@ export declare function INTRATE(settlement: NoLift<Omittable<AcceptError<Scalar>
|
|
|
65
42
|
* @param investment is the amount invested in the security.
|
|
66
43
|
* @param discount is the security's discount rate.
|
|
67
44
|
* @param basis is the type of day count basis to use.
|
|
68
|
-
*
|
|
69
|
-
* @remarks
|
|
70
|
-
* `investment / (1 − discount · yearfrac)` with YEARFRAC's year fraction, measured against
|
|
71
|
-
* Excel 16.0 (fn-battery financial/RECEIVED, 2026-08-28); a denominator at or below zero (a
|
|
72
|
-
* discount of 4 over a 90/360 quarter) is #NUM!. The arguments read as
|
|
73
|
-
* {@link readDiscountArgs} describes.
|
|
74
45
|
*/
|
|
75
46
|
export declare function RECEIVED(settlement: NoLift<Omittable<AcceptError<Scalar>>>, maturity: NoLift<Omittable<AcceptError<Scalar>>>, investment: NoLift<Omittable<AcceptError<Scalar>>>, discount: NoLift<Omittable<AcceptError<Scalar>>>, basis?: NoLift<Omittable<AcceptError<Scalar>>>): number;
|
|
76
47
|
/**
|
|
@@ -81,12 +52,6 @@ export declare function RECEIVED(settlement: NoLift<Omittable<AcceptError<Scalar
|
|
|
81
52
|
* @param rate is the interest rate.
|
|
82
53
|
* @param yld is the security's annual yield.
|
|
83
54
|
* @param basis is the type of day count basis to use.
|
|
84
|
-
*
|
|
85
|
-
* @remarks
|
|
86
|
-
* The doc's `(100 + DIM/B·rate·100) / (1 + DSM/B·yld) − A/B·rate·100`, measured against Excel
|
|
87
|
-
* 16.0 (fn-battery financial/PRICEMAT, 2026-08-28) with the counts {@link readMatArgs}
|
|
88
|
-
* describes (DSM is `DIM − A`); a coupon term that overflows is 0, so a rate of 1E307 prices
|
|
89
|
-
* the redemption alone.
|
|
90
55
|
*/
|
|
91
56
|
export declare function PRICEMAT(settlement: NoLift<Omittable<AcceptError<Scalar>>>, maturity: NoLift<Omittable<AcceptError<Scalar>>>, issue: NoLift<Omittable<AcceptError<Scalar>>>, rate: NoLift<Omittable<AcceptError<Scalar>>>, yld: NoLift<Omittable<AcceptError<Scalar>>>, basis?: NoLift<Omittable<AcceptError<Scalar>>>): number;
|
|
92
57
|
/**
|
|
@@ -97,11 +62,6 @@ export declare function PRICEMAT(settlement: NoLift<Omittable<AcceptError<Scalar
|
|
|
97
62
|
* @param rate is the interest rate.
|
|
98
63
|
* @param pr is the security's price per $100 face value.
|
|
99
64
|
* @param basis is the type of day count basis to use.
|
|
100
|
-
*
|
|
101
|
-
* @remarks
|
|
102
|
-
* PRICEMAT inverted in closed form, `((1 + DIM/B·rate) / (pr/100 + A/B·rate) − 1) / (DSM/B)`,
|
|
103
|
-
* measured against Excel 16.0 (fn-battery financial/YIELDMAT, 2026-08-28) with the counts
|
|
104
|
-
* {@link readMatArgs} describes.
|
|
105
65
|
*/
|
|
106
66
|
export declare function YIELDMAT(settlement: NoLift<Omittable<AcceptError<Scalar>>>, maturity: NoLift<Omittable<AcceptError<Scalar>>>, issue: NoLift<Omittable<AcceptError<Scalar>>>, rate: NoLift<Omittable<AcceptError<Scalar>>>, pr: NoLift<Omittable<AcceptError<Scalar>>>, basis?: NoLift<Omittable<AcceptError<Scalar>>>): number;
|
|
107
67
|
//# sourceMappingURL=SecurityMaturity.d.ts.map
|