A slight variation of what @anon63144152 wrote, and perhaps closer to your initial markup would be to add something like the following in your daily notes:
- [[Person A]] [strength:: +1]
- [[Person B]] [intelligence:: +1]
However, whilst that would look a little nicer, it wouldn’t be as easy to produce a table of all the traits. That is, producing rows for each trait. This syntax would to some extent allow for traits as columns.
I had some issues building this query, as it turned out to be a bit of a nightmare to group/flatten/sum the various thingies… 
If needed, I could continue trying, but not tonight…
Alternative markup for Eightnings solution
Eightning used [trait:: strength]
which keeps showing the field name. And alternative but still using the same field, would be to do (trait:: strength)
. Using this markup we could get something like (I’ve also dropped the person
field:
- [[Winter]] (trait:: strength) (offset:: +1)
- [[Winter]] (trait:: intelligence) (offset:: -1)
- [[Autumn]] (trait:: strength) (offset:: -4)
- [[Winter]] (trait:: strength) (offset:: +4)
- [[Winter]] (trait:: strength) (offset:: -2)
- [[Autumn]] (trait:: strength) (offset:: -8)
- [[Winter]] (trait:: intelligence) (offset:: -1)
which in my setup shows as:

This could be styled according to your own desire. I’m using similar markup where I add some symbols related to field names, and so on.
And the queries if I’m assuming you want to collate the trait offsets from the various files would look something like the following:
### List all trait changes (for this file)
```dataview
TABLE item.trait, item.offset
FLATTEN file.lists as item
WHERE econtains(item.outlinks, [[]]) AND item.trait AND item.offset
SORT item.trait
```
### Sum trait offsets
```dataview
TABLE sum(number(rows.item.offset)) as Offset
FLATTEN file.lists as item
WHERE econtains(item.outlinks, [[]]) AND item.trait AND item.offset
GROUP by item.trait as Trait
SORT item.trait
```
### Current trait value
```dataview
TABLE this[key] + sum(number(rows.item.offset)) as Value
FLATTEN file.lists as item
WHERE econtains(item.outlinks, [[]]) AND item.trait AND item.offset
GROUP by item.trait as Trait
SORT item.trait
```
In addition to some settings like the list item, I’ve here also included the following frontmatter for “Winter”:
---
intelligence: 40
strength: 100
---
Which then gives me the following output:
I’m imagining this to be used for some variant over character building, where the person has some base values, and then these values changes over time. Maybe related to training, exercises, challenges, and so on…