@fintekkers/ledger-models 0.4.43 → 0.4.44
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/node/fintekkers/models/portfolio/portfolio_pb.d.ts +7 -15
- package/node/fintekkers/models/portfolio/portfolio_pb.js +35 -132
- package/node/fintekkers/models/position/position_filter_pb.d.ts +7 -15
- package/node/fintekkers/models/position/position_filter_pb.js +35 -132
- package/node/fintekkers/models/position/position_pb.d.ts +7 -15
- package/node/fintekkers/models/position/position_pb.js +35 -132
- package/node/fintekkers/models/price/price_pb.d.ts +7 -15
- package/node/fintekkers/models/price/price_pb.js +35 -132
- package/node/fintekkers/models/security/bond/issuance_pb.d.ts +7 -15
- package/node/fintekkers/models/security/bond/issuance_pb.js +35 -132
- package/node/fintekkers/models/security/identifier/identifier_pb.d.ts +7 -15
- package/node/fintekkers/models/security/identifier/identifier_pb.js +35 -132
- package/node/fintekkers/models/security/index_composition_pb.d.ts +7 -15
- package/node/fintekkers/models/security/index_composition_pb.js +35 -132
- package/node/fintekkers/models/security/security_pb.d.ts +7 -15
- package/node/fintekkers/models/security/security_pb.js +35 -132
- package/node/fintekkers/models/security/security_pb.test.js +4 -8
- package/node/fintekkers/models/security/security_pb.test.js.map +1 -1
- package/node/fintekkers/models/security/security_pb.test.ts +4 -5
- package/node/fintekkers/models/security/tenor_pb.d.ts +7 -15
- package/node/fintekkers/models/security/tenor_pb.js +35 -132
- package/node/fintekkers/models/strategy/strategy_allocation_pb.d.ts +7 -15
- package/node/fintekkers/models/strategy/strategy_allocation_pb.js +35 -132
- package/node/fintekkers/models/strategy/strategy_pb.d.ts +7 -15
- package/node/fintekkers/models/strategy/strategy_pb.js +35 -132
- package/node/fintekkers/models/transaction/transaction_pb.d.ts +7 -15
- package/node/fintekkers/models/transaction/transaction_pb.js +35 -132
- package/node/fintekkers/models/util/api/api_key_pb.d.ts +7 -15
- package/node/fintekkers/models/util/api/api_key_pb.js +35 -132
- package/node/fintekkers/models/util/date_range_pb.d.ts +7 -15
- package/node/fintekkers/models/util/date_range_pb.js +35 -132
- package/node/fintekkers/models/util/decimal_value_pb.d.ts +0 -5
- package/node/fintekkers/models/util/decimal_value_pb.js +0 -30
- package/node/fintekkers/models/util/lock/node_partition_pb.d.ts +7 -15
- package/node/fintekkers/models/util/lock/node_partition_pb.js +35 -132
- package/node/fintekkers/models/util/lock/node_state_pb.d.ts +7 -15
- package/node/fintekkers/models/util/lock/node_state_pb.js +35 -132
- package/node/fintekkers/models/util/object_type_pb.d.ts +0 -3
- package/node/fintekkers/models/util/object_type_pb.js +0 -28
- package/node/fintekkers/models/util/version_grpc_pb.js +1 -0
- package/node/fintekkers/models/util/version_pb.d.ts +33 -0
- package/node/fintekkers/models/util/version_pb.js +236 -0
- package/node/fintekkers/requests/index_composition/create_index_composition_request_pb.d.ts +13 -30
- package/node/fintekkers/requests/index_composition/create_index_composition_request_pb.js +68 -264
- package/node/fintekkers/requests/index_composition/get_index_composition_request_pb.d.ts +13 -30
- package/node/fintekkers/requests/index_composition/get_index_composition_request_pb.js +68 -264
- package/node/fintekkers/requests/portfolio/create_portfolio_request_pb.d.ts +7 -15
- package/node/fintekkers/requests/portfolio/create_portfolio_request_pb.js +35 -132
- package/node/fintekkers/requests/portfolio/create_portfolio_response_pb.d.ts +7 -15
- package/node/fintekkers/requests/portfolio/create_portfolio_response_pb.js +35 -132
- package/node/fintekkers/requests/portfolio/query_portfolio_request_pb.d.ts +7 -15
- package/node/fintekkers/requests/portfolio/query_portfolio_request_pb.js +35 -132
- package/node/fintekkers/requests/portfolio/query_portfolio_response_pb.d.ts +7 -15
- package/node/fintekkers/requests/portfolio/query_portfolio_response_pb.js +35 -132
- package/node/fintekkers/requests/position/query_position_request_pb.d.ts +7 -15
- package/node/fintekkers/requests/position/query_position_request_pb.js +35 -132
- package/node/fintekkers/requests/position/query_position_response_pb.d.ts +7 -15
- package/node/fintekkers/requests/position/query_position_response_pb.js +35 -132
- package/node/fintekkers/requests/price/create_price_request_pb.d.ts +7 -15
- package/node/fintekkers/requests/price/create_price_request_pb.js +35 -132
- package/node/fintekkers/requests/price/create_price_response_pb.d.ts +7 -15
- package/node/fintekkers/requests/price/create_price_response_pb.js +35 -132
- package/node/fintekkers/requests/price/query_price_request_pb.d.ts +7 -15
- package/node/fintekkers/requests/price/query_price_request_pb.js +35 -132
- package/node/fintekkers/requests/price/query_price_response_pb.d.ts +7 -15
- package/node/fintekkers/requests/price/query_price_response_pb.js +35 -132
- package/node/fintekkers/requests/security/create_security_request_pb.d.ts +7 -15
- package/node/fintekkers/requests/security/create_security_request_pb.js +35 -132
- package/node/fintekkers/requests/security/create_security_response_pb.d.ts +7 -15
- package/node/fintekkers/requests/security/create_security_response_pb.js +35 -132
- package/node/fintekkers/requests/security/get_field_values_request_pb.d.ts +7 -15
- package/node/fintekkers/requests/security/get_field_values_request_pb.js +35 -132
- package/node/fintekkers/requests/security/get_field_values_response_pb.d.ts +7 -15
- package/node/fintekkers/requests/security/get_field_values_response_pb.js +35 -132
- package/node/fintekkers/requests/security/get_fields_response_pb.d.ts +7 -15
- package/node/fintekkers/requests/security/get_fields_response_pb.js +35 -132
- package/node/fintekkers/requests/security/query_security_request_pb.d.ts +7 -15
- package/node/fintekkers/requests/security/query_security_request_pb.js +35 -132
- package/node/fintekkers/requests/security/query_security_response_pb.d.ts +7 -15
- package/node/fintekkers/requests/security/query_security_response_pb.js +35 -132
- package/node/fintekkers/requests/transaction/create_transaction_request_pb.d.ts +7 -15
- package/node/fintekkers/requests/transaction/create_transaction_request_pb.js +35 -132
- package/node/fintekkers/requests/transaction/create_transaction_response_pb.d.ts +7 -15
- package/node/fintekkers/requests/transaction/create_transaction_response_pb.js +35 -132
- package/node/fintekkers/requests/transaction/query_transaction_request_pb.d.ts +7 -15
- package/node/fintekkers/requests/transaction/query_transaction_request_pb.js +35 -132
- package/node/fintekkers/requests/transaction/query_transaction_response_pb.d.ts +7 -15
- package/node/fintekkers/requests/transaction/query_transaction_response_pb.js +35 -132
- package/node/fintekkers/requests/util/delete_request_pb.d.ts +13 -30
- package/node/fintekkers/requests/util/delete_request_pb.js +68 -264
- package/node/fintekkers/requests/util/lock/lock_request_pb.d.ts +7 -15
- package/node/fintekkers/requests/util/lock/lock_request_pb.js +35 -132
- package/node/fintekkers/requests/util/lock/lock_response_pb.d.ts +7 -15
- package/node/fintekkers/requests/util/lock/lock_response_pb.js +35 -132
- package/node/fintekkers/requests/valuation/curve_request_pb.d.ts +7 -15
- package/node/fintekkers/requests/valuation/curve_request_pb.js +35 -132
- package/node/fintekkers/requests/valuation/curve_response_pb.d.ts +7 -15
- package/node/fintekkers/requests/valuation/curve_response_pb.js +35 -132
- package/node/fintekkers/requests/valuation/product_inputs.test.js +10 -17
- package/node/fintekkers/requests/valuation/product_inputs.test.js.map +1 -1
- package/node/fintekkers/requests/valuation/product_inputs.test.ts +10 -16
- package/node/fintekkers/requests/valuation/valuation_request_pb.d.ts +7 -15
- package/node/fintekkers/requests/valuation/valuation_request_pb.js +35 -132
- package/node/fintekkers/requests/valuation/valuation_response_pb.d.ts +7 -15
- package/node/fintekkers/requests/valuation/valuation_response_pb.js +35 -132
- package/node/wrappers/models/portfolio/portfolio.test.js +0 -2
- package/node/wrappers/models/portfolio/portfolio.test.js.map +1 -1
- package/node/wrappers/models/portfolio/portfolio.test.ts +0 -2
- package/node/wrappers/models/portfolio-price-transaction.lazy-hydrate.test.js +2 -3
- package/node/wrappers/models/portfolio-price-transaction.lazy-hydrate.test.js.map +1 -1
- package/node/wrappers/models/portfolio-price-transaction.lazy-hydrate.test.ts +2 -2
- package/node/wrappers/models/position/position.test.js +5 -6
- package/node/wrappers/models/position/position.test.js.map +1 -1
- package/node/wrappers/models/position/position.test.ts +5 -4
- package/node/wrappers/models/position/positionfilter.js +1 -1
- package/node/wrappers/models/position/positionfilter.js.map +1 -1
- package/node/wrappers/models/position/positionfilter.test.js +4 -2
- package/node/wrappers/models/position/positionfilter.test.js.map +1 -1
- package/node/wrappers/models/position/positionfilter.test.ts +3 -2
- package/node/wrappers/models/position/positionfilter.ts +1 -1
- package/node/wrappers/models/price/Price.cash.test.js +4 -5
- package/node/wrappers/models/price/Price.cash.test.js.map +1 -1
- package/node/wrappers/models/price/Price.cash.test.ts +2 -3
- package/node/wrappers/models/price/Price.js +2 -2
- package/node/wrappers/models/price/Price.js.map +1 -1
- package/node/wrappers/models/price/Price.test.js +4 -2
- package/node/wrappers/models/price/Price.test.js.map +1 -1
- package/node/wrappers/models/price/Price.test.ts +4 -2
- package/node/wrappers/models/price/Price.ts +2 -2
- package/node/wrappers/models/price/price_rules.test.js +9 -4
- package/node/wrappers/models/price/price_rules.test.js.map +1 -1
- package/node/wrappers/models/price/price_rules.test.ts +9 -4
- package/node/wrappers/models/security/BondSecurity.priceScale.test.js +2 -4
- package/node/wrappers/models/security/BondSecurity.priceScale.test.js.map +1 -1
- package/node/wrappers/models/security/BondSecurity.priceScale.test.ts +2 -3
- package/node/wrappers/models/security/BondSecurity.test.js +7 -13
- package/node/wrappers/models/security/BondSecurity.test.js.map +1 -1
- package/node/wrappers/models/security/BondSecurity.test.ts +7 -12
- package/node/wrappers/models/security/IndexSecurity.test.js +0 -8
- package/node/wrappers/models/security/IndexSecurity.test.js.map +1 -1
- package/node/wrappers/models/security/IndexSecurity.test.ts +0 -8
- package/node/wrappers/models/security/Issuance.test.js +6 -6
- package/node/wrappers/models/security/Issuance.test.js.map +1 -1
- package/node/wrappers/models/security/Issuance.test.ts +6 -5
- package/node/wrappers/models/security/MortgageBackedSecurity.fromPricerInputs.test.js +13 -14
- package/node/wrappers/models/security/MortgageBackedSecurity.fromPricerInputs.test.js.map +1 -1
- package/node/wrappers/models/security/MortgageBackedSecurity.fromPricerInputs.test.ts +13 -12
- package/node/wrappers/models/security/security-roundtrip.test.js +9 -21
- package/node/wrappers/models/security/security-roundtrip.test.js.map +1 -1
- package/node/wrappers/models/security/security-roundtrip.test.ts +9 -20
- package/node/wrappers/models/security/security.identifiers.test.js +0 -2
- package/node/wrappers/models/security/security.identifiers.test.js.map +1 -1
- package/node/wrappers/models/security/security.identifiers.test.ts +0 -2
- package/node/wrappers/models/security/security.tbillCoupon.test.js +3 -2
- package/node/wrappers/models/security/security.tbillCoupon.test.js.map +1 -1
- package/node/wrappers/models/security/security.tbillCoupon.test.ts +3 -2
- package/node/wrappers/models/security/security.test.js +14 -14
- package/node/wrappers/models/security/security.test.js.map +1 -1
- package/node/wrappers/models/security/security.test.ts +14 -13
- package/node/wrappers/models/transaction/transaction.derived.test.js +3 -9
- package/node/wrappers/models/transaction/transaction.derived.test.js.map +1 -1
- package/node/wrappers/models/transaction/transaction.derived.test.ts +3 -8
- package/node/wrappers/models/transaction/transaction.js +2 -2
- package/node/wrappers/models/transaction/transaction.js.map +1 -1
- package/node/wrappers/models/transaction/transaction.test.js +3 -3
- package/node/wrappers/models/transaction/transaction.test.js.map +1 -1
- package/node/wrappers/models/transaction/transaction.test.ts +3 -2
- package/node/wrappers/models/transaction/transaction.ts +2 -2
- package/node/wrappers/models/transaction/transaction_constructor.test.js +6 -9
- package/node/wrappers/models/transaction/transaction_constructor.test.js.map +1 -1
- package/node/wrappers/models/transaction/transaction_constructor.test.ts +6 -7
- package/node/wrappers/models/transaction/transaction_price_defaults.test.js +2 -10
- package/node/wrappers/models/transaction/transaction_price_defaults.test.js.map +1 -1
- package/node/wrappers/models/transaction/transaction_price_defaults.test.ts +2 -9
- package/node/wrappers/models/transaction/transaction_security_defaults.test.js +0 -6
- package/node/wrappers/models/transaction/transaction_security_defaults.test.js.map +1 -1
- package/node/wrappers/models/transaction/transaction_security_defaults.test.ts +0 -6
- package/node/wrappers/models/utils/date.test.js +0 -2
- package/node/wrappers/models/utils/date.test.js.map +1 -1
- package/node/wrappers/models/utils/date.test.ts +0 -2
- package/node/wrappers/models/utils/datetime.test.js +0 -2
- package/node/wrappers/models/utils/datetime.test.js.map +1 -1
- package/node/wrappers/models/utils/datetime.test.ts +0 -2
- package/node/wrappers/models/utils/decimal.d.ts +9 -28
- package/node/wrappers/models/utils/decimal.js +13 -52
- package/node/wrappers/models/utils/decimal.js.map +1 -1
- package/node/wrappers/models/utils/decimal.test.js +12 -68
- package/node/wrappers/models/utils/decimal.test.js.map +1 -1
- package/node/wrappers/models/utils/decimal.test.ts +14 -76
- package/node/wrappers/models/utils/decimal.ts +12 -60
- package/node/wrappers/models/utils/serialization.test.js +0 -4
- package/node/wrappers/models/utils/serialization.test.js.map +1 -1
- package/node/wrappers/models/utils/serialization.test.ts +0 -4
- package/node/wrappers/requests/position/QueryPositionRequest.js +1 -1
- package/node/wrappers/requests/position/QueryPositionRequest.js.map +1 -1
- package/node/wrappers/requests/position/QueryPositionRequest.ts +1 -1
- package/node/wrappers/requests/query-paging.test.js +4 -28
- package/node/wrappers/requests/query-paging.test.js.map +1 -1
- package/node/wrappers/requests/query-paging.test.ts +3 -36
- package/node/wrappers/services/portfolio-service/PortfolioService.js +3 -3
- package/node/wrappers/services/portfolio-service/PortfolioService.js.map +1 -1
- package/node/wrappers/services/portfolio-service/PortfolioService.ts +3 -3
- package/node/wrappers/services/portfolio-service/portfolioService.test.js +0 -2
- package/node/wrappers/services/portfolio-service/portfolioService.test.js.map +1 -1
- package/node/wrappers/services/portfolio-service/portfolioService.test.ts +0 -2
- package/node/wrappers/services/price-service/PriceService.js +3 -3
- package/node/wrappers/services/price-service/PriceService.js.map +1 -1
- package/node/wrappers/services/price-service/PriceService.ts +3 -3
- package/node/wrappers/services/price-service/price-wrapper.test.js +2 -6
- package/node/wrappers/services/price-service/price-wrapper.test.js.map +1 -1
- package/node/wrappers/services/price-service/price-wrapper.test.ts +2 -6
- package/node/wrappers/services/price-service/price.test.js +8 -17
- package/node/wrappers/services/price-service/price.test.js.map +1 -1
- package/node/wrappers/services/price-service/price.test.ts +8 -14
- package/node/wrappers/services/searchWithSecurities.test.js +2 -7
- package/node/wrappers/services/searchWithSecurities.test.js.map +1 -1
- package/node/wrappers/services/searchWithSecurities.test.ts +2 -6
- package/node/wrappers/services/security-service/SecurityService.js +3 -3
- package/node/wrappers/services/security-service/SecurityService.js.map +1 -1
- package/node/wrappers/services/security-service/SecurityService.ts +3 -3
- package/node/wrappers/services/security-service/security.test.js +3 -7
- package/node/wrappers/services/security-service/security.test.js.map +1 -1
- package/node/wrappers/services/security-service/security.test.ts +3 -6
- package/node/wrappers/services/transaction-service/TransactionService.js +3 -3
- package/node/wrappers/services/transaction-service/TransactionService.js.map +1 -1
- package/node/wrappers/services/transaction-service/TransactionService.ts +3 -3
- package/node/wrappers/services/transaction-service/transaction.test.js +3 -8
- package/node/wrappers/services/transaction-service/transaction.test.js.map +1 -1
- package/node/wrappers/services/transaction-service/transaction.test.ts +3 -6
- package/node/wrappers/util/link-resolver.js +3 -3
- package/node/wrappers/util/link-resolver.js.map +1 -1
- package/node/wrappers/util/link-resolver.test.js +4 -13
- package/node/wrappers/util/link-resolver.test.js.map +1 -1
- package/node/wrappers/util/link-resolver.test.ts +4 -12
- package/node/wrappers/util/link-resolver.ts +3 -3
- package/node/wrappers/util/object-types.d.ts +21 -47
- package/node/wrappers/util/object-types.js +19 -178
- package/node/wrappers/util/object-types.js.map +1 -1
- package/node/wrappers/util/object-types.test.js +50 -151
- package/node/wrappers/util/object-types.test.js.map +1 -1
- package/node/wrappers/util/object-types.test.ts +55 -170
- package/node/wrappers/util/object-types.ts +28 -182
- package/package.json +1 -1
- package/node/wrappers/models/position/position.test copy.js +0 -107
- package/node/wrappers/models/position/position.test copy.js.map +0 -1
- package/node/wrappers/models/utils/decimal.legacy.test.d.ts +0 -1
- package/node/wrappers/models/utils/decimal.legacy.test.js +0 -174
- package/node/wrappers/models/utils/decimal.legacy.test.js.map +0 -1
- package/node/wrappers/models/utils/decimal.legacy.test.ts +0 -158
- package/node/wrappers/models/utils/decimal.typings.test.d.ts +0 -1
- package/node/wrappers/models/utils/decimal.typings.test.js +0 -39
- package/node/wrappers/models/utils/decimal.typings.test.js.map +0 -1
- package/node/wrappers/models/utils/decimal.typings.test.ts +0 -16
- package/node/wrappers/util/object-type-legacy.json +0 -21
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"price_rules.test.js","sourceRoot":"","sources":["price_rules.test.ts"],"names":[],"mappings":";AAAA,mFAAmF;;AAEnF,wEAAuE;AACvE,kFAAgF;AAChF,iFAAgF;AAChF,uFAAqF;AACrF,qEAAoE;AACpE,sCAAiD;AACjD,wCAAqC;AACrC,+CAAuD;
|
|
1
|
+
{"version":3,"file":"price_rules.test.js","sourceRoot":"","sources":["price_rules.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,12 +8,13 @@ import { UUIDProto } from '../../../fintekkers/models/util/uuid_pb';
|
|
|
8
8
|
import { ModelValidationError } from '../errors';
|
|
9
9
|
import { UUID } from '../utils/uuid';
|
|
10
10
|
import { requireValid, validate } from './price_rules';
|
|
11
|
+
import { encodeDecimal, parseDecimalString } from '../utils/decimal';
|
|
11
12
|
|
|
12
13
|
const PRICE_ID = '6a1d2c3e-4b5f-4a6d-8e7f-9a0b1c2d3e4f';
|
|
13
14
|
const SECURITY_ID = '1f0e8a4c-58b1-4d0e-9a3c-7d2b6e5f4a10';
|
|
14
15
|
|
|
15
16
|
function decimal(value: string): DecimalValueProto {
|
|
16
|
-
return
|
|
17
|
+
return encodeDecimal(parseDecimalString(value));
|
|
17
18
|
}
|
|
18
19
|
|
|
19
20
|
/** A price that passes every rule. */
|
|
@@ -54,15 +55,19 @@ describe('price_rules.validate', () => {
|
|
|
54
55
|
});
|
|
55
56
|
|
|
56
57
|
test('empty price gives one violation on price', () => {
|
|
57
|
-
expect(fields(valid().setPrice(
|
|
58
|
+
expect(fields(valid().setPrice(new DecimalValueProto()))).toEqual(['price']);
|
|
58
59
|
});
|
|
59
60
|
|
|
60
61
|
test('zero price is valid', () => {
|
|
61
62
|
expect(fields(valid().setPrice(decimal('0')))).toEqual([]);
|
|
62
63
|
});
|
|
63
64
|
|
|
64
|
-
test.each([
|
|
65
|
-
|
|
65
|
+
test.each([
|
|
66
|
+
['negative', decimal('-1')],
|
|
67
|
+
// Over the scale cap: set, but it does not decode.
|
|
68
|
+
['over_cap', new DecimalValueProto().setUnscaledValue(new Uint8Array([1])).setScale(5000)],
|
|
69
|
+
])('price value %s is not checked', (_name, value) => {
|
|
70
|
+
expect(fields(valid().setPrice(value))).toEqual([]);
|
|
66
71
|
});
|
|
67
72
|
|
|
68
73
|
test('UNKNOWN_PRICE_TYPE gives one violation on price_type', () => {
|
|
@@ -7,11 +7,11 @@ const assert = require("assert");
|
|
|
7
7
|
const BondSecurity_1 = __importDefault(require("./BondSecurity"));
|
|
8
8
|
const security_pb_1 = require("../../../fintekkers/models/security/security_pb");
|
|
9
9
|
const product_type_pb_1 = require("../../../fintekkers/models/security/product_type_pb");
|
|
10
|
-
const decimal_value_pb_1 = require("../../../fintekkers/models/util/decimal_value_pb");
|
|
11
10
|
const local_date_pb_1 = require("../../../fintekkers/models/util/local_date_pb");
|
|
12
11
|
const uuid_1 = require("../utils/uuid");
|
|
13
12
|
const datetime_1 = require("../utils/datetime");
|
|
14
13
|
const decimal_js_1 = require("decimal.js");
|
|
14
|
+
const decimal_1 = require("../utils/decimal");
|
|
15
15
|
test('test BondSecurity getPriceScaleFactor', () => {
|
|
16
16
|
testGetPriceScaleFactor();
|
|
17
17
|
});
|
|
@@ -23,13 +23,11 @@ function testGetPriceScaleFactor() {
|
|
|
23
23
|
}
|
|
24
24
|
function createDummyBondSecurity() {
|
|
25
25
|
const securityProto = new security_pb_1.SecurityProto();
|
|
26
|
-
securityProto.setObjectClass('Security');
|
|
27
|
-
securityProto.setVersion('0.0.1');
|
|
28
26
|
securityProto.setUuid(uuid_1.UUID.random().toUUIDProto());
|
|
29
27
|
securityProto.setProductType(product_type_pb_1.ProductTypeProto.TREASURY_NOTE);
|
|
30
28
|
securityProto.setAsOf(datetime_1.ZonedDateTime.now().toProto());
|
|
31
29
|
const bond = new security_pb_1.BondDetailsProto();
|
|
32
|
-
bond.setFaceValue(
|
|
30
|
+
bond.setFaceValue((0, decimal_1.encodeDecimal)((0, decimal_1.parseDecimalString)('1000.00')));
|
|
33
31
|
bond.setIssueDate(new local_date_pb_1.LocalDateProto().setYear(2021).setMonth(1).setDay(1));
|
|
34
32
|
bond.setMaturityDate(new local_date_pb_1.LocalDateProto().setYear(2031).setMonth(1).setDay(1));
|
|
35
33
|
securityProto.setBondDetails(bond);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BondSecurity.priceScale.test.js","sourceRoot":"","sources":["BondSecurity.priceScale.test.ts"],"names":[],"mappings":";;;;;AAAA,iCAAkC;AAClC,kEAA0C;AAC1C,iFAAkG;AAClG,yFAAuF;
|
|
1
|
+
{"version":3,"file":"BondSecurity.priceScale.test.js","sourceRoot":"","sources":["BondSecurity.priceScale.test.ts"],"names":[],"mappings":";;;;;AAAA,iCAAkC;AAClC,kEAA0C;AAC1C,iFAAkG;AAClG,yFAAuF;AAEvF,iFAA+E;AAC/E,wCAAqC;AACrC,gDAAkD;AAClD,2CAAqC;AACrC,8CAAqE;AAErE,IAAI,CAAC,uCAAuC,EAAE,GAAG,EAAE;IAC/C,uBAAuB,EAAE,CAAC;AAC9B,CAAC,CAAC,CAAC;AAEH,SAAS,uBAAuB;IAC5B,MAAM,YAAY,GAAG,uBAAuB,EAAE,CAAC;IAC/C,MAAM,gBAAgB,GAAG,YAAY,CAAC,mBAAmB,EAAE,CAAC;IAE5D,8CAA8C;IAC9C,MAAM,CAAC,gBAAgB,CAAC,MAAM,CAAC,IAAI,oBAAO,CAAC,MAAM,CAAC,CAAC,EAC/C,yCAAyC,gBAAgB,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;AAChF,CAAC;AAED,SAAS,uBAAuB;IAC5B,MAAM,aAAa,GAAG,IAAI,2BAAa,EAAE,CAAC;IAC1C,aAAa,CAAC,OAAO,CAAC,WAAI,CAAC,MAAM,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC;IACnD,aAAa,CAAC,cAAc,CAAC,kCAAgB,CAAC,aAAa,CAAC,CAAC;IAC7D,aAAa,CAAC,OAAO,CAAC,wBAAa,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC;IACrD,MAAM,IAAI,GAAG,IAAI,8BAAgB,EAAE,CAAC;IACpC,IAAI,CAAC,YAAY,CAAC,IAAA,uBAAa,EAAC,IAAA,4BAAkB,EAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IAChE,IAAI,CAAC,YAAY,CAAC,IAAI,8BAAc,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5E,IAAI,CAAC,eAAe,CAAC,IAAI,8BAAc,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/E,aAAa,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;IAEnC,OAAO,IAAI,sBAAY,CAAC,aAAa,CAAC,CAAC;AAC3C,CAAC"}
|
|
@@ -7,6 +7,7 @@ import { LocalDateProto } from '../../../fintekkers/models/util/local_date_pb';
|
|
|
7
7
|
import { UUID } from '../utils/uuid';
|
|
8
8
|
import { ZonedDateTime } from '../utils/datetime';
|
|
9
9
|
import { Decimal } from 'decimal.js';
|
|
10
|
+
import { encodeDecimal, parseDecimalString } from '../utils/decimal';
|
|
10
11
|
|
|
11
12
|
test('test BondSecurity getPriceScaleFactor', () => {
|
|
12
13
|
testGetPriceScaleFactor();
|
|
@@ -23,13 +24,11 @@ function testGetPriceScaleFactor(): void {
|
|
|
23
24
|
|
|
24
25
|
function createDummyBondSecurity(): BondSecurity {
|
|
25
26
|
const securityProto = new SecurityProto();
|
|
26
|
-
securityProto.setObjectClass('Security');
|
|
27
|
-
securityProto.setVersion('0.0.1');
|
|
28
27
|
securityProto.setUuid(UUID.random().toUUIDProto());
|
|
29
28
|
securityProto.setProductType(ProductTypeProto.TREASURY_NOTE);
|
|
30
29
|
securityProto.setAsOf(ZonedDateTime.now().toProto());
|
|
31
30
|
const bond = new BondDetailsProto();
|
|
32
|
-
bond.setFaceValue(
|
|
31
|
+
bond.setFaceValue(encodeDecimal(parseDecimalString('1000.00')));
|
|
33
32
|
bond.setIssueDate(new LocalDateProto().setYear(2021).setMonth(1).setDay(1));
|
|
34
33
|
bond.setMaturityDate(new LocalDateProto().setYear(2031).setMonth(1).setDay(1));
|
|
35
34
|
securityProto.setBondDetails(bond);
|
|
@@ -11,9 +11,9 @@ const product_type_pb_1 = require("../../../fintekkers/models/security/product_t
|
|
|
11
11
|
const coupon_type_pb_1 = require("../../../fintekkers/models/security/coupon_type_pb");
|
|
12
12
|
const coupon_frequency_pb_1 = require("../../../fintekkers/models/security/coupon_frequency_pb");
|
|
13
13
|
const local_date_pb_1 = require("../../../fintekkers/models/util/local_date_pb");
|
|
14
|
-
const decimal_value_pb_1 = require("../../../fintekkers/models/util/decimal_value_pb");
|
|
15
14
|
const uuid_1 = require("../utils/uuid");
|
|
16
15
|
const tenor_type_pb_1 = require("../../../fintekkers/models/security/tenor_type_pb");
|
|
16
|
+
const decimal_1 = require("../utils/decimal");
|
|
17
17
|
test('test Security.create returns BondSecurity with correct coupon type and frequency', () => {
|
|
18
18
|
testBondSecurityCreation();
|
|
19
19
|
});
|
|
@@ -26,8 +26,6 @@ test('test BondSecurity.getTenor() returns correct Tenor for 10-year bond with a
|
|
|
26
26
|
function testBondSecurityCreation() {
|
|
27
27
|
// Create a SecurityProto with BOND_SECURITY type, coupon type, and coupon frequency
|
|
28
28
|
const securityProto = new security_pb_1.SecurityProto();
|
|
29
|
-
securityProto.setObjectClass('Security');
|
|
30
|
-
securityProto.setVersion('0.0.1');
|
|
31
29
|
securityProto.setUuid(uuid_1.UUID.random().toUUIDProto());
|
|
32
30
|
securityProto.setProductType(product_type_pb_1.ProductTypeProto.TREASURY_NOTE);
|
|
33
31
|
securityProto.setAssetClass('FixedIncome');
|
|
@@ -35,8 +33,8 @@ function testBondSecurityCreation() {
|
|
|
35
33
|
const bond = new security_pb_1.BondDetailsProto();
|
|
36
34
|
bond.setCouponType(coupon_type_pb_1.CouponTypeProto.FIXED);
|
|
37
35
|
bond.setCouponFrequency(coupon_frequency_pb_1.CouponFrequencyProto.SEMIANNUALLY);
|
|
38
|
-
bond.setCouponRate(
|
|
39
|
-
bond.setFaceValue(
|
|
36
|
+
bond.setCouponRate((0, decimal_1.encodeDecimal)((0, decimal_1.parseDecimalString)('0.05')));
|
|
37
|
+
bond.setFaceValue((0, decimal_1.encodeDecimal)((0, decimal_1.parseDecimalString)('1000.00')));
|
|
40
38
|
bond.setIssueDate(new local_date_pb_1.LocalDateProto().setYear(2021).setMonth(1).setDay(1));
|
|
41
39
|
bond.setMaturityDate(new local_date_pb_1.LocalDateProto().setYear(2031).setMonth(1).setDay(1));
|
|
42
40
|
securityProto.setBondDetails(bond);
|
|
@@ -56,8 +54,6 @@ function testBondSecurityCreation() {
|
|
|
56
54
|
function testBondSecurityTenor() {
|
|
57
55
|
// Create a SecurityProto with BOND_SECURITY type and dates for a 10-year bond
|
|
58
56
|
const securityProto = new security_pb_1.SecurityProto();
|
|
59
|
-
securityProto.setObjectClass('Security');
|
|
60
|
-
securityProto.setVersion('0.0.1');
|
|
61
57
|
securityProto.setUuid(uuid_1.UUID.random().toUUIDProto());
|
|
62
58
|
securityProto.setProductType(product_type_pb_1.ProductTypeProto.TREASURY_NOTE);
|
|
63
59
|
securityProto.setAssetClass('FixedIncome');
|
|
@@ -65,8 +61,8 @@ function testBondSecurityTenor() {
|
|
|
65
61
|
const bond = new security_pb_1.BondDetailsProto();
|
|
66
62
|
bond.setCouponType(coupon_type_pb_1.CouponTypeProto.FIXED);
|
|
67
63
|
bond.setCouponFrequency(coupon_frequency_pb_1.CouponFrequencyProto.SEMIANNUALLY);
|
|
68
|
-
bond.setCouponRate(
|
|
69
|
-
bond.setFaceValue(
|
|
64
|
+
bond.setCouponRate((0, decimal_1.encodeDecimal)((0, decimal_1.parseDecimalString)('0.05')));
|
|
65
|
+
bond.setFaceValue((0, decimal_1.encodeDecimal)((0, decimal_1.parseDecimalString)('1000.00')));
|
|
70
66
|
// Set issue date: January 1, 2021
|
|
71
67
|
bond.setIssueDate(new local_date_pb_1.LocalDateProto().setYear(2021).setMonth(1).setDay(1));
|
|
72
68
|
// Set maturity date: January 1, 2031 (exactly 10 years later)
|
|
@@ -96,8 +92,6 @@ function testBondSecurityTenor() {
|
|
|
96
92
|
assert(tenorString === 'TERM: 10Y', `Expected "TERM: 10Y", got "${tenorString}"`);
|
|
97
93
|
// Test with a bond that has months and days
|
|
98
94
|
const securityProto2 = new security_pb_1.SecurityProto();
|
|
99
|
-
securityProto2.setObjectClass('Security');
|
|
100
|
-
securityProto2.setVersion('0.0.1');
|
|
101
95
|
securityProto2.setUuid(uuid_1.UUID.random().toUUIDProto());
|
|
102
96
|
securityProto2.setProductType(product_type_pb_1.ProductTypeProto.TREASURY_NOTE);
|
|
103
97
|
securityProto2.setAssetClass('FixedIncome');
|
|
@@ -105,8 +99,8 @@ function testBondSecurityTenor() {
|
|
|
105
99
|
const bond2 = new security_pb_1.BondDetailsProto();
|
|
106
100
|
bond2.setCouponType(coupon_type_pb_1.CouponTypeProto.FIXED);
|
|
107
101
|
bond2.setCouponFrequency(coupon_frequency_pb_1.CouponFrequencyProto.SEMIANNUALLY);
|
|
108
|
-
bond2.setCouponRate(
|
|
109
|
-
bond2.setFaceValue(
|
|
102
|
+
bond2.setCouponRate((0, decimal_1.encodeDecimal)((0, decimal_1.parseDecimalString)('0.05')));
|
|
103
|
+
bond2.setFaceValue((0, decimal_1.encodeDecimal)((0, decimal_1.parseDecimalString)('1000.00')));
|
|
110
104
|
// Set issue date: January 15, 2021
|
|
111
105
|
bond2.setIssueDate(new local_date_pb_1.LocalDateProto().setYear(2021).setMonth(1).setDay(15));
|
|
112
106
|
// Set maturity date: July 20, 2023 (2 years, 6 months, 5 days)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BondSecurity.test.js","sourceRoot":"","sources":["BondSecurity.test.ts"],"names":[],"mappings":";;;;;AAAA,iCAAkC;AAClC,0DAAkC;AAClC,kEAA0C;AAC1C,iFAAkG;AAClG,yFAAuF;AACvF,uFAAqF;AACrF,iGAA+F;AAC/F,iFAA+E;
|
|
1
|
+
{"version":3,"file":"BondSecurity.test.js","sourceRoot":"","sources":["BondSecurity.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,6 +10,7 @@ import { DecimalValueProto } from '../../../fintekkers/models/util/decimal_value
|
|
|
10
10
|
import { UUID } from '../utils/uuid';
|
|
11
11
|
import { CouponType } from './coupon_type';
|
|
12
12
|
import { TenorTypeProto } from '../../../fintekkers/models/security/tenor_type_pb';
|
|
13
|
+
import { encodeDecimal, parseDecimalString } from '../utils/decimal';
|
|
13
14
|
|
|
14
15
|
test('test Security.create returns BondSecurity with correct coupon type and frequency', () => {
|
|
15
16
|
testBondSecurityCreation();
|
|
@@ -26,8 +27,6 @@ test('test BondSecurity.getTenor() returns correct Tenor for 10-year bond with a
|
|
|
26
27
|
function testBondSecurityCreation(): void {
|
|
27
28
|
// Create a SecurityProto with BOND_SECURITY type, coupon type, and coupon frequency
|
|
28
29
|
const securityProto = new SecurityProto();
|
|
29
|
-
securityProto.setObjectClass('Security');
|
|
30
|
-
securityProto.setVersion('0.0.1');
|
|
31
30
|
securityProto.setUuid(UUID.random().toUUIDProto());
|
|
32
31
|
securityProto.setProductType(ProductTypeProto.TREASURY_NOTE);
|
|
33
32
|
securityProto.setAssetClass('FixedIncome');
|
|
@@ -35,8 +34,8 @@ function testBondSecurityCreation(): void {
|
|
|
35
34
|
const bond = new BondDetailsProto();
|
|
36
35
|
bond.setCouponType(CouponTypeProto.FIXED);
|
|
37
36
|
bond.setCouponFrequency(CouponFrequencyProto.SEMIANNUALLY);
|
|
38
|
-
bond.setCouponRate(
|
|
39
|
-
bond.setFaceValue(
|
|
37
|
+
bond.setCouponRate(encodeDecimal(parseDecimalString('0.05')));
|
|
38
|
+
bond.setFaceValue(encodeDecimal(parseDecimalString('1000.00')));
|
|
40
39
|
bond.setIssueDate(new LocalDateProto().setYear(2021).setMonth(1).setDay(1));
|
|
41
40
|
bond.setMaturityDate(new LocalDateProto().setYear(2031).setMonth(1).setDay(1));
|
|
42
41
|
securityProto.setBondDetails(bond);
|
|
@@ -61,8 +60,6 @@ function testBondSecurityCreation(): void {
|
|
|
61
60
|
function testBondSecurityTenor(): void {
|
|
62
61
|
// Create a SecurityProto with BOND_SECURITY type and dates for a 10-year bond
|
|
63
62
|
const securityProto = new SecurityProto();
|
|
64
|
-
securityProto.setObjectClass('Security');
|
|
65
|
-
securityProto.setVersion('0.0.1');
|
|
66
63
|
securityProto.setUuid(UUID.random().toUUIDProto());
|
|
67
64
|
securityProto.setProductType(ProductTypeProto.TREASURY_NOTE);
|
|
68
65
|
securityProto.setAssetClass('FixedIncome');
|
|
@@ -70,8 +67,8 @@ function testBondSecurityTenor(): void {
|
|
|
70
67
|
const bond = new BondDetailsProto();
|
|
71
68
|
bond.setCouponType(CouponTypeProto.FIXED);
|
|
72
69
|
bond.setCouponFrequency(CouponFrequencyProto.SEMIANNUALLY);
|
|
73
|
-
bond.setCouponRate(
|
|
74
|
-
bond.setFaceValue(
|
|
70
|
+
bond.setCouponRate(encodeDecimal(parseDecimalString('0.05')));
|
|
71
|
+
bond.setFaceValue(encodeDecimal(parseDecimalString('1000.00')));
|
|
75
72
|
|
|
76
73
|
// Set issue date: January 1, 2021
|
|
77
74
|
bond.setIssueDate(new LocalDateProto().setYear(2021).setMonth(1).setDay(1));
|
|
@@ -108,8 +105,6 @@ function testBondSecurityTenor(): void {
|
|
|
108
105
|
|
|
109
106
|
// Test with a bond that has months and days
|
|
110
107
|
const securityProto2 = new SecurityProto();
|
|
111
|
-
securityProto2.setObjectClass('Security');
|
|
112
|
-
securityProto2.setVersion('0.0.1');
|
|
113
108
|
securityProto2.setUuid(UUID.random().toUUIDProto());
|
|
114
109
|
securityProto2.setProductType(ProductTypeProto.TREASURY_NOTE);
|
|
115
110
|
securityProto2.setAssetClass('FixedIncome');
|
|
@@ -117,8 +112,8 @@ function testBondSecurityTenor(): void {
|
|
|
117
112
|
const bond2 = new BondDetailsProto();
|
|
118
113
|
bond2.setCouponType(CouponTypeProto.FIXED);
|
|
119
114
|
bond2.setCouponFrequency(CouponFrequencyProto.SEMIANNUALLY);
|
|
120
|
-
bond2.setCouponRate(
|
|
121
|
-
bond2.setFaceValue(
|
|
115
|
+
bond2.setCouponRate(encodeDecimal(parseDecimalString('0.05')));
|
|
116
|
+
bond2.setFaceValue(encodeDecimal(parseDecimalString('1000.00')));
|
|
122
117
|
|
|
123
118
|
// Set issue date: January 15, 2021
|
|
124
119
|
bond2.setIssueDate(new LocalDateProto().setYear(2021).setMonth(1).setDay(15));
|
|
@@ -11,8 +11,6 @@ const index_type_pb_1 = require("../../../fintekkers/models/security/index/index
|
|
|
11
11
|
const uuid_1 = require("../utils/uuid");
|
|
12
12
|
test('Security.create routes CPI_SERIES to IndexSecurity', () => {
|
|
13
13
|
const proto = new security_pb_1.SecurityProto()
|
|
14
|
-
.setObjectClass('Security')
|
|
15
|
-
.setVersion('0.0.1')
|
|
16
14
|
.setUuid(uuid_1.UUID.random().toUUIDProto())
|
|
17
15
|
.setProductType(product_type_pb_1.ProductTypeProto.CPI_SERIES)
|
|
18
16
|
.setAssetClass('Index');
|
|
@@ -23,8 +21,6 @@ test('Security.create routes CPI_SERIES to IndexSecurity', () => {
|
|
|
23
21
|
});
|
|
24
22
|
test('Security.create routes SOFR_SERIES to IndexSecurity', () => {
|
|
25
23
|
const proto = new security_pb_1.SecurityProto()
|
|
26
|
-
.setObjectClass('Security')
|
|
27
|
-
.setVersion('0.0.1')
|
|
28
24
|
.setUuid(uuid_1.UUID.random().toUUIDProto())
|
|
29
25
|
.setProductType(product_type_pb_1.ProductTypeProto.SOFR_SERIES)
|
|
30
26
|
.setAssetClass('Index');
|
|
@@ -37,8 +33,6 @@ test('IndexSecurity.getIndexType returns UNKNOWN when index_details is unset', (
|
|
|
37
33
|
// Force-construct without populating index_details so we exercise the
|
|
38
34
|
// null-safe branch in the getter.
|
|
39
35
|
const proto = new security_pb_1.SecurityProto()
|
|
40
|
-
.setObjectClass('Security')
|
|
41
|
-
.setVersion('0.0.1')
|
|
42
36
|
.setUuid(uuid_1.UUID.random().toUUIDProto())
|
|
43
37
|
.setProductType(product_type_pb_1.ProductTypeProto.CPI_SERIES)
|
|
44
38
|
.setAssetClass('Index');
|
|
@@ -47,8 +41,6 @@ test('IndexSecurity.getIndexType returns UNKNOWN when index_details is unset', (
|
|
|
47
41
|
});
|
|
48
42
|
test('IndexSecurity extends Security (not BondSecurity)', () => {
|
|
49
43
|
const proto = new security_pb_1.SecurityProto()
|
|
50
|
-
.setObjectClass('Security')
|
|
51
|
-
.setVersion('0.0.1')
|
|
52
44
|
.setUuid(uuid_1.UUID.random().toUUIDProto())
|
|
53
45
|
.setProductType(product_type_pb_1.ProductTypeProto.EQUITY_INDEX);
|
|
54
46
|
proto.setIndexDetails(new security_pb_1.IndexDetailsProto().setIndexType(index_type_pb_1.IndexTypeProto.US_TREASURY));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IndexSecurity.test.js","sourceRoot":"","sources":["IndexSecurity.test.ts"],"names":[],"mappings":";;;;;AAAA,0DAAkC;AAClC,oEAA4C;AAC5C,iFAAmG;AACnG,yFAAuF;AACvF,2FAAyF;AACzF,wCAAqC;AAErC,IAAI,CAAC,oDAAoD,EAAE,GAAG,EAAE;IAC9D,MAAM,KAAK,GAAG,IAAI,2BAAa,EAAE;SAC9B,
|
|
1
|
+
{"version":3,"file":"IndexSecurity.test.js","sourceRoot":"","sources":["IndexSecurity.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,8 +7,6 @@ import { UUID } from '../utils/uuid';
|
|
|
7
7
|
|
|
8
8
|
test('Security.create routes CPI_SERIES to IndexSecurity', () => {
|
|
9
9
|
const proto = new SecurityProto()
|
|
10
|
-
.setObjectClass('Security')
|
|
11
|
-
.setVersion('0.0.1')
|
|
12
10
|
.setUuid(UUID.random().toUUIDProto())
|
|
13
11
|
.setProductType(ProductTypeProto.CPI_SERIES)
|
|
14
12
|
.setAssetClass('Index');
|
|
@@ -21,8 +19,6 @@ test('Security.create routes CPI_SERIES to IndexSecurity', () => {
|
|
|
21
19
|
|
|
22
20
|
test('Security.create routes SOFR_SERIES to IndexSecurity', () => {
|
|
23
21
|
const proto = new SecurityProto()
|
|
24
|
-
.setObjectClass('Security')
|
|
25
|
-
.setVersion('0.0.1')
|
|
26
22
|
.setUuid(UUID.random().toUUIDProto())
|
|
27
23
|
.setProductType(ProductTypeProto.SOFR_SERIES)
|
|
28
24
|
.setAssetClass('Index');
|
|
@@ -37,8 +33,6 @@ test('IndexSecurity.getIndexType returns UNKNOWN when index_details is unset', (
|
|
|
37
33
|
// Force-construct without populating index_details so we exercise the
|
|
38
34
|
// null-safe branch in the getter.
|
|
39
35
|
const proto = new SecurityProto()
|
|
40
|
-
.setObjectClass('Security')
|
|
41
|
-
.setVersion('0.0.1')
|
|
42
36
|
.setUuid(UUID.random().toUUIDProto())
|
|
43
37
|
.setProductType(ProductTypeProto.CPI_SERIES)
|
|
44
38
|
.setAssetClass('Index');
|
|
@@ -48,8 +42,6 @@ test('IndexSecurity.getIndexType returns UNKNOWN when index_details is unset', (
|
|
|
48
42
|
|
|
49
43
|
test('IndexSecurity extends Security (not BondSecurity)', () => {
|
|
50
44
|
const proto = new SecurityProto()
|
|
51
|
-
.setObjectClass('Security')
|
|
52
|
-
.setVersion('0.0.1')
|
|
53
45
|
.setUuid(UUID.random().toUUIDProto())
|
|
54
46
|
.setProductType(ProductTypeProto.EQUITY_INDEX);
|
|
55
47
|
proto.setIndexDetails(new IndexDetailsProto().setIndexType(IndexTypeProto.US_TREASURY));
|
|
@@ -6,18 +6,18 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
6
6
|
const Issuance_1 = __importDefault(require("./Issuance"));
|
|
7
7
|
const issuance_pb_1 = require("../../../fintekkers/models/security/bond/issuance_pb");
|
|
8
8
|
const auction_type_pb_1 = require("../../../fintekkers/models/security/bond/auction_type_pb");
|
|
9
|
-
const decimal_value_pb_1 = require("../../../fintekkers/models/util/decimal_value_pb");
|
|
10
9
|
const local_date_pb_1 = require("../../../fintekkers/models/util/local_date_pb");
|
|
11
10
|
const decimal_js_1 = __importDefault(require("decimal.js"));
|
|
11
|
+
const decimal_1 = require("../utils/decimal");
|
|
12
12
|
function buildProto() {
|
|
13
13
|
const p = new issuance_pb_1.IssuanceProto();
|
|
14
14
|
p.setAuctionIssueDate(new local_date_pb_1.LocalDateProto().setYear(2023).setMonth(2).setDay(15));
|
|
15
15
|
p.setAuctionAnnouncementDate(new local_date_pb_1.LocalDateProto().setYear(2023).setMonth(2).setDay(8));
|
|
16
|
-
p.setAuctionOfferingAmount(
|
|
17
|
-
p.setTotalAccepted(
|
|
18
|
-
p.setPostAuctionOutstandingQuantity(
|
|
19
|
-
p.setMatureSecurityAmount(
|
|
20
|
-
p.setPriceForSinglePriceAuction(
|
|
16
|
+
p.setAuctionOfferingAmount((0, decimal_1.encodeDecimal)((0, decimal_1.parseDecimalString)('45000000000')));
|
|
17
|
+
p.setTotalAccepted((0, decimal_1.encodeDecimal)((0, decimal_1.parseDecimalString)('44999500000')));
|
|
18
|
+
p.setPostAuctionOutstandingQuantity((0, decimal_1.encodeDecimal)((0, decimal_1.parseDecimalString)('44999500000')));
|
|
19
|
+
p.setMatureSecurityAmount((0, decimal_1.encodeDecimal)((0, decimal_1.parseDecimalString)('0')));
|
|
20
|
+
p.setPriceForSinglePriceAuction((0, decimal_1.encodeDecimal)((0, decimal_1.parseDecimalString)('99.875')));
|
|
21
21
|
p.setAuctionType(auction_type_pb_1.AuctionTypeProto.SINGLE_PRICE);
|
|
22
22
|
return p;
|
|
23
23
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Issuance.test.js","sourceRoot":"","sources":["Issuance.test.ts"],"names":[],"mappings":";;;;;AAAA,0DAAkC;AAClC,sFAAqF;AACrF,8FAA4F;
|
|
1
|
+
{"version":3,"file":"Issuance.test.js","sourceRoot":"","sources":["Issuance.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,16 +4,17 @@ import { AuctionTypeProto } from '../../../fintekkers/models/security/bond/aucti
|
|
|
4
4
|
import { DecimalValueProto } from '../../../fintekkers/models/util/decimal_value_pb';
|
|
5
5
|
import { LocalDateProto } from '../../../fintekkers/models/util/local_date_pb';
|
|
6
6
|
import Decimal from 'decimal.js';
|
|
7
|
+
import { encodeDecimal, parseDecimalString } from '../utils/decimal';
|
|
7
8
|
|
|
8
9
|
function buildProto(): IssuanceProto {
|
|
9
10
|
const p = new IssuanceProto();
|
|
10
11
|
p.setAuctionIssueDate(new LocalDateProto().setYear(2023).setMonth(2).setDay(15));
|
|
11
12
|
p.setAuctionAnnouncementDate(new LocalDateProto().setYear(2023).setMonth(2).setDay(8));
|
|
12
|
-
p.setAuctionOfferingAmount(
|
|
13
|
-
p.setTotalAccepted(
|
|
14
|
-
p.setPostAuctionOutstandingQuantity(
|
|
15
|
-
p.setMatureSecurityAmount(
|
|
16
|
-
p.setPriceForSinglePriceAuction(
|
|
13
|
+
p.setAuctionOfferingAmount(encodeDecimal(parseDecimalString('45000000000')));
|
|
14
|
+
p.setTotalAccepted(encodeDecimal(parseDecimalString('44999500000')));
|
|
15
|
+
p.setPostAuctionOutstandingQuantity(encodeDecimal(parseDecimalString('44999500000')));
|
|
16
|
+
p.setMatureSecurityAmount(encodeDecimal(parseDecimalString('0')));
|
|
17
|
+
p.setPriceForSinglePriceAuction(encodeDecimal(parseDecimalString('99.875')));
|
|
17
18
|
p.setAuctionType(AuctionTypeProto.SINGLE_PRICE);
|
|
18
19
|
return p;
|
|
19
20
|
}
|
|
@@ -12,6 +12,7 @@ const coupon_type_pb_1 = require("../../../fintekkers/models/security/coupon_typ
|
|
|
12
12
|
const coupon_frequency_pb_1 = require("../../../fintekkers/models/security/coupon_frequency_pb");
|
|
13
13
|
const agency_pb_1 = require("../../../fintekkers/models/security/bond/agency_pb");
|
|
14
14
|
const decimal_js_1 = require("decimal.js");
|
|
15
|
+
const decimal_1 = require("../utils/decimal");
|
|
15
16
|
function makeDate(y, m, d) {
|
|
16
17
|
const date = new Date(y, m - 1, d);
|
|
17
18
|
date.setHours(0, 0, 0, 0);
|
|
@@ -27,7 +28,6 @@ const baseInputs = {
|
|
|
27
28
|
};
|
|
28
29
|
const mbsInputs = Object.assign(Object.assign({}, baseInputs), { poolNumber: 'FN AS1234', agency: agency_pb_1.AgencyProto.FNMA, wac: new decimal_js_1.Decimal('0.045'), wam: 358, passThroughRate: new decimal_js_1.Decimal('0.04'), currentFactor: new decimal_js_1.Decimal('0.95'), originalFaceValue: new decimal_js_1.Decimal('250000000'), currentUpb: new decimal_js_1.Decimal('237500000'), psaSpeed: new decimal_js_1.Decimal('150') });
|
|
29
30
|
test('MortgageBackedSecurity.fromPricerInputs populates bond_details and mbs_extension', () => {
|
|
30
|
-
var _a, _b, _c, _d, _e, _f;
|
|
31
31
|
const proto = MortgageBackedSecurity_1.default.fromPricerInputs(mbsInputs);
|
|
32
32
|
expect(proto.getProductType()).toBe(product_type_pb_1.ProductTypeProto.MORTGAGE_BACKED);
|
|
33
33
|
expect(proto.hasBondDetails()).toBe(true);
|
|
@@ -35,16 +35,15 @@ test('MortgageBackedSecurity.fromPricerInputs populates bond_details and mbs_ext
|
|
|
35
35
|
const ext = proto.getMbsExtension();
|
|
36
36
|
expect(ext.getPoolNumber()).toBe('FN AS1234');
|
|
37
37
|
expect(ext.getAgency()).toBe(agency_pb_1.AgencyProto.FNMA);
|
|
38
|
-
expect((
|
|
38
|
+
expect((0, decimal_1.toCanonicalString)((0, decimal_1.decodeDecimal)(ext.getWac()))).toBe('0.045');
|
|
39
39
|
expect(ext.getWam()).toBe(358);
|
|
40
|
-
expect((
|
|
41
|
-
expect((
|
|
42
|
-
expect((
|
|
43
|
-
expect((
|
|
44
|
-
expect((
|
|
40
|
+
expect((0, decimal_1.toCanonicalString)((0, decimal_1.decodeDecimal)(ext.getPassThroughRate()))).toBe('0.04');
|
|
41
|
+
expect((0, decimal_1.toCanonicalString)((0, decimal_1.decodeDecimal)(ext.getCurrentFactor()))).toBe('0.95');
|
|
42
|
+
expect((0, decimal_1.toCanonicalString)((0, decimal_1.decodeDecimal)(ext.getOriginalFaceValue()))).toBe('250000000');
|
|
43
|
+
expect((0, decimal_1.toCanonicalString)((0, decimal_1.decodeDecimal)(ext.getCurrentUpb()))).toBe('237500000');
|
|
44
|
+
expect((0, decimal_1.toCanonicalString)((0, decimal_1.decodeDecimal)(ext.getPsaSpeed()))).toBe('150');
|
|
45
45
|
});
|
|
46
46
|
test('MortgageBackedSecurity round-trips via serializeBinary / deserializeBinary preserving all 9 mbs fields', () => {
|
|
47
|
-
var _a, _b, _c, _d, _e, _f;
|
|
48
47
|
const proto = MortgageBackedSecurity_1.default.fromPricerInputs(mbsInputs);
|
|
49
48
|
const bytes = proto.serializeBinary();
|
|
50
49
|
const round = security_pb_1.SecurityProto.deserializeBinary(bytes);
|
|
@@ -54,13 +53,13 @@ test('MortgageBackedSecurity round-trips via serializeBinary / deserializeBinary
|
|
|
54
53
|
const ext = round.getMbsExtension();
|
|
55
54
|
expect(ext.getPoolNumber()).toBe('FN AS1234');
|
|
56
55
|
expect(ext.getAgency()).toBe(agency_pb_1.AgencyProto.FNMA);
|
|
57
|
-
expect((
|
|
56
|
+
expect((0, decimal_1.toCanonicalString)((0, decimal_1.decodeDecimal)(ext.getWac()))).toBe('0.045');
|
|
58
57
|
expect(ext.getWam()).toBe(358);
|
|
59
|
-
expect((
|
|
60
|
-
expect((
|
|
61
|
-
expect((
|
|
62
|
-
expect((
|
|
63
|
-
expect((
|
|
58
|
+
expect((0, decimal_1.toCanonicalString)((0, decimal_1.decodeDecimal)(ext.getPassThroughRate()))).toBe('0.04');
|
|
59
|
+
expect((0, decimal_1.toCanonicalString)((0, decimal_1.decodeDecimal)(ext.getCurrentFactor()))).toBe('0.95');
|
|
60
|
+
expect((0, decimal_1.toCanonicalString)((0, decimal_1.decodeDecimal)(ext.getOriginalFaceValue()))).toBe('250000000');
|
|
61
|
+
expect((0, decimal_1.toCanonicalString)((0, decimal_1.decodeDecimal)(ext.getCurrentUpb()))).toBe('237500000');
|
|
62
|
+
expect((0, decimal_1.toCanonicalString)((0, decimal_1.decodeDecimal)(ext.getPsaSpeed()))).toBe('150');
|
|
64
63
|
});
|
|
65
64
|
test('MortgageBackedSecurity wraps via Security.create factory dispatch', () => {
|
|
66
65
|
const proto = MortgageBackedSecurity_1.default.fromPricerInputs(mbsInputs);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MortgageBackedSecurity.fromPricerInputs.test.js","sourceRoot":"","sources":["MortgageBackedSecurity.fromPricerInputs.test.ts"],"names":[],"mappings":";;;;;AAAA,0DAAkC;AAClC,kEAA0C;AAC1C,sFAA8D;AAC9D,iFAAgF;AAChF,yFAAuF;AACvF,uFAAqF;AACrF,iGAA+F;AAC/F,kFAAiF;AACjF,2CAAqC;
|
|
1
|
+
{"version":3,"file":"MortgageBackedSecurity.fromPricerInputs.test.js","sourceRoot":"","sources":["MortgageBackedSecurity.fromPricerInputs.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,6 +7,7 @@ import { CouponTypeProto } from '../../../fintekkers/models/security/coupon_type
|
|
|
7
7
|
import { CouponFrequencyProto } from '../../../fintekkers/models/security/coupon_frequency_pb';
|
|
8
8
|
import { AgencyProto } from '../../../fintekkers/models/security/bond/agency_pb';
|
|
9
9
|
import { Decimal } from 'decimal.js';
|
|
10
|
+
import { decodeDecimal, toCanonicalString } from '../utils/decimal';
|
|
10
11
|
|
|
11
12
|
function makeDate(y: number, m: number, d: number): Date {
|
|
12
13
|
const date = new Date(y, m - 1, d);
|
|
@@ -45,13 +46,13 @@ test('MortgageBackedSecurity.fromPricerInputs populates bond_details and mbs_ext
|
|
|
45
46
|
const ext = proto.getMbsExtension()!;
|
|
46
47
|
expect(ext.getPoolNumber()).toBe('FN AS1234');
|
|
47
48
|
expect(ext.getAgency()).toBe(AgencyProto.FNMA);
|
|
48
|
-
expect(ext.getWac()
|
|
49
|
+
expect(toCanonicalString(decodeDecimal(ext.getWac()!))).toBe('0.045');
|
|
49
50
|
expect(ext.getWam()).toBe(358);
|
|
50
|
-
expect(ext.getPassThroughRate()
|
|
51
|
-
expect(ext.getCurrentFactor()
|
|
52
|
-
expect(ext.getOriginalFaceValue()
|
|
53
|
-
expect(ext.getCurrentUpb()
|
|
54
|
-
expect(ext.getPsaSpeed()
|
|
51
|
+
expect(toCanonicalString(decodeDecimal(ext.getPassThroughRate()!))).toBe('0.04');
|
|
52
|
+
expect(toCanonicalString(decodeDecimal(ext.getCurrentFactor()!))).toBe('0.95');
|
|
53
|
+
expect(toCanonicalString(decodeDecimal(ext.getOriginalFaceValue()!))).toBe('250000000');
|
|
54
|
+
expect(toCanonicalString(decodeDecimal(ext.getCurrentUpb()!))).toBe('237500000');
|
|
55
|
+
expect(toCanonicalString(decodeDecimal(ext.getPsaSpeed()!))).toBe('150');
|
|
55
56
|
});
|
|
56
57
|
|
|
57
58
|
test('MortgageBackedSecurity round-trips via serializeBinary / deserializeBinary preserving all 9 mbs fields', () => {
|
|
@@ -66,13 +67,13 @@ test('MortgageBackedSecurity round-trips via serializeBinary / deserializeBinary
|
|
|
66
67
|
const ext = round.getMbsExtension()!;
|
|
67
68
|
expect(ext.getPoolNumber()).toBe('FN AS1234');
|
|
68
69
|
expect(ext.getAgency()).toBe(AgencyProto.FNMA);
|
|
69
|
-
expect(ext.getWac()
|
|
70
|
+
expect(toCanonicalString(decodeDecimal(ext.getWac()!))).toBe('0.045');
|
|
70
71
|
expect(ext.getWam()).toBe(358);
|
|
71
|
-
expect(ext.getPassThroughRate()
|
|
72
|
-
expect(ext.getCurrentFactor()
|
|
73
|
-
expect(ext.getOriginalFaceValue()
|
|
74
|
-
expect(ext.getCurrentUpb()
|
|
75
|
-
expect(ext.getPsaSpeed()
|
|
72
|
+
expect(toCanonicalString(decodeDecimal(ext.getPassThroughRate()!))).toBe('0.04');
|
|
73
|
+
expect(toCanonicalString(decodeDecimal(ext.getCurrentFactor()!))).toBe('0.95');
|
|
74
|
+
expect(toCanonicalString(decodeDecimal(ext.getOriginalFaceValue()!))).toBe('250000000');
|
|
75
|
+
expect(toCanonicalString(decodeDecimal(ext.getCurrentUpb()!))).toBe('237500000');
|
|
76
|
+
expect(toCanonicalString(decodeDecimal(ext.getPsaSpeed()!))).toBe('150');
|
|
76
77
|
});
|
|
77
78
|
|
|
78
79
|
test('MortgageBackedSecurity wraps via Security.create factory dispatch', () => {
|