· 6 ms · specs: Spec:rebalance
{
"total": 28320,
"sells": [
{
"ticker": "FRST",
"action": "sell",
"shares": 1302,
"amount": 2734.2000000000003
}
],
"buys": [
{
"ticker": "NRTH",
"action": "buy",
"shares": 74,
"amount": 1369,
"price": 18.5,
"trimmed": true
},
{
"ticker": "URNM",
"action": "buy",
"shares": 3,
"amount": 14.399999999999999,
"price": 4.8,
"trimmed": true
}
],
"holds": [
"CPHD",
"GLDX"
],
"cashLeft": 1500.8000000000002
}
{
"positions": [
{
"ticker": "FRST",
"shares": 4000,
"price": 2.1,
"target": 0.2
},
{
"ticker": "CPHD",
"shares": 1500,
"price": 3.4,
"target": 0.2
},
{
"ticker": "NRTH",
"shares": 300,
"price": 18.5,
"target": 0.25
},
{
"ticker": "GLDX",
"shares": 520,
"price": 12,
"target": 0.2
},
{
"ticker": "URNM",
"shares": 600,
"price": 4.8,
"target": 0.15
}
],
"cash": 0.8000000000002743
}
{
"src": "$val positions = [",
"k": "step",
"stmt": {
"k": "assign",
"sets": [
{
"name": "positions",
"e": {
"k": "arr",
"items": [
{
"k": "obj",
"fields": [
{
"key": "ticker",
"e": {
"k": "str",
"parts": [
"FRST"
]
}
},
{
"key": "shares",
"e": {
"k": "lit",
"v": 4000
}
},
{
"key": "price",
"e": {
"k": "lit",
"v": 2.1
}
},
{
"key": "target",
"e": {
"k": "lit",
"v": 0.2
}
}
]
},
{
"k": "obj",
"fields": [
{
"key": "ticker",
"e": {
"k": "str",
"parts": [
"CPHD"
]
}
},
{
"key": "shares",
"e": {
"k": "lit",
"v": 1500
}
},
{
"key": "price",
"e": {
"k": "lit",
"v": 3.4
}
},
{
"key": "target",
"e": {
"k": "lit",
"v": 0.2
}
}
]
},
{
"k": "obj",
"fields": [
{
"key": "ticker",
"e": {
"k": "str",
"parts": [
"NRTH"
]
}
},
{
"key": "shares",
"e": {
"k": "lit",
"v": 300
}
},
{
"key": "price",
"e": {
"k": "lit",
"v": 18.5
}
},
{
"key": "target",
"e": {
"k": "lit",
"v": 0.25
}
}
]
},
{
"k": "obj",
"fields": [
{
"key": "ticker",
"e": {
"k": "str",
"parts": [
"GLDX"
]
}
},
{
"key": "shares",
"e": {
"k": "lit",
"v": 520
}
},
{
"key": "price",
"e": {
"k": "lit",
"v": 12
}
},
{
"key": "target",
"e": {
"k": "lit",
"v": 0.2
}
}
]
},
{
"k": "obj",
"fields": [
{
"key": "ticker",
"e": {
"k": "str",
"parts": [
"URNM"
]
}
},
{
"key": "shares",
"e": {
"k": "lit",
"v": 600
}
},
{
"key": "price",
"e": {
"k": "lit",
"v": 4.8
}
},
{
"key": "target",
"e": {
"k": "lit",
"v": 0.15
}
}
]
}
]
}
}
]
}
}{
"src": "$send pf.rebalance (positions = positions, cash = 150.0, reserve = 1500.0)",
"k": "step",
"stmt": {
"k": "send",
"msg": "pf.rebalance",
"args": [
{
"name": "positions",
"e": {
"k": "ref",
"name": "positions"
}
},
{
"name": "cash",
"e": {
"k": "lit",
"v": 150
}
},
{
"name": "reserve",
"e": {
"k": "lit",
"v": 1500
}
}
]
}
}{
"src": "payload.total > 24000.0",
"k": "expect",
"cond": {
"k": "bin",
"op": ">",
"l": {
"k": "member",
"obj": {
"k": "ref",
"name": "payload"
},
"name": "total",
"safe": false
},
"r": {
"k": "lit",
"v": 24000
}
}
}{
"src": "sizeOf(payload.sells) is 1",
"k": "expect",
"cond": {
"k": "bin",
"op": "==",
"l": {
"k": "call",
"tool": "sizeOf",
"args": [
{
"e": {
"k": "member",
"obj": {
"k": "ref",
"name": "payload"
},
"name": "sells",
"safe": false
}
}
]
},
"r": {
"k": "lit",
"v": 1
}
}
}{
"src": "\"GLDX\" in payload.holds",
"k": "expect",
"cond": {
"k": "bin",
"op": "in",
"l": {
"k": "str",
"parts": [
"GLDX"
]
},
"r": {
"k": "member",
"obj": {
"k": "ref",
"name": "payload"
},
"name": "holds",
"safe": false
}
}
}{
"src": "(payload.buys filter (b => b.trimmed ?? false)) is not empty",
"k": "expect",
"cond": {
"k": "is",
"neg": true,
"test": "empty",
"e": {
"k": "coll",
"op": "filter",
"e": {
"k": "member",
"obj": {
"k": "ref",
"name": "payload"
},
"name": "buys",
"safe": false
},
"fn": {
"param": "b",
"body": {
"k": "bin",
"op": "??",
"l": {
"k": "member",
"obj": {
"k": "ref",
"name": "b"
},
"name": "trimmed",
"safe": false
},
"r": {
"k": "lit",
"v": false
}
}
}
}
}
}{
"src": "payload.cashLeft >= 1500.0",
"k": "expect",
"cond": {
"k": "bin",
"op": ">=",
"l": {
"k": "member",
"obj": {
"k": "ref",
"name": "payload"
},
"name": "cashLeft",
"safe": false
},
"r": {
"k": "lit",
"v": 1500
}
}
}