Skip to content

Commit

Permalink
Merge pull request #18 from penny-vault/bug/drawdowns
Browse files Browse the repository at this point in the history
fix display of draw downs and update readme
  • Loading branch information
jdfergason authored Dec 20, 2022
2 parents 084164d + 5d74382 commit 3f553cd
Show file tree
Hide file tree
Showing 5 changed files with 33 additions and 6 deletions.
10 changes: 10 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,16 @@ yarn run lint
quasar build
```

### Update Colfer serialization

Step 0: Copy the file `types.colf` from pv-api/portfolio into a working directory
Step 1: Modify the `package` statement from "portfolio" to "colfer" in pvapi source
Step 3: Run colfer (in the src/assets directory):

```bash
colf -l "4 * 1024 * 1024" JavaScript types.colf
```

[1]: https://designsystem.quickbooks.com/
[2]: https://design.fusionfabric.cloud
[3]: https://www.figma.com/file/oKLlf4OiW3tjRs7siZCH0F/Penny-Vault?node-id=2%3A4
Expand Down
10 changes: 10 additions & 0 deletions src/assets/colfer.js
Original file line number Diff line number Diff line change
Expand Up @@ -1280,6 +1280,8 @@ var colfer = new function() {

this.LossPercent = 0;

this.Active = false;

for (var p in init) this[p] = init[p];
}

Expand Down Expand Up @@ -1422,6 +1424,9 @@ var colfer = new function() {
i += 9;
}

if (this.Active)
buf[i++] = 4;


buf[i++] = 127;
if (i >= colferSizeMax)
Expand Down Expand Up @@ -1542,6 +1547,11 @@ var colfer = new function() {
readHeader();
}

if (header == 4) {
this.Active = true;
readHeader();
}

if (header != 127) throw new Error('colfer: unknown header at byte ' + (i - 1));
if (i > colferSizeMax)
throw new Error('colfer: colfer.DrawDown serial size ' + size + ' exceeds ' + colferSizeMax + ' bytes');
Expand Down
9 changes: 5 additions & 4 deletions src/components/ValueChart.vue
Original file line number Diff line number Diff line change
Expand Up @@ -211,13 +211,14 @@ export default defineComponent({
if (props.showDrawDowns) {
drawDowns.value.forEach(elem => {
// NOTE: Adding 2.5 days to make things line up. Note sure why this is necessary
let begin = parse(format(fromUnixTime(elem.begin + (86400*2.5)), 'yyyy-MM-dd'), 'yyyy-MM-dd', new Date())
let end = parse(format(fromUnixTime(elem.end + (86400*2.5)), 'yyyy-MM-dd'), 'yyyy-MM-dd', new Date())
// let begin = parse(format(fromUnixTime(elem.Begin + (86400*2.5)), 'yyyy-MM-dd'), 'yyyy-MM-dd', new Date())
// let end = parse(format(fromUnixTime(elem.End + (86400*2.5)), 'yyyy-MM-dd'), 'yyyy-MM-dd', new Date())
// for the drawDown period (peak to trough)
let range = dateAxis.createSeriesRange(strategyValueSeries)
range.date = begin
range.endDate = end
range.date = elem.Begin
range.endDate = elem.End
range.contents.stroke = am4core.color("#A60017")
range.contents.fill = am4core.color("#D5001D")
range.contents.fillOpacity = 0.5
Expand Down
8 changes: 7 additions & 1 deletion src/pages/PortfolioReturns.vue
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,10 @@ export default defineComponent({
let end = params.data.End
let recover = params.data.Recovery
let rangeStr = `${format(begin, 'MMM yyyy')} to ${format(end, 'MMM yyyy')}`
let daysToRecover = `<br/><span class="cell-sub-text">${differenceInCalendarDays(recover, begin)} days to recover</span>`
var daysToRecover = `<br/><span class="cell-sub-text">${differenceInCalendarDays(recover, begin)} days to recover</span>`
if (params.data.Active) {
daysToRecover = `<br/><span class="cell-sub-text">not yet recovered</span>`
}
return rangeStr + daysToRecover
}
},
Expand All @@ -95,6 +98,9 @@ export default defineComponent({
resizable: true,
editable: false,
valueFormatter: (params) => {
if (params.data.Active) {
return ''
}
return format(params.value, 'MMM yyyy')
}
},
Expand Down
2 changes: 1 addition & 1 deletion src/pages/PortfolioSummary.vue
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@

<q-item tag="label" v-ripple>
<q-item-section>
<q-item-label>Show top 10 draw downs</q-item-label>
<q-item-label>Show top 10 draw downs (peak to trough)</q-item-label>
</q-item-section>
<q-item-section side >
<q-toggle color="blue" v-model="showDrawDowns" />
Expand Down

0 comments on commit 3f553cd

Please sign in to comment.