@barchart/portfolio-api-common 1.29.2 → 1.29.3
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/lib/processing/PositionGroup.js +1 -1
- package/lib/processing/PositionItem.js +18 -16
- package/lib/serialization/PortfolioSchema.js +0 -1
- package/lib/serialization/PositionSchema.js +2 -1
- package/lib/serialization/PositionSummarySchema.js +0 -1
- package/lib/serialization/TransactionSchema.js +0 -1
- package/package.json +1 -1
|
@@ -775,7 +775,7 @@ module.exports = (() => {
|
|
|
775
775
|
updates.cashTotal = updates.cashTotal.add(translate(item, item.data.market));
|
|
776
776
|
}
|
|
777
777
|
|
|
778
|
-
updates.totalDivisor = updates.
|
|
778
|
+
updates.totalDivisor = updates.totalDivisor.add(translate(item, item.data.totalDivisor));
|
|
779
779
|
updates.periodDivisorCurrent = updates.periodDivisorCurrent.add(translate(item, item.data.periodDivisor));
|
|
780
780
|
updates.periodDivisorPrevious = updates.periodDivisorPrevious.add(translate(item, item.data.periodDivisorPrevious));
|
|
781
781
|
updates.periodDivisorPrevious2 = updates.periodDivisorPrevious2.add(translate(item, item.data.periodDivisorPrevious2));
|
|
@@ -447,7 +447,7 @@ module.exports = (() => {
|
|
|
447
447
|
|
|
448
448
|
const data = item._data;
|
|
449
449
|
|
|
450
|
-
data.initiate =
|
|
450
|
+
data.initiate = guessInitialDirection(position, item.previousSummaries, item.currentSummary);
|
|
451
451
|
|
|
452
452
|
data.quantity = snapshot.open;
|
|
453
453
|
data.previousPrice = position.previous || null;
|
|
@@ -498,7 +498,7 @@ module.exports = (() => {
|
|
|
498
498
|
data.periodPricePrevious = null;
|
|
499
499
|
}
|
|
500
500
|
|
|
501
|
-
data.totalDivisor = calculateTotalDivisor(position.instrument.type, data.initiate,
|
|
501
|
+
data.totalDivisor = calculateTotalDivisor(position.instrument.type, data.initiate, position);
|
|
502
502
|
}
|
|
503
503
|
|
|
504
504
|
function calculatePriceData(item, price) {
|
|
@@ -650,7 +650,11 @@ module.exports = (() => {
|
|
|
650
650
|
}
|
|
651
651
|
}
|
|
652
652
|
|
|
653
|
-
function
|
|
653
|
+
function guessInitialDirection(position, previousSummaries, currentSummary) {
|
|
654
|
+
if (position.snapshot.initial) {
|
|
655
|
+
return position.snapshot.initial;
|
|
656
|
+
}
|
|
657
|
+
|
|
654
658
|
const summaries = previousSummaries.concat(currentSummary);
|
|
655
659
|
|
|
656
660
|
const direction = summaries.reduce((accumulator, summary) => {
|
|
@@ -740,24 +744,22 @@ module.exports = (() => {
|
|
|
740
744
|
return returnRef;
|
|
741
745
|
}
|
|
742
746
|
|
|
743
|
-
function calculateTotalDivisor(type, direction,
|
|
744
|
-
|
|
747
|
+
function calculateTotalDivisor(type, direction, position) {
|
|
748
|
+
if (type === InstrumentType.CASH) {
|
|
749
|
+
return Decimal.ZERO;
|
|
750
|
+
}
|
|
745
751
|
|
|
746
|
-
|
|
747
|
-
// running for a previous period. However, the summary does not have buy and
|
|
748
|
-
// sell totals for the entire history. Could be added.
|
|
752
|
+
let divisor;
|
|
749
753
|
|
|
750
|
-
if (
|
|
751
|
-
|
|
752
|
-
|
|
753
|
-
|
|
754
|
-
returnRef = position.snapshot.buys.opposite();
|
|
755
|
-
}
|
|
754
|
+
if (direction === PositionDirection.SHORT) {
|
|
755
|
+
divisor = position.snapshot.sells;
|
|
756
|
+
} else if (direction === PositionDirection.LONG) {
|
|
757
|
+
divisor = position.snapshot.buys.opposite();
|
|
756
758
|
} else {
|
|
757
|
-
|
|
759
|
+
divisor = Decimal.ZERO;
|
|
758
760
|
}
|
|
759
761
|
|
|
760
|
-
return
|
|
762
|
+
return divisor;
|
|
761
763
|
}
|
|
762
764
|
|
|
763
765
|
function getPreviousSummary(previousSummaries, count) {
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
const Currency = require('@barchart/common-js/lang/Currency'),
|
|
2
2
|
DataType = require('@barchart/common-js/serialization/json/DataType'),
|
|
3
3
|
Enum = require('@barchart/common-js/lang/Enum'),
|
|
4
|
-
Schema = require('@barchart/common-js/serialization/json/Schema'),
|
|
5
4
|
SchemaBuilder = require('@barchart/common-js/serialization/json/builders/SchemaBuilder'),
|
|
6
5
|
Timezones = require('@barchart/common-js/lang/Timezones');
|
|
7
6
|
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
const Currency = require('@barchart/common-js/lang/Currency'),
|
|
2
2
|
DataType = require('@barchart/common-js/serialization/json/DataType'),
|
|
3
3
|
Enum = require('@barchart/common-js/lang/Enum'),
|
|
4
|
-
Schema = require('@barchart/common-js/serialization/json/Schema'),
|
|
5
4
|
SchemaBuilder = require('@barchart/common-js/serialization/json/builders/SchemaBuilder');
|
|
6
5
|
|
|
7
6
|
const UnitCode = require('@barchart/marketdata-api-js/lib/utilities/data/UnitCode');
|
|
@@ -121,6 +120,7 @@ module.exports = (() => {
|
|
|
121
120
|
.withField('snapshot.basis', DataType.DECIMAL)
|
|
122
121
|
.withField('snapshot.income', DataType.DECIMAL)
|
|
123
122
|
.withField('snapshot.value', DataType.DECIMAL)
|
|
123
|
+
.withField('snapshot.initial', DataType.forEnum(PositionDirection, 'PositionDirection'), true)
|
|
124
124
|
.withField('legacy.system', DataType.STRING, true)
|
|
125
125
|
.withField('legacy.user', DataType.STRING, true)
|
|
126
126
|
.withField('legacy.portfolio', DataType.STRING, true)
|
|
@@ -167,6 +167,7 @@ module.exports = (() => {
|
|
|
167
167
|
.withField('snapshot.basis', DataType.DECIMAL)
|
|
168
168
|
.withField('snapshot.income', DataType.DECIMAL)
|
|
169
169
|
.withField('snapshot.value', DataType.DECIMAL)
|
|
170
|
+
.withField('snapshot.initial', DataType.forEnum(PositionDirection, 'PositionDirection'), true)
|
|
170
171
|
.withField('system.calculate.processors', DataType.NUMBER, true)
|
|
171
172
|
.withField('system.locked', DataType.BOOLEAN, true)
|
|
172
173
|
.withField('previous', DataType.NUMBER, true)
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
const DataType = require('@barchart/common-js/serialization/json/DataType'),
|
|
2
2
|
Enum = require('@barchart/common-js/lang/Enum'),
|
|
3
|
-
Schema = require('@barchart/common-js/serialization/json/Schema'),
|
|
4
3
|
SchemaBuilder = require('@barchart/common-js/serialization/json/builders/SchemaBuilder');
|
|
5
4
|
|
|
6
5
|
const PositionDirection = require('./../data/PositionDirection'),
|
|
@@ -2,7 +2,6 @@ const is = require('@barchart/common-js/lang/is'),
|
|
|
2
2
|
Currency = require('@barchart/common-js/lang/Currency'),
|
|
3
3
|
DataType = require('@barchart/common-js/serialization/json/DataType'),
|
|
4
4
|
Enum = require('@barchart/common-js/lang/Enum'),
|
|
5
|
-
Schema = require('@barchart/common-js/serialization/json/Schema'),
|
|
6
5
|
SchemaBuilder = require('@barchart/common-js/serialization/json/builders/SchemaBuilder');
|
|
7
6
|
|
|
8
7
|
const InstrumentType = require('./../data/InstrumentType'),
|