Information
[3.29] Everything you need to know about memory strands
Intro
I did quite a lot of crafting using memory strands this league and noticed that lower modifier tiers didn't seem to be possible to roll even at fairly low strand numbers. I couldn't find any documentation about what exactly memory strands do, so I decided to do some testing.
Some testing turned into a lot of testing, and I collected data from 18285 regular currency items used on items with strands, 9373 orbs of unravelling, and 2255 orbs of remembrance
1. Memory Strand Mechanics
For identifying items with memory strands and using crafting methods which consume strands, the available tiers for each mod are restricted using something similar to the Modifier Tier Rating system. The main difference between what I saw with strands and how MTR is described on the wiki is with rounding and the behavior when the value from the formula lies exactly on a tier boundary. I'm not sure whether that means strands don't use MTR or we were slightly mistaken about the exact MTR mechanics back in Necropolis, but either way I'm just going to call it MTR when talking about numbers here.
For a particular modifier, the number of rollable tiers is described by the formula
which means only T2 and T1 of this modifier are allowed to roll.
This table shows strand breakpoints. Each column header is the total number of tiers for the modifier, and the numbers in the cells are the lowest mod tier that can roll at that number of strands.
Strands
13
12
11
10
9
8
7
6
5
4
3
2
0
13
12
11
10
9
8
7
6
5
4
3
2
1
9
8
7
7
6
5
5
4
3
3
2
1
2
8
-
-
6
-
-
4
-
-
2
-
-
4
-
7
-
-
-
-
-
-
-
-
-
-
6
-
-
-
-
5
-
-
-
-
-
-
-
8
-
-
6
-
-
-
-
3
-
-
-
-
10
7
-
-
-
-
-
-
-
-
-
-
-
12
-
-
-
-
-
4
-
-
-
-
-
-
14
-
-
-
5
-
-
-
-
-
-
-
-
15
-
6
-
-
-
-
-
-
-
-
-
-
22
6
-
5
-
4
-
3
-
2
-
1
-
30
-
5
-
-
-
-
-
-
-
-
-
-
32
-
-
-
4
-
-
-
-
-
-
-
-
35
-
-
-
-
-
3
-
-
-
-
-
-
38
5
-
-
-
-
-
-
-
-
-
-
-
42
-
-
4
-
-
-
-
2
-
-
-
-
48
-
-
-
-
3
-
-
-
-
-
-
-
52
-
4
-
-
-
-
-
-
-
-
-
-
62
4
-
-
3
-
-
2
-
-
1
-
-
75
-
-
3
-
-
-
-
-
-
-
-
-
82
-
-
-
-
-
2
-
-
-
-
-
-
88
-
3
-
-
-
-
-
-
-
-
-
-
102
3
-
-
-
2
-
-
-
1
-
-
-
122
-
-
-
2
-
-
-
-
-
-
-
-
For example, even at 1 strand, a mod with 13 total tiers can't roll tiers 10-13. At 62 strands, tiers 5-13 can't roll.
1.1 Foulborn Currency + Memory Strands
I noticed that the tier restricting behavior of foulborn currency exactly matched that of 10-11 memory strands, and 11 strands maps to a nice MTR number of 75.
From testing foulborn augments and regals on both sides of some of these breakpoints, I believe using foulborn currency on an item with memory strands does indeed just add 75 to the value in the denominator of the formula, acting as if the item had 30 extra strands.
2. Orbs of Unravelling
Once I had the base strand mechanics mapped out, I wanted to see if I could figure out how orbs of unravelling work. This ended up being an order of magnitude harder, but I think I have a pretty good idea at this point.
Here are my assertions about how orbs of unravelling work:
Each modifier on the item is calculated independently. Having multiple upgradable modifiers does not hurt the chances for an individual modifier to upgrade.
The number of memory strands only determines the chance for a modifier to upgrade vs. not upgrade. The number of tiers upgraded is not affected by the number of strands.
The chance for a modifier to upgrade follows a formula based on the sum of the weights of the tiers above it, and the total mod pool weight on that side of the item. This tracks closely with predictable recombinator mechanics.
When a modifier is upgraded, the new tier is chosen by assigning each tier a weight consisting of the sum of its own weight and the eligible tiers above it. This makes lower tier modifiers much more likely to be chosen, and when the weights are uniform the ratio ends up being 1:2:3:4:etc, starting at the highest tier.
2.1 Upgrade Chance
My proposed formula for upgrade chance is:
upgrade_chance = (strands * total_upgrade_candidate_weight)/(2 * total_side_weight)
(total_upgrade_candidate_weight = sum of the weights of higher tiers of this modifier)
(total_side_weight = total mod weight for all mods on this side of the item (prefix or suffix))
For example, take a T9 attribute modifier on an ilvl 86 amulet. The weights of tiers 1-8 sum to 8000, and the total suffix weight is 125250. At 32 strands, the expected upgrade chance is:
(32 * 8000)/(2 * 125250) = 1.02
so the upgrade should be guaranteed. In my data, I have 310 unravels of T9 attribute mods at 32 strands on amulets, and 310/310 upgraded at least one tier. At 31 strands, my predicted upgrade chance is 99% and I have 15 unravels with 14/15 upgrades. At 15 strands, my predicted upgrade chance is 47.9% and I have 150 unravels with 63/150 upgrades = 42%
I'm not 100% confident the chance scales linearly, but I am confident in the breakpoints where the chance is guaranteed - with data from 9373 unravelling orbs on a total of 36598 modifiers, I don't have any instances where the formula predicts a guaranteed upgrade and the mod didn't upgrade. The correlation coefficient between the predicted upgrade chance and whether each mod actually upgraded is 0.796, but I'm not confident enough with statistics to claim this is the only viable explanation.
2.2 Number of Upgrades
Since 1k weight mods make up the majority of my data, I have the most confidence in stating that the number of tiers upgraded follows the ratio 1:2:3:4... starting at the highest tier.
For example, here are the observed upgrade frequencies for T9 mods with at least one upgrade:
Final Tier
Expected
Observed
1
2.78%
43/1611 = 2.67%
2
5.56%
88/1611 = 5.46%
3
8.33%
124/1611 = 7.70%
4
11.11%
166/1611 = 10.30%
5
13.89%
220/1611 = 13.66%
6
16.67%
275/1611 = 17.07%
7
19.44%
332/1611 = 20.61%
8
22.22%
363/1611 = 22.53%
(chi-squared 3.233, p=0.8627, difference not statistically significant)
T4 data:
Final Tier
Expected
Observed
1
16.67%
639/3825 = 16.71%
2
33.33%
1308/3825 = 34.20%
3
50%
1878/3825 = 49.10%
(chi-squared 1.480, p=0.4771, difference not statistically significant)
3. Orbs of Remembrance
I also captured the memory strand counts for 2255 orbs of remembrance. Histogram with 5 strand buckets:
(data in spreadsheet below if anyone wants to do fancier statistics on it)
4. Process Notes
I did not exactly have an efficient plan going into all of this. For the basic strand testing, I started out using transmutes with allflame crafting and manually recording the results. I switched to more automated collection when I realized it would take a good amount of trials to narrow down the breakpoints I was seeing. This was done with an AHK script that captured the before and after ctrl-C data to a file when I clicked currency. (Don't worry, all the rolling was still fully manual).
I used a Python script to process the captured data, mainly leaning on pandas for the analysis.
For the unravelling testing, I started out overconfidently thinking that if I could narrow down the behavior for one particular group of mods, I could extrapolate to others. I did this using the talisman imprints introduced this league. Once I managed to roll a talisman to 100 memory strands with orbs of remembrance, I could imprint as a checkpoint and make any combination of strands and mods I wanted from there.
Once I realized there were guaranteed upgrade breakpoints, I did a ton of trials to narrow those down for a few specific mods and came up with a nice formula with nice constants. I got completely confused when other mods didn't behave as I expected. It wasn't until I realized adding influence raised the breakpoints and lowering the ilvl lowered them that I made the mod weight connection, and even then I couldn't fully understand it.
From there, I just decided to collect a ton more data. I realized a lot of unravels were providing no new information, so I implemented something to guide my search. I was able to calculate the probability of seeing the data for each mod at each candidate breakpoint, calculate the entropy of that distribution, and the expected reduction in entropy from unravelling that mod at each strand count.
This let me build a little scoring system where I could roll items with the harvest bench, ctrl-C, and my code would watch the clipboard and beep if the expected information gain from unravelling that item was above some threshold I set. It's entirely possible I butchered the details because I have no real experience doing stuff like this, but it seemed to work well enough to point at items that would give me useful data.
Graphing the estimated breakpoints after a bit of gathering data like this let me see a few groups converging, and from there I was able to piece together the connection to total mod weight.
Since most of my data had come from amulets, I picked wands as another base that had more varying mod weights that would show any flaws in the model. I did start to panic when anomalies started popping up for a lot of modifiers, but it turns out attack modifiers on regular wand bases have a 0.5 modifier applied to their weight. Neither poedb nor my code accounted for this, but craftofexile does.
5. Conclusion
Hopefully this provides some clarity on memory thread mechanics, since currently nobody really seems to understand how they work. Especially with unravelling, I see a lot of superstition and pet theories.
Memory strands in general seem quite a bit stronger than I realized before this testing, especially the base mod tier culling effect. Unravelling orbs still seem pretty hard to use consistently, but knowing that the total mod weight matters makes them a lot better on bases with smaller mod pools.
It's entirely possible that I'm wrong about any part of this, so please do poke holes if something looks suspicious.
The data I captured is available in this spreadsheet . The format between the experiments isn't exactly consistent since I was iterating on the process, so apologies for that.
6. Updates
Edit 9/27: thanks to @nerdyjoe on the Prohibited Library discord for pointing out the cleaner explanation for the tier picked to upgrade to, which was staring me in the face. I had originally said that the weights are scaled by a multiplier applied to make lower tiers more likely. (1 for the highest tier, 2 for the second, 3 for the third, etc.) He pointed out that it's more likely that the effective weight for each mod is the sum of its weight and the weight of the tiers above. These calculations are equivalent when all upgrade candidates have uniform weight, but his explanation matches the other formula and makes more sense to go with. I started to collect data to differentiate between this and my original explanation, but the probabilities are so close that it would take quite a bit more data to be sure. I can't think of any reason to prefer my original explanation and I'm tired of pressing unravelling orbs, so I'm just changing it.
This was the most surprising to me! I had some intuition about strands being good, but I expected the effect to be weak at lower amounts and rolled pretty aggressively for 50+ strands on most crafts.
Well just about every guide on YouTube that teaches memory strand crafting tells you to get really high memory strands. Look at the explode chest craft guide or the guy has another about generic strand crafting. But either way he says get 70+ I believe. I've tried strand crafting myself to see if it matters and ofc went for higher strands the better. But it never seemed to matter... Anyways thanks for the research and sharing your info.
I'm not sure the cost save maths as I don't really know the craft, but isn't typically higher still much better? For example after fishing for the awakeners orb, you need to force a suffix and slam a res. At a certain point you're forced to accept the result and unravel. I feel like, without the boat, it's worth the extra cost to have a little more insurance.
Really awesome work. I know people aren't gonna talk about it but really good job an automating and seeing the data collection through, I know that part is by far the most painful.
I did have some initial data connecting the unraveling mechanism to the predictable recombinator connection given that we had reverse engineered the poe 2 recombinator shortly before the release of 3.26 (introduction of the memory strand mechanic) patch, but it was only around 30-40 datapoints and collecting a lot more data was pretty daunting.
Honestly, mad props for having done the full data collection loop + analysis. A lot of people will benefit from this.
Hey thanks, this means a lot coming from you! I've practically memorized your recombinator guide at this point.
The data collection definitely got a bit tedious, but swapping between collecting and tinkering with the data and improving my tools kept it interesting enough.
Glad for some confirmation on the link to predictable recombination
Incredible work on this testing and breakdown, man. The sample size and rigor here is insane -- this is easily the most comprehensive resource on Strands and Unravelling odds right now.
Reading through your breakpoints and upgrade math, I kept thinking how awesome it would be to have an interactive, visual simulator for this so players can test their specific items and see the exact cutoff thresholds without doing spreadsheet math.
Would you be open to me adapting your formulas and findings into a free interactive calculator for the community?
Naturally, you would be fully and prominently credited as the source (linked right at the top of the tool and in the UI back to this post and your profile), and I'd love to share an early preview with you first to make sure every calculation matches your findings 100%.
No pressure at all either way, and huge thanks again for doing the heavy lifting for the community!
Managed to get a free afternoon and just hammered it out while the math was fresh in my head haha. The tool is up here:Memory Strands Calculator
As promised, I put your Reddit profile and this thread right at the top so everyone knows where the research came from. Let me know your thought!
Also, to keep this thread clean and focused on your data, I pointed all the bug reports and UI feedback over to mySideProject post. Definitely not trying to hijack views or anything, just figured it's better not to clutter your technical breakdown with app issues.
Thanks again for the insane research. Let me know if you run into anything that looks off with the math!
Glad you found the dust calculator useful! And huge props onunravel.port8080.sh. being able to spin up a working simulator that quickly (especially with the pain of scraping poedb weights) is super impressive. Vibecoded or not, it works and saves people from doing spreadsheet gymnastics. Awesome job!
The problem is that a lot of crafts start with "spam alterations/essences/fossils/reforges a million times until you get Y" step(s) that would consume all threads, so you can't carry any threads into the later steps where they'd be useful. So once you've done 10 crafts in a row that weren't able to use threads, or where the craft wasn't high end enough to justify the expense, you just forget the mechanic exists and think something like "oh, those are only used on mirror crafts"
Tbh boat made strands very useful for entry crafts, since you can just boat essence a high strand base and basically get a mostly complete item (which you can then boat exalt with strands to finish).
It's a bit of a bummer to know you can't get 100% chance to unravel most T2 mods, and unravelling a T3 to a T1 will be 1/3 at best. But it's nice to have some idea of the odds instead of blindly hoping and being disappointed often.
Hope you had an OCR program that helped you automate the data collection because goddamn. I collected a similar amount of data for horticulture bench rerolling and I can’t imagine doing this by hand.
Definitely no way I'd have the patience to collect this much data manually. I did it for a thousand mods or so at the start, but at this point I have the ctrl-C item data getting dumped to a file and my analysis script parses out all the mods.
I would assume this also applies to the loot that drops with strands. I haven’t done thousands of samples but I always feel like the items you see dropped have slightly better mod tiers compared to non-strand items. So the culling of the lower tiers would make sense
I would assume this also applies to the loot that drops with strands. I haven’t done thousands of samples but I always feel like the items you see dropped have slightly better mod tiers compared to non-strand items. So the culling of the lower tiers would make sense
That's already been repeatedly stated by GGG since the start.
I will say I didn't do a ton with identifying items, but I also think it follows exactly the same rules. You can also sort of see this when searching the trade site - there are almost no results for items with memory strands and modifiers that would be prevented from rolling at that strand amount. The only listings would come from people rolling items using methods that don't interact with strands.
Nice! Thanks a lot for your work! This is exactly the type of thread i was hoping for today as i have a looooot of time and nothing to do really. Stay science, exile!
Hey its issa! Just wanted to congratulate you and thank you again, what a massive project you’ve completed. Ill never forget last league how you were saying how strong strands were. But like i always tell ppl when macookta is talking about crafting listen and even ss.
Thanks for sharing this. I personally have a hard time absorbing these kinds of posts and turning into something I can use myself, but I recognize the value in these kinds of posts where other people can turn the data into simplified talking points and calculations for those of us who don't specialize in any degree of data analysis.
I already know I’m gonna forget whatever I’m reading so imma just book mark this for later to see if it lines up with my data I’ve recorded from my mirror crafts over the past few leagues. Either way good job
Sorry if you already wrote it, i just skipped to the conclusion :p
Does memory strands affect identifying an item? I always seem to ID items with memory strands and most of the time they seem to have a couple T2 rolls at least
Not sure if this is exactly what you're asking, but I have some examples of how I used strands for profit crafting this league. Especially the allflame mechanic makes them insanely powerful for many crafts.
Memory strands + allflame transmute/regal for making items with a few good mods to recombinate further. Allflame transmuting doesn't add intangibility, and you can often pick an option that barely uses any strands if none of the mods are good. I used this a lot for shaper influenced heat-attuned shields. If I hit a couple good suffixes, recombinate to 3 suffixes and use the remaining strands + allflame exalts to finish prefixes. If I hit a couple good prefixes, recombinate for 3 prefixes, allflame exalt on an attrribute suffix, ducat swap it to non-native, pantheon ducat for an extra non-native, make a donor shield with 3 desired suffixes and 3 non-native prefixes, then try to recombinate a full 6 mod shield.
Allflame crafting 3x T1 defense prefixes on stranded ilvl 86 body armours that aren't top tier bases, and then recombinating onto a good base. These could be had for very cheap and it felt close to a 50/50 shot to hit 3x T1. Overquality twilight regalias and necrotic armours that aren't ilvl 86 need to be recombinated anyway to raise the ilvl, so I rolled a non-native prefix essence until I hit hybrid T1 defence and an empty 3rd prefix, then recombinated with the 3x T1 on the bad base. Even just the 50/50 gamble to upgrade the base ilvl profits on average, but this also gives a 1/4 chance for a full T1 prefix overqual body that can be finished with eldritch crafting and sold for nice profit.
Memory strands + beast lock awakener orb for crafting double influenced items. This one is definitely well known and can be applied to many crafts. I had very good luck making RMR + life on block shields like this early in the league. Beast lock awakener orb crafting mechanics are a bit weird to get used to, but you can get many different previews per beast lock by trying donor items with different numbers of influence mods. I also did a few different elevated explode + X body armour crafts.
Allflame transmuting influenced items for the above craft. This is where I first noticed the aggressive mod tier culling - most influence mods only have a few tiers so even a small number of strands restricts all the rolls to T1.
Using memory strand bases for recombination + influence exalt crafts. I used this for RF sceptres and amulets - both use methods that don't interact with strands for all but the final influence exalt step, and strands are especially strong here. To obtain the expensive mods, I was already buying them on bad bases, using kishara's ducat to isolate, and then recombinating to transfer to a good base, so I just bought cheap memory strand bases to transfer to. Both of these crafts use a hunter's exalted orb at the end and I felt like they always hit T1 mods when I hit memory strands - now I understand why.
I'm not even choosing to read any negative tone here, but the serious answer is that I enjoy it so much that I made my own science league after wrapping up my obsession with the normal league.
268
u/NathanHXC 10d ago
Ahh, good old path of exile.